• User Newbie

    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 :gtsad:
    grazie


  • Bannato User Attivo

    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
    ???


  • User Newbie

    @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


  • User Newbie

    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;