menu a discesa con estrazione dati da database mysql | Tips & Tricks

Topic: Pubblico - Composto da 10 Posts di 2 Utenti.

13 Aprile, 2011 09:54 #1
paolomi
Utente

paolomi
Registrato: Apr, 2011
Posts: 6
Offline
Ciao a tutti , sono un nuovo iscritto e da poco mi sono affacciato al mondo della programmazione in php mysql, chiedo il vs gentiele aiuto perche vorrei poter realizzare un menu a tendina dal quale poter estrarre dei dati memorizzati in un datatbase mysql, pero' non mi riesce di fare l'estrazione in base alla selezione in base alle scelte che il menu propone , ma mi vengono estratti soltanto sempre e soltanto dei dati "fissi" che prende probabilmente dalla query che lancio, ma non e' questo quello che voglio, vorrei che estraesse i dati in base alla selezione del menu a tendina, rimetto di seguito i due listati dei dei files che ho realizzato , nella speranza che me mi possiate aiutare in modo pratico , magari riscrivendoli o correggendoli
ringrazio sin d'ora tutti coloro che vorranno darmi il loro aiuto.
primo listato la pagima form.php
 1<form name="form1" method="post" action="estrazione.php">
 2  <table width="100%"  border="0" cellspacing="0" cellpadding="0">
 3    <tr>
 4      <td>SELEZIONA</td>
 5      <td>&nbsp;</td>
 6      <td>&nbsp;</td>
 7      <td>&nbsp;</td>
 8    </tr>
 9    <tr>
10     
11      <td>Tipologia</td>
12      <td>Finitura</td>
13      <td>&nbsp;</td>
14    </tr>
15    <tr>
16    
17      <td>
18          <select name="tipologia">
19                <option>---scegli---</option>
20                <option value="8.8">8.8</option>
21                <option value="10.9">10.9</option>
22                <option value="12.9">12.9</option>
23        </select>
24        </td>
25      <td>
26         <select name="finitura">
27                <option>---scegli---</option>
28                <option value="zincato">zincato</option>
29                <option value="grezzo">grezzo</option>
30                <option value="nichelato">nichelato</option>
31        </select>
32          </td>
33      <td>&nbsp;</td>
34    </tr>
35    <tr>
36     
37      <td><center><input type="submit" name="Submit" value="Invia"></center></td>
38    </tr>
39  </table>
40</form>

secondo listato la pagina estrazione.php
 1<?php
 2$con = mysql_connect("localhost","root","");
 3if (!$con)
 4  {
 5  die('Could not connect: ' . mysql_error());
 6  }
 7
 8mysql_select_db("paolo", $con);
 9
10 
11
12
13
14
15
16$result = mysql_query("SELECT * FROM ana_articoli where (tipologia like'%8.8.%') and (finitura like'%zi%') order by descrizione ASC");
17
18
19
20 
21echo "<center><table border='1'>
22<tr>
23<th>Codice Articolo</th>
24<th>Descrizione</th>
25<th>Tipologia</th>
26<th>Finitura</th>
27<th>Giacenza</th>
28</tr>";
29  
30
31while($row = mysql_fetch_array($result))
32  {
33 echo "<tr>";
34 echo "<td bgcolor=\"#c0e1ff\">" . $row['codart'] . "</td>";
35 echo "<td bgcolor=\"#a1e2ff\">" . $row['descrizione'] . "</td>";
36 echo "<td bgcolor=\"#a2b6ff\">" . $row['tipologia']    . "</td>";
37 echo "<td bgcolor=\"#a2b3ff\">" . $row['finitura']    . "</td>";
38 echo "<td bgcolor=\"#ffff00\">" . $row['qta'] . "</td>";
39 echo "</tr>";
40  }
41echo "</table></center>";
42
43mysql_close($con);
44?>
13 Aprile, 2011 13:38 #2
re-verse
Moderatore

re-verse
Registrato: Jul, 2008
Posts: 312
Offline

Ciao ebenvenuto :)
dovrebbe essere sufficiente per te cambiare la query sql con i valori che passi tramite il form della pagina precedente.

Così come illustrato, la query è sempre la stessa, per cui è ovvio che la query ti restituisca sempre lo stesso risultato.

Prova in questo modo:

1$result = mysql_query("SELECT * FROM ana_articoli where (tipologia='".$_POST['tipologia']."') and (finitura='".$_POST['finitura']."') order by descrizione ASC");

Ultima modifica 13 Aprile, 2011 13:38 di re-verse


Salvatore DC

La mente è come un paracadute: funziona solo se si apre. A.Einstein.

13 Aprile, 2011 19:02 #3
paolomi
Utente

paolomi
Registrato: Apr, 2011
Posts: 6
Offline
ciao re-verse, allora ... cambiando la query con quella suggerita da te mi viene dato il seguente errore :
1Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\amenu\estrazione.php on line 31
14 Aprile, 2011 07:11 #4
re-verse
Moderatore

re-verse
Registrato: Jul, 2008
Posts: 312
Offline

Okey, facciamo un pò di debug artigianale allora:
prima di fare "$result = mysql_query(..." fai una echo della query?

Che cosa manca?


Salvatore DC

La mente è come un paracadute: funziona solo se si apre. A.Einstein.

14 Aprile, 2011 12:08 #5
paolomi
Utente

paolomi
Registrato: Apr, 2011
Posts: 6
Offline

Perdonami ma io e' da poco che ho iniziato a studiare questo linguaggio
gentilmente potresti scrivermi quello che manca , io gli echo li ho messi piu' giu' vedi il listato della pagina estrazione.php pero' si pianta alla linea 31 , spero di leggerti presto grazie
PS ( non so come si fa l'echo della query , io avevo provato a mettere
il comando echo sostituendo l'attuale variabile $result e togliendo pure il simbolo = ma quando l'ho mandato in esecuzione mi ha dato errore di sintassi .

14 Aprile, 2011 13:50 #6
re-verse
Moderatore

re-verse
Registrato: Jul, 2008
Posts: 312
Offline

Ok, no problem... andiamo per gradi:

La "query" è il comando sql, "select..." e tutta quella roba lì.

Le "echo" sono sostanzialmente l'output dello script PHP sulla pagina web.

Le echo che ci sono già fanno parte dell'output ordinario che evidentemente hai trovato già bello e fatto, è migliorabile usa costrutti vecchi, ma per adesso quello va bene così.

Ora si tratta di agiungerne una, prima che venga eseguita la query in modo tale da far stampare sulla pagina la query che viene eseguita così da poter controllare che errori contiene e cosa c'è da correggere.

Riguardando il codice noto che c'è la possibilità che il form, se non viene settato nessun filtro passa valori vuoti, per cui questo potrebbe creare problemi alla query per come te l'ho impostata... bisognerebbe fare dei filtri o quanto meno controllare i dati prima di mandarli al mysql...

facciamo così... ti scrivo la query corretta e vediamo se così va meglio:

1$result = mysql_query("SELECT * FROM ana_articoli where (tipologia like '%".$_POST['tipologia']."%') and (finitura like '%".$_POST['finitura']."%') order by descrizione ASC");


Salvatore DC

La mente è come un paracadute: funziona solo se si apre. A.Einstein.

14 Aprile, 2011 19:10 #7
paolomi
Utente

paolomi
Registrato: Apr, 2011
Posts: 6
Offline

Carissimo amico ho appena provato la query che mi hai
riscritto ma purtroppo il risultato non cambia ecco l'errore :

1Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\amenu\estrazione.php on line 31
ma perche' non vuole fuzionare ?! aiutami per favore grazie

14 Aprile, 2011 19:13 #8
re-verse
Moderatore

re-verse
Registrato: Jul, 2008
Posts: 312
Offline

Il nome della tabella e dei campi è giusto? .. nel senso... la tabella esiste e ci sono quei richiesti nella query?


Salvatore DC

La mente è come un paracadute: funziona solo se si apre. A.Einstein.

15 Aprile, 2011 11:31 #9
paolomi
Utente

paolomi
Registrato: Apr, 2011
Posts: 6
Offline
Ciao Salvatore .... volevo ringraziarti per il supporto che mi ha dato , ho controllato attentamente il database ed ho riscontrato un incongruenza con il nome , ora funziona perfettamente e questo grazie al tuo prezioso aiuto , se avro' ancora bisogno ti posso disturbare ancora ? ciao e buona giornata Paolo
15 Aprile, 2011 12:40 #10
re-verse
Moderatore

re-verse
Registrato: Jul, 2008
Posts: 312
Offline

Ma certo :) ... nessun disturbo.
Buona giornata anche a te :)


Salvatore DC

La mente è come un paracadute: funziona solo se si apre. A.Einstein.

Condividi su:

Loggati o Registrati per replicare