Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    43

    Estrarre dati da tabella

    Ciao, ho una pagina del sito con il seguemnte codice:

    <FORM METHOD=POST NAME="cerca" ACTION="inserisci_database.php">
    <INPUT TYPE=RESET VALUE="Annulla">
    <INPUT TYPE=TEXT NAME=search VALUE="" SIZE=40>
    <INPUT TYPE=SUBMIT NAME=tutto VALUE="Cerca">

    Nome del prodotto, CAS, formula

    Per ottenere la lista completa, lascia vuoto il campo di ricerca

    </FORM>

    e il file inserisci_database.php è questo:

    <?
    $db_host= "localhost";
    $db_user= "labdid";
    $db_password = "xxx";
    $db_name = "db_labdid";
    $db_tabella="TOTALE";
    $cerca = $_POST['cerca'];

    $db = mysql_connect($db_host, $db_user, $db_password);
    if (!$db)die ("Impossibile connettersi al server $host");

    mysql_select_db($db_name, $db)
    or die ("Impossibile connettersi al database $database");

    $result=mysql_db_query("db_labdid", "SELECT * FROM TOTALE ORDER by prodotto ASC");

    echo "<table width='100%' border='1'>\n";

    echo "<tr><td>Nome del prodotto</td>";
    echo "<td>Unità</td>";
    echo "<td>CAS</td>";
    echo "<td>Formula</td>";
    echo "<td>Collocazione</td>";
    echo "<td>Pericolosità (frasi di rischio)</td>";
    echo "</tr>";

    while ($row = mysql_fetch_row($result)) {
    echo "<tr>";
    echo "<td>".$row[1]."</td>";
    echo "<td>".$row[2]."</td>";
    echo "<td>".$row[3]."</td>";
    echo "<td>".$row[4]."</td>";
    echo "<td>".$row[5]."</td>";
    echo "<td>".$row[6]."</td>";
    echo "</tr>";
    }
    echo "</table>\n";

    mysql_close;

    ?>

    Sostanzialmente ora mi funziona la seconda parte e cioè: "Per ottenere la lista completa, lascia vuoto il campo di ricerca" e non mi funziona la prima parte e cioè "Nome del prodotto, CAS, formula".

    C'è qualcuno che mi può aiutare?

    Grazie.

  2. #2
    Devi creare la query SQL includendo lo statement WHERE per filtrare i contenuti a secondo dei dati inseriti dall'utente. Fai riferimento al manuale di MySQL per capire la sintassi di WHERE ed al manuale di PHP per capire come rendere sicura la query (http://www.php.net/manual/it/security.database.php).

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    43
    Grazie, OK che devo usare WHERE, il problema è che ho l'impressione che c'è qualcosa di sbagliato nel mio codice e comunque non riesco a capire a che punto devo inserire la query e come.
    Ho le idee un po' confuse...

  4. #4
    Intanto la tua query dovrebbe essere così (con WHERE):

    Codice PHP:
    SELECT FROM TOTALE WHERE NomeCampo '" .$cerca. "' ORDER by prodotto ASC 
    In questo modo ricerchi la parola contenuta nella variabile $cerca all'interno del campo "NomeCampo".
    Se vuoi puoi anche impostare la query nel seguente modo:

    Codice PHP:
    SELECT FROM TOTALE WHERE NomeCampo LIKE '%" .$cerca. "%' ORDER by prodotto ASC 
    Con questa query fai una ricerca più ampia nel campo: se vuoi cercare la parola "lino", la query ti restituirà tutti i record che nel campo "NomeCampo" contengono la stringa "lino", cercando nell'intero contenuto del campo. Per esempio se il campo contiene: "Il mio nome è Lino Rossi", il record corrispondente ti verrà restituito, perchè nel campo c'è la stringa "lino".
    Infatti l'uso di % ti permette di fare questo.
    Spero di essermi spiegato.
    Lo scoppato
    andrea@progettipercomunicare.it
    www.progettipercomunicare.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    43
    Ti sei spiegato: il problema è che sono io che non riesco a capire, a partire dal codice che ho scritto, dove devo inserire questa riga che mi hai indicato e poi se c'è qualche riga del mio codice che non va bene. Lo so che chiedo troppo: sarebbe possibile controllare tutto il codice e vedere se è corretto?

    Grazie.

  6. #6
    La riga di codice nella quale inserire la query è la seguente:

    Codice PHP:
    $result=mysql_db_query("db_labdid""SELECT * FROM TOTALE WHERE NomeCampo LIKE '%" .$cerca"%' ORDER by prodotto ASC"); 
    Per qunto riguarda il codice mi sembra tutto in ordine, l'unica cosa è che nell'ultima riga hai scritto:

    mysql_close;

    se non sbaglio bisogna scrivere così:

    mysql_close();

    N.B.: tale comando chiude la connessione con il DB, potresti anche ometterla perchè è un'operazione che viene fatta automaticamente. Correggetemi se sbaglio
    Lo scoppato
    andrea@progettipercomunicare.it
    www.progettipercomunicare.it

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    43
    $result=mysql_db_query("db_labdid", "SELECT * FROM TOTALE WHERE Prodotto LIKE '%" .$cerca. "%' ORDER by prodotto ASC");



    Vuol dire che se nella casella "cerca" del mio form metto il nome di un prodotto, dovrebbe darmi la riga corrispondente nella tabella?

    Ho sbagliato sicuramente qualcosa, perchè così mi dà lo stesso tutta la tabella, come se lasciassi vuota la casella "cerca" del form.

    Boh!

  8. #8
    Effettivamente c'è un errore.
    Ecco la riga incriminata:

    <INPUT TYPE=TEXT NAME=search VALUE="" SIZE=40>

    questa è la riga che identifica la casella di testo, il nome della casella è search.
    Questo significa che nella pagina che riceve i dati, devi sostitutire la riga che hai scritto:

    $cerca = $_POST['cerca'];

    con la seguente:

    $cerca = $_POST['search'];

    Vorrei segnalarti anche che la riga:
    <INPUT TYPE=TEXT NAME=search VALUE="" SIZE=40>
    non è sintatticamente corretta, la sintassi giusta è:
    <INPUT TYPE="TEXT" NAME="search" VALUE="" SIZE=40>
    Lo scoppato
    andrea@progettipercomunicare.it
    www.progettipercomunicare.it

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    43
    Grazieeeeee!

    Ti chiedo solo due ultime cose:
    1.Così faccio la ricerca per prodotto, se volessi fare anche la ricerca per CAS e per formula?
    2.Come faccio per far disegnare il bordo della cella della tabella, anche se dentro non c'è nulla?

    Ciao.

  10. #10
    La query che segue ti ricerca la stringa inserita nella casella di testo nei tre campi: Prodotto, CAS e formula. Infatti l'operatore OR serve a dire: trovami la stringa in Prodotto oppure in CAS oppure in formula
    Codice PHP:
    $result=mysql_db_query("db_labdid""SELECT * FROM TOTALE WHERE Prodotto LIKE '%" .$cerca"%' OR CAS LIKE '%" .$cerca"%' OR formula '%" .$cerca"%'ORDER by prodotto ASC"); 
    Per qunto riguarda il bordo della cella, cosa intendi per "non c'è nulla"?
    Lo scoppato
    andrea@progettipercomunicare.it
    www.progettipercomunicare.it

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.