1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

PHP, ajuda com a PAP

Discussão em 'Web Development' iniciada por maxcoliban, 7 de Julho de 2012. (Respostas: 4; Visualizações: 413)

  1. Boa noite
    queria pedir a vossa ajuda para a conclusão da minha PAP.
    Não pude ter a ajuda do meu professor e ficaram estas coisas por fazer, e eu não sei como.



    Briefing:

    A PAP(Projecto de Aptidão Professinal) é um trabalho que temos de realizar no final dos 3 anos do curso professional para mostrar as ''skills'' que aprendemos durante os 3 anos do curso.

    A minha PAP é um site de receitas, onde podemos pesquisar por receitas ou por ingredientes, ou ir a pagina das receitas e clicar simplesmente na receita e depois aparece a respectiva preparação.





    Faltam fazer três coisas:

    Na pagina ingredientes, mostrar à frente dos ingredientes o respectivo preço.

    Pesquisa organizada, por preço ou por relevancia(receitas com mais ingredientes em cima com menos em baixo)

    Eliminar os dados repetidos



    ____________________________________________________________________________________________________________


    esta aqui no phpmyadmin a table dos ingredientes
    http://imgur.com/a/lChi4#0

    tem o nome (abacate, arroz, etc) e tem o field do preço(preços dos ingredientes) eu gostava que o preço aparecesse a frente do nome do ingrediente
    http://imgur.com/a/lChi4#2

    o codigo esta aqui
    PHP:
    <?php
    $con 
    mysql_connect("localhost","root","");
    if (!
    $con)
      {
      die(
    'Could not connect: ' mysql_error());
      }

    mysql_select_db("pap"$con);

    $result mysql_query("SELECT * FROM Ingredientes");

    echo 
    "<table border='0' id=\"tableIngredientes\">
     <tr>
     <table style='margin: 20px auto;'>
     
     <th>Nome do Ingrediente</th>
     <table style='margin: 3px auto;'>
     </tr>"
    ;

    while(
    $row mysql_fetch_array($result))
      {
      
    $ing=$row['nome'];
      echo 
    "<tr>";
      
      echo 
    "<td><a href='MostraReceita.php?ingredientes=$ing'>" $row['nome'] . "</a></td>";
      echo 
    "</tr>";
      }
    echo 
    "</table>";

    mysql_close($con);
    ?>
    __________________________________________________________________________________________________________________________________________

    Neste momento quando meto alguns ingredientes na pesquisa (ex: batatas, arroz, carne) a ordem que aparece é aleatória.
    Eu queria modificar o código de maneira que desse para escolher o filtro da pesquisa, por preço (soma do preço dos ingredientes) e por relevancia (as primeiras receitas são as que teem mais ingredientes pesquisados)

    Aqui esta a pesquisa das receitas com batas, arroz e carne
    http://imgur.com/a/lChi4#3

    e aparece isto(modificado)
    http://imgur.com/a/lChi4#5

    o código é o seguinte:
    PHP:
    <?php
    $nome 
    $_POST['txtPesquisa'];




    $nomes=explode(" "$nome);


     echo 
    "<table border='0' id=\"tableIngredientes\">
     <tr>
     <table style='margin: 20px auto;'>
     
     <th>Nome do Receita</th>
     <table style='margin: 3px auto;'>
     </tr>"
    ;
     
    $xsql="select receitas.id,receitas.nome as 'nome' from Receitas, Receita_Ingrediente, ingredientes where 
                           receitas.id=receita_id and ingredientes.id = receita_ingrediente.ingrediente_id"
    ;
                           
    if(
    count($nomes)) $xsql=$xsql." and (";
    FOREACH (
    $nomes as $value){
    $xsql=$xsql."ingredientes.nome like '%$value%' or ";
    }

    $xsql=substr ($xsql ,,strlen($xsql)-4);
    $xsql=$xsql.")";




    $con mysql_connect("localhost","root","");

    if (!
    $con)
      {
      die(
    'Could not connect: ' mysql_error());
      }

    mysql_select_db("pap"$con);



    $result mysql_query("$xsql");

                           


    while(
    $row mysql_fetch_array($result))
      {
      
      
    $rec=$row['id'];
      echo 
    "<tr><td><a href=Preparacao.php?id=$rec>" $row['nome'] . "</td></tr>";
      
     
      }
      
      
    mysql_close($con);
      
    ?>

    _________________________________________________________________________________________________________________________________

    Não quero ''get to greedy'' e se me conseguirem ajudar nos 2 tópicos acima eu estarei muito agradecido.



    Obrigado
     
  2. Atsot

    Atsot Suspenso

    1-Eu se fosse ati criava uma tabela com duas colunas e basicamente na segunda coluna chamavas o registo do preço.
    2- Provavelmente irás ter que fazer ' Select nome da coluna From nome da tabela ORDER BY nome da coluna ASC ou DESC(dependendo do que quiseres)'.
     
  3. para a primeira solução parece-me ser viável, mas como e que eu meto uma coluna ao lado da outra??

    para a segunda, nao da pqe a ordenação por relevancia e preço nao se chega com consultas em mysql
     
  4. ftav

    ftav Power Member

    Situação 1: colocas outra coluna com HTML, onde apareça o preço, trocando a instrução que tens já feita:
    while($row = mysql_fetch_array($result))
    {
    $ing1=$row['nome'
    ];
    $ing2 = $row['preço'];

    echo "<tr>"
    ;

    echo "<td><a href='MostraReceita.php?ingredientes=$ing1'>" . $row['nome'] . "</a></td>"
    ;
    echo "<td><a href='MostraReceita.php?ingredientes=$ing2'>" . $row['preço'] . "</a></td>";
    echo "</tr>";
    }


    Para o 2º caso, tem de fazer uma ordenação com INNER JOIN para não repetir os resultados.

    PS: aconselho a não colocar "preço" com "ç" mas sim "preco" na base de dados, por causa das codificações UTF-8 e demais, que costumam dar problemas em alguns browsers. E aproveitar e fazer o mesmo na variável.
     
    Última edição: 8 de Julho de 2012

Partilhar esta Página