[PHP] estrarre i risultati di una query e visualizzarli in una tabella.

username90

Nuovo Utente
27 Ott 2016
29
0
1
34
Buonasera ragazzi, ho bisogno del vostro aiuto se potete.. ho fatto un form per ricercare delle ricette in base alla tipologia, il codice è il seguente:

HTML:
<h4>Ricerca ricette</h4>
<form name="ric_tip" method="post" action="ric_tipologia.php"><br/>
   <table>
       <tr>
           <td>Per tipologia:
           <select name="tipologia" size="1">
               <option value="Antipasto">Antipasto</option>
               <option value="Primo">Primo</option>
               <option value="Secondo">Secondo</option>
               <option value="Contorno">Contorno</option>
               <option value="Dolce">Dolce</option>
               <option value="Piatto Unico">Piatto unico</option>
           </select>&nbsp;<input type="submit" value="CERCA">
           </td>
       </tr>
   </table>
</form>

ho dei problemi sul file ric_tipologia.php che è caratterizzato dal seguente codice:
PHP:
<?php
session_start();
include("config.inc.php");
$query_tip = mysql_query("SELECT id_ricetta, tipologia, nome FROM ricetta WHERE tipologia='".$_POST["tipologia"]."'")
or die ("ricerca per tipologia non riuscita ".mysql_error());
include ("header.php");
echo "<p align=right><b>Leggenda</b></p>
<table align=right>
   <tr><td align=center>tipologia</td><td align=center>nome</td></tr>
   <tr><td align=center>0</td><td align=center>Antipasto</td></tr>
   <tr><td align=center>1</td><td align=center>Primo</td></tr>
   <tr><td align=center>2</td><td align=center>Secondo</td></tr>
   <tr><td align=center>3</td><td align=center>Contorno</td></tr>
   <tr><td align=center>4</td><td align=center>Dolce</td></tr>
   <tr><td align=center>5</td><td align=center>Piatto unico</td></tr>
   </table>";
if(isset($query_tip)){ //se la selezione è andata a buon fine
   echo "<form name=\"vis_tip\" method=\"post\" action=\"carrello.php\">";
   while($row=mysql_fetch_assoc($query_tip)){
       echo "<table border=\"1\">
       <tr><td align=\"center\">id</td><td align=\"center\">Tipologia</td><td align=\"center\">Nome</td><td align=\"center\">Salva</td></tr>
       <tr><td align=\"center\">$row[id_ricetta]</td><td align=\"center\">$row[tipologia]</td><td align=\"center\">$row[nome]</td><td align=\"center\"><input type=\"checkbox\" align=\"center\" name=\"salva\" value=\"salva\"/></td></tr>
       </table><p/>";
   }
   echo "<input type=\"button\" value=\"indietro\" onclick=\"history.back(1)\">
   <input type=\"submit\" value=\"salva\">
   </form>";
   //header("location:tipologia.php");
} else{
echo "nessun elemento è stato trovato";
}
?>

Il problema è che anche se io seleziono Dolce nel form di ricerca, come risultato mi viene mostrato un piatto la cui tipologia è antipasto. idem per i primi, secondi, contorni e piatti unici.. mi mostra sempre l'antipasto.. eppure la query che ho scritto mi sembra corretta.. dove sbaglio? grazie
 
ciao
correggi il submit
<input type="submit" value="CERCA" name="CERCA">
poi dividi la query metti una var_dump
PHP:
//......
$query= "SELECT id_ricetta, tipologia, nome FROM ricetta WHERE tipologia='".$_POST["tipologia"]."'";
var_dump($query):
$query_tip = mysql_query($query);
//....
e guarda se la query viene come dovrebbe
 
Ciao, ho fatto come dici tu: se metto i due punti alla fine dell'istruzione var_dump($query) mi dà errore si aspetta il ;
a parte questo che ho messo appunto il ; mettendo il codice come hai detto tu la schermata resta la stessa l'unica differenza è che mi appare il numero della riga e poi la query come dovrebbe ovvero se seleziono Primo mi da
string(71) "SELECT id_ricetta, tipologia, nome FROM ricetta WHERE tipologia='Primo'" però sotto quando si tratta di mostrare i risultati nella tabella non me li mostra esatti... ti faccio l'esempio pratico, nel mio database nella tabella ricetta ho messo come primo spaghetti con il tonno, e come antipasto involtini di bresaola e rucola, se seleziono Primo, idem per le altre tipologie mi mostra sempre involtini di bresaola e rucola che io ho catalogato come antipasto.... non so se mi sono spiegata.
 

Allegati

  • Immagine.jpg
    Immagine.jpg
    35,9 KB · Visite: 373
ciao
il : errore di scrittura
la query sembra giusta, verifica i nomi dei campi della tabella e i valori che contengono
mi accorgo adesso:
nella tabella a sinistra vedo che per tipologia hai messo 0 non è per caso che nel campo tipologia tu abbia o 0 o 1 o... al posto di 'antipasti' o 'primo' o... ?
 
Ultima modifica:
Allora nel database che ho creato ho una tabella tipologia:

[SQL]
CREATE TABLE IF NOT EXISTS `tipologia` (
`id_tipologia` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(25) NOT NULL,
PRIMARY KEY (`id_tipologia`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
[/SQL]

che contiene i seugenti dati:
[SQL]
INSERT INTO `tipologia` (`id_tipologia`, `nome`) VALUES (1, 'antipasto'), (2, 'primo'), (3, 'secondo'), (4, 'contorno'), (5, 'dolce');
[/SQL]

e poi ho una tabella ricetta che ha i seguenti campi: id_ricetta [int(11)], tipologia [int(11)], nome [varchar(30)], calorie [int(11)], cottura [int(11)], difficolta [int(11)], porzioni [int(11)], preparazione [text], note [text];
schematicamente ti riporto i dati inseriti in quest'ultima tabella:
(1, 4, torta di mele, 365, 40, 4, 10, testo, testo)
(2, 0, involtini di bresaola e rucola, 75, 30, 1, 10, testo, testo)
ecc così ho fatto una ricetta per ogni tipologia per ora.
 
si si tranquillo, io nel frattempo cerco di capire un pò di più di php leggendo qualche guida in rete.... ;)
 
ciao
dai un occhio, ti schematizzo, leggi i commenti
PHP:
<?php
//dati di connessione
//USA le MYSQLI, le vcecchie istruzioni mysql sono obsolete
$query="SELECT * FROM tipologia";//se non la usi a che ti serve la tabella tipologia?
$rir=mysqli_query($connessione, $query);
?>
<h4>Ricerca ricette</h4>
<form name="ric_tip" method="post" action="ric_tipologia.php"><br/>
    <table>
    <tr>
    <td>Per tipologia:
        <select name="tipologia" size="1">
<?php
    //se aggiungi/modifichi/elimini una tipologia la <select> si aggiorna in automatico
    while($tipo=mysqli_fetch_assoc($ris)){
        $id_tip=$tipo['id_tipologia'];
        $nome=$tipo['nome'];
        //se nerlla tabella ricetta hai messo nel campo tipologia l'id della tipologia
        echo "<option value=\"$id_tip\">$nome</option>";
        /*
        se invece nel campo hai messo il nome della tipologia l'otion sopra diventa
        echo "<option value=\"$nome\">$nome</option>";
        */
    }
?>
         </select>&nbsp;<input type="submit" value="CERCA">
        </td>
       </tr>
   </table>
</form>
e nella pagina ric_tipologia.php
PHP:
<?php
//....connessione ecc....
//se nel campo c'è il nome
$query_tip = mysqli_query($connessione,"SELECT id_ricetta, tipologia, nome FROM ricetta WHERE tipologia='".$_POST["tipologia"]."'");
//nota: se in tipologia c'è l'id non devi mettere gli apici
//ecc......
?>
 
  • Like
Reactions: username90
Buongiorno, allora ho fatto come dici ma lì dove hai detto di mettere i dati di connessione io ho messo un include ("config.inc.php") perchè avevo creato apposta questo file per la connessione senza ripetere ogni volta tutte le istruzioni, in questo file config.inc.php ho messo due semplici istruzioni :
$connessione=mysql_connect("localhost", "user", "password") or die ("Conessione non riuscita: ".mysql_error());
mysql_select_db("nomedb", $connessione) or die ("Selezione database non avvenuta");
poi altra cosa: mi dà errore Warning: mysqli_query() expects parameter 1 to be mysqli, a questa istruzione $ris=mysqli_query($connessione, $query); che io scritto così come hai detto tu..
 
ciao
se usi le mysqli (meglio) la connessione deve essere così
PHP:
<?php
$host = 'xxxxxx';     //nome tuo host
$username = 'aaaaa';      //tuo user name
$password = 'bbbbb';  //tua password
$db = 'cccccc';            // nome tuo data base
//---connessione----------------------------------------------------
$connnessione = mysqli_connect($host,$username,$password,$db) or die (mysql_error());
?>
 
  • Like
Reactions: username90

Discussioni simili