PDA

View Full Version : [PHP] 3 menų Select


LS1987
14-10-2014, 11:09
Buon giorno, adesso posto il codice che ho realizzato, vorrei capire dov'č l'errore. Premesso che forse dovrei usare Javascript, mi da errore nella query che viene assegnata a $result2. So che ho utilizzato una funzione mia per svolgere la Query, ma non ha problemi, l'ho sempre utilizzata senza avere problemi, qui posto il codice :


echo("
<form method='post' action='insertProva.php' enctype=\"multipart/form-data\" onsubmit=\"return checkform(this)\">
<div class='spazio'><input type='hidden' name='Modulo' value='1' /></div>
<div class='label'>
<label for='NomeR'>* Nome r:</label>
</div>
<div class='inputInsProp'><select name='NomeR' onchange = \"".$NomeR."\"/></div>
<div class='spazio'>&nbsp;</div>
");
$result = effettuaQuery("SELECT * FROM provar ORDER BY nomer", $mysqli);
while ($riga=mysqli_fetch_array($result)){
$NomeR=$riga['NomeR'];
echo "<option value=\"".$NomeR."\">".$NomeR."</option>";
}
echo("
</SELECT>
");
$result2 = effettuaQuery("SELECT * FROM provar WHERE nomer =".$NomeR, $mysqli);
$riga=mysqli_fetch_array($result2);
$SiglaR=$riga['SiglaR'];
echo("
<div class='label'>
<label for='NomeP'>* Nome P:</label>
</div>
<div class='inputInsProp'><select name='NomeP' onchange = \"".$NomeP."\"/></div>
<div class='spazio'>&nbsp;</div>
");
$result3 = effettuaQuery("SELECT * FROM provap WHERE SiglaR =".$SiglaR."ORDER BY NomeP", $mysqli);
while ($riga=mysqli_fetch_array($result3)){
$NomeP=$riga['NomeP'];
echo "<option value=\"".$NomeP."\">".$NomeP."</option>";
}
echo("
</SELECT>
");
$result4 = effettuaQuery("SELECT * FROM provap WHERE nomep =".$NomeP, $mysqli);
$riga2=mysqli_fetch_array($result2);
$SiglaP=$riga['SiglaP'];
echo("
<div class='label'>
<label for='NomeC'>* Nome C:</label>
</div>
<div class='inputInsProp'><select name='NomeC' onchange = \"".$NomeC."\"/></div>
<div class='spazio'>&nbsp;</div>
");
$result5 = effettuaQuery("SELECT * FROM provac WHERE SiglaP =".$SiglaP."ORDER BY NomeC", $mysqli);
while ($riga=mysqli_fetch_array($result5)){
$NomeC=$riga['NomeC'];
echo "<option value=\"".$NomeC."\">".$NomeC."</option>";
}
echo("
</SELECT>
");
$result6 = effettuaQuery("SELECT * FROM provac WHERE nomec =".$NomeC, $mysqli);
$riga3=mysqli_fetch_array($result6);
$SiglaC=$riga['SiglaC'];
echo("
</SELECT>
<div class='spazio'>&nbsp;</div>
<div class='inputInsProp'><input type='submit' value='Inserire dati' /></div>
<div class='spazio'>&nbsp;</div>
</form>
");


Le variabili sono state tutte dichiarate in precedenza. Ho anche provato a fare l'echo di $NomeR e mi ha restituito una stringa con il risultato che mi aspettavo (ovvero con valore pari a quello dell'opzione). Vorrei sapere se devo effettuare una conversione per poter utilizzare il valore della variabile che ho ottenuto a partire dall'opzione della SELECT (inteso come html input, non come Query) all'interno della Query, oppure se ho proprio sbagliato qualcosa.

MicheleRaponi
14-10-2014, 14:15
Buon giorno, adesso posto il codice che ho realizzato, vorrei capire dov'č l'errore. Premesso che forse dovrei usare Javascript, mi da errore nella query che viene assegnata a $result2.


$result2 = effettuaQuery("SELECT * FROM provar WHERE nomer =".$NomeR, $mysqli);




Prova aggiungendo gli apici su $NomeR:


$result2 = effettuaQuery("SELECT * FROM provar WHERE nomer ='".$NomeR."'", $mysqli);

LS1987
15-10-2014, 16:27
Prova aggiungendo gli apici su $NomeR:


$result2 = effettuaQuery("SELECT * FROM provar WHERE nomer ='".$NomeR."'", $mysqli);


Sė, effettivamente uno degli errori era quello, spesso perō le Query funzionano anche senza apici, ma mi sono accorto che anche in questo modo non riesco a fare in modo che le opzioni della seconda SELECT varino in base al NomeR selezionato e cosė via. Dici che devo utilizzare il Javascript? In caso di risposta affermativa, in quale modo?

LS1987
16-10-2014, 11:18
Up! Serve il Javascript per risolvere il mio problema?

LS1987
17-10-2014, 21:07
Up!

giax76
18-10-2014, 18:45
Ciao,
non so se ho inteso il tuo problema, comunque se devi caricare dinamicamente il risultato in una seconda combo-box in base all'option selezionata nella prima combo-box secondo me ti conviene fare una chiamata ajax tramite javascript.

Cioč all'onchange della combo-box (o da un evento di qualsiasi altro oggetto) devi "chiamare" una funzione php in una pagina (passando come parametro il testo che va nella condizione where), prendere il risultato generato e quindi costruire la seconda combo-box.

Qui c'č un esempio che somiglia vagamente al tuo:
http://www.w3schools.com/php/php_ajax_database.asp

Per le chiamate ajax comunque ti consiglio di dare uno sguardo alle librerie JQuery.

Spero di essere stato utile :)