Visualizzazione dei risultati da 1 a 10 su 10

Discussione: form e operatore LIKE

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36

    form e operatore LIKE

    Un saluto a tutti gli utenti del forum.
    Vi chiedo un aiuto per un problema che non riesco a risolvere, non riesco a passare un parametro $_POST
    da una casella di testo di un form ad uno script php che esegue una semplice query con visualizzazione dei dati anagrafici di una tabella di utenti.
    Per essere conciso allego sia il form che la parte di script che lo elabora :

    // questo è il form che riceve il nominativo o parte di esso
    <div id="box1">


    <table>

    <form method="post" action="newricerca.php">

    <tr>

    <td>nominativo</td>

    <td><input type="text" name="nominativo" value="" size="20" maxlength="20"></td>

    </tr>

    <tr>

    <td></td>

    <td class="button"><input type="submit" name="Submit" value="cerca...."></td>

    </form>

    </table>

    </div>

    // questo è lo script (newricerca.php) che lo elabora....ma la sintassi al punto dell'operatore LIKE è
    errata, nonostante decine di cambiamenti nella sintassi stessa non ha mai funzionato una volta.
    Es. ......WHERE nominativo LIKE ( ["$nominativo"]%);
    ...............
    <div id="container">

    <?php

    // connessione a mysql

    $connect = mysql_connect("localhost", "xxxxx", "xxxxx")

    or die ("Hai sbagliato qualcosa, Connessione Fallita.");

    //verifica il database scelto

    mysql_select_db ("rubrica")

    or die ("Hai sbagliato qualcosa, database inesistente.");

    $nominativo=$_POST["nominativo"];

    $query=mysql_query('SELECT idutente, nominativo, nato_a, in_data

    FROM utenti

    WHERE nominativo

    LIKE "$nominativo%"

    LIMIT 0 , 30');

    $results = mysql_query ($query)

    or die (mysql_error()) ;

    echo "<table>\n";

    echo "<tr>";

    echo "<th class=\"nero\"><h5>ID</h5></th>";

    echo "<th class=\"nero\"><h5>NOMINATIVO</h5></th>";

    echo "<th class=\"nero\"><h5>LUOGO DI NASCITA</h5></th>";

    echo "<th class=\"nero\"><h5>DATA DI NASCITA</h5></th>";

    echo "</tr>";

    while ($row = mysql_fetch_assoc($results)) {

    echo "<tr>\n";

    foreach ($row as $val1) {

    echo "<td>\n";

    echo $val1;


    }

    echo "</tr>\n";

    }

    echo "</table>\n";



    // disconnessione dal Database

    mysql_close($connect);


    ?>


    Ho semplificato tutto al massimo senza cicli condizionali e/o di controllo al solo scopo di riuscire
    nell'intento di effettuare l'operazione sopra descritta.
    Spero che qualcuno mi sappia illuminare sull'esatta sintassi da adoperare su quell'operatore nella
    query Mysql ( senza adoperare Js...naturalmente......only Mysql/php ).
    Grazie a tutti.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    $query=mysql_query("SELECT idutente, nominativo, nato_a, in_data
    FROM utenti WHERE nominativo LIKE '
    $nominativo%' LIMIT 0 , 30"); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36
    Grazie Nicola75ss, a quest'ora non sono molto brillante....ho sbagliato per la fretta a riportare
    la sezione php...ora la riposto correttamente...comunque dai debug effettuati l'errore è sul segno percentuale dell'operatore LIKE sicuramente...dova va messo e come?

    <div id="container">

    <?php

    // connessione a mysql

    $connect = mysql_connect("localhost", "xxxxx", "xxxxx")

    or die ("Hai sbagliato qualcosa, Connessione Fallita.");

    //verifica il database scelto

    mysql_select_db ("rubrica")

    or die ("Hai sbagliato qualcosa, database inesistente.");

    $nominativo=$_POST["nominativo"];

    $query=('SELECT idutente, nominativo, nato_a, in_data

    FROM utenti

    WHERE nominativo

    LIKE "$nominativo%"

    LIMIT 0 , 30');

    $results = mysql_query ($query)

    or die (mysql_error()) ;

    echo "<table>\n";

    echo "<tr>";

    echo "<th class=\"nero\"><h5>ID</h5></th>";

    echo "<th class=\"nero\"><h5>NOMINATIVO</h5></th>";

    echo "<th class=\"nero\"><h5>LUOGO DI NASCITA</h5></th>";

    echo "<th class=\"nero\"><h5>DATA DI NASCITA</h5></th>";

    echo "</tr>";

    while ($row = mysql_fetch_assoc($results)) {

    echo "<tr>\n";

    foreach ($row as $val1) {

    echo "<td>\n";

    echo $val1;



    }

    echo "</tr>\n";

    }

    echo "</table>\n";





    // disconnessione dal Database

    mysql_close($connect);



    ?>

    spero di non avere trascritto nuovamente qualche cialtroneria.......

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se il simbolo di percentuale lo metti dopo il nome della variabile ti troverà tutti i record in cui il nominativo inizia per $nominativo.
    Hai provato a mettere gli apici come ti ho scritto?
    Quando hai degli errori sii più specifico nel descriverli.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36
    Si...ho cambiato gli apici ma il parser mi restituisce il seguente errore :

    Parse error: Syntax error, unexpected T_STRING in C:\.....\.....\ricerca.php

    se rimetto gli apici come prima mi visualizza la pagina html con le istruzioni echo sulla fomattazione dei campi ma senza nessun risultato........oppure se cambio la zona ....LIKE... mi restituisce un errore di parser segnalando la sintassi errata prorio dell'op. LIKE , un collega che smanetta in ASP mi diceva che lui in questi casi interrompeva con un segno apposito la query in attesa del $nominativo, ma non credo per quanto sono niubbo che PHP o Mysql prevedano tali segni nel flusso o nelle query...........................non so proprio dove sbattere la testa.........ho spulciato sia la documentazione di Php che Mysql sui siti ufficiali, ma su questo caso proprio nulla, buio assoluto......

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da nicola75ss
    Codice PHP:
    $query=mysql_query("SELECT idutente, nominativo, nato_a, in_data
    FROM utenti WHERE nominativo LIKE '
    $nominativo%' LIMIT 0 , 30"); 
    guarda bene la query di nicola75ss, e ora la tua...

    $query=('SELECT idutente, nominativo, nato_a, in_data FROM utenti WHERE nominativo LIKE "$nominativo%" LIMIT 0 , 30');

    tu hai invertito gli apici..... i doppi vanno all' estero e i singoli all' interno
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36
    Grazie per l'intervento dottwatson e ti confermo di aver effettuato l'inversioni di apici come postato gentilmente da nicola75ss ma di aver ricevuto il seguente errore :
    Parse error : syntax error, unespected ' % ' in C:\......\.....\ricerca.php on line 23.
    c'è qualcosa nel posizionamento del valore percentuale che estende la ricerca a tutti i nominativi che iniziano per xxx% che mi sfugge ed al riguardo anche provando a scorporarlo tramite parentesi dal $nominativo mi restituisce sempre il medesimo errore.
    Mi scuso con tutti ma ha causa del collegamento instabile chiudo e riprovo più tardi nella speranza di ricevere qualche suggerimento o correzione in merito.

  8. #8
    hai un errore da php e non dalla query a mysql.

    posta la porzione dello script corrispondente. Poi stampa anche la query per vedere come viene risolta la variabile.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    36
    OK OK OK!!! Grazie nicola75ss, dottwatson e piero.mac, la query riesce a ricevere la var con l'operatore LIKE xxx%.
    Ho seguito i vostri consigli riguardando l'intero script invertendo attentamente gli apici e tutto funziona, solamente che la riga corrispondente a: $query = mysql_query("SELECT idutente, nominativo, nato_a , in_data FROM utenti LIKE '$nominativo%' LIMIT 0, 30 " ); ho dovuto variarla in : $query = ("SELECT idutente, nominativo, nato_a , in_data FROM utenti LIKE '$nominativo%' LIMIT 0, 30 " ); poiche mi dava il seguente errore : You have an error in your sql syntax; check the manual that corresponds to your mysql serverversion for the right syntax use 'near 'resource id #4' at line 1.
    Posto lo script ad uso di chiunque ne abbia bisogno visto che le richieste su var $_get e $_POST sono numerose nel forum.

    <div id="container">

    <?php

    $nominativo=$_POST["nominativo"];

    // connessione a mysql

    $connect = mysql_connect("xxxxx", "xxxxx", "")

    or die ("Hai sbagliato qualcosa, Connessione Fallita.");

    //verifica il database scelto

    mysql_select_db ("rubrica")

    or die ("impossibile collegarsi al database richiesto.") ;

    $query = ("SELECT idutente, nominativo, nato_a , in_data FROM utenti LIKE '$nominativo%' LIMIT 0, 30 " );

    $results = ($query)

    or die (mysql_error()) ;

    echo "<table>\n";

    echo "<tr>";

    echo "<th class=\"nero\"><h5>ID</h5></th>";

    echo "<th class=\"nero\"><h5>NOMINATIVO</h5></th>";

    echo "<th class=\"nero\"><h5>LUOGO DI NASCITA</h5></th>";

    echo "<th class=\"nero\"><h5>DATA DI NASCITA</h5></th>";

    echo "</tr>";

    echo "<tr>";

    echo "<th class=\"space\"></th>";

    echo "<th class=\"space\"></th>";

    echo "<th class=\"space\"></th>";

    echo "<th class=\"space\"></th>";

    echo "<th class=\"space\"></th>";

    echo "</tr>";

    while ($row = mysql_fetch_assoc($results)) {

    echo "<tr>\n";

    foreach ($row as $val1) {

    echo "<td>\n";

    echo $val1;

    }

    echo "</tr>\n";

    }

    echo "</table>\n";

    // disconnessione dal Database

    mysql_close($connect);

    ?>

    in attesa della realtà vi invio un boccale di birra virtuale in segno di ringraziamento.

  10. #10
    Sicuramente mi sono perso qualcosa.... forse mysql_query... ma contento tu ... io il doppio.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.