- Home
- Categorie
- Coding e Sistemistica
- PHP
- pass. var. POST ad una query INNER JOIN
-
pass. var. POST ad una query INNER JOIN
salve a tutti.
stavo sviluppando una query di ricerca tra 2tab (chiamate,clienti).
questa è la query:$sql=mysql_query("SELECT chiamate.id_chiamata, clienti.id_cliente, clienti.id, clienti.n_cliente, chiamate.d_creazione, chiamate.d_primo_int, chiamate.d_sec_int,chiamate.d_scadenza, clienti.contatto, clienti.tel, chiamate.problema, chiamate.stato FROM clienti INNER JOIN chiamate ON clienti.id_cliente = chiamate.id_cliente WHERE clienti.n_cliente='".$_POST['n_cli']."'");
$res=mysql_db_query($db_name,$sql);
$num=mysql_num_rows($res);questo è l'errore:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in \query.php on line 25
mi aiutate per favore?sennò mi blocco
grazie
-
le query vanno testate prima su un client MySQL è poi annegate nel codice PHP, una volta che sono nel codice PHP si stampa la query a video e la si copia e incolla sul client MySQL per vedere se funziona.
Dal codice che hai postato difficilmente si riesce a capire il problema sopratutto non avendo davanti le tue 2 tabelle, dicci prima se il problema è nella query (print $sql; e lancio su client MySQL) o nel PHP.
sicuro che é
clienti.id_cliente = chiamate.id_cliente
e non
clienti.id = chiamate.id_cliente
???
-
@saro78 said:
le query vanno testate prima su un client MySQL è poi annegate nel codice PHP, una volta che sono nel codice PHP si stampa la query a video e la si copia e incolla sul client MySQL per vedere se funziona.
Dal codice che hai postato difficilmente si riesce a capire il problema sopratutto non avendo davanti le tue 2 tabelle, dicci prima se il problema è nella query (print $sql; e lancio su client MySQL) o nel PHP.
sicuro che é
clienti.id_cliente = chiamate.id_cliente
e non
clienti.id = chiamate.id_cliente
???allora,per verificare se la query faceva davvero il suo lavoro l'ho testata da phpmyadmin in questa forma:
SELECT chiamate.id_chiamata, clienti.id, clienti.n_cliente, chiamate.d_creazione, chiamate.d_primo_int, chiamate.d_scadenza, clienti.contatto, clienti.tel, chiamate.problema, chiamate.stato
FROM clienti INNER JOIN chiamate ON clienti.id_cliente = chiamate.id_cliente
WHERE (((clienti.n_cliente) In ("caripe")));se lo specifico io nella query il nome del cliente che ha mandato le chiamate (in questo caso "caripe") funziona perfettamente.Tira fuori solo le chiamate di assistenza dei clienti che hanno come n_cliente "caripe",poichè un codice cliente (clienti.id_cliente) univoco e primario è presente sia nella tabella che contiene le chiamate e sia in quella dei clienti (come chiave primaria).
Adesso mi serve di passare il nome del cliente da un form e lo passo così:<html>
<body>
Ricerca per cliente<form action="query.php" method="post">
Nome cliente<input name="n_cli"><p>
<input type="submit" value="Cerca">
<input type="reset">
</form>
</body>
</html>in query.php verifico l'effettivo valore della variabile così:
if (empty($_POST['n_cli'])) $n_cli = "";
else $n_cli = $_POST['n_cli'] ;echo $n_cli;
e visualizza il valore giusto.
il problema è in che modo modificare la WHERE:
invece di "caripe","clienti.n_cliente" deve essere uguale alla variabile che passo dal form $n_cli (metodo POST).spero di essermi spiegato meglio di prima.
grazie dell'attenzione
-
risolto
$sql = "SELECT chiamate.id_chiamata, clienti.id, clienti.n_cliente, chiamate.d_creazione, chiamate.d_primo_int, chiamate.d_scadenza, clienti.contatto, clienti.tel, chiamate.problema, chiamate.stato"
. " FROM clienti INNER JOIN chiamate ON clienti.id_cliente = chiamate.id_cliente"
. " WHERE clienti.n_cliente = '$n_cli'";era una caz... di questione di doppi apici e apici;