• User Attivo

    Leggere record di un campo e visualizzarli in una combobox

    Ciao a ttt,

    sono alle prime armi del PhP. Sto esercitandomi costruendo un portale funzionalità; ora dopo aver realizzato un form di insert dati in tabella, dovrei creare un'altro form che legge questi dati insieriti (nome campo "citta") e poterlo scegliere da combobox.
    Non so se son stato molto chiaro...ma mi scuso anticipatamente.

    La difficoltà è nel code, trovo tutti codici html che mi fanno realizzare le voci della combo e non che leggono da tabella...

    Grazie a ttt


  • User Attivo

    Ciao mimmo,
    in questo momento sto dando per scontato che questi dati siano inseriti in un database MySQL. Se sto sbagliando, salta pure il resto che ti scriverò.
    Se la tua query di inserimento è stata tipo: ```
    INSERT INTO tabella ("campo1","campo2") VALUES ("val1","val2")

    Allora per leggerla dovrai avere un codice del tipo:
    [PHP]
    echo "<select name='nome'>";
    $result = mysql_query("SELECT * FROM tabella")
    while($row = mysql_fetch_array($result))
    {
    echo "<option value='".$row['val1']."'>".$row['val2']."</option>";
    }
    echo "</select>";[/PHP]

  • User Attivo

    Grazie della risposta, ma una cosa non la capisco...

    Se vado a fissare VAL11 - VALL12, ogni volta che la tabella mi si aggiorna con nuovi campi, devo sempre modificare il codice, magari aggiungendo VAL 13 - VAL14...??
    Non ce un modo per automatizzare l'aggiornamento dei campi? O forse mi sta sfuggendo qualcosa...?!

    Cmq la insert la faccio cosi:
    $toinsert = "INSERT INTO clienti (ragionesociale, indirizzo, citta, cap, partitaiva, codicefiscale )
    VALUES
    ('$ragionesociale','$indirizzo','$citta','$cap','$partitaiva','$codicefiscale')";

    Grazie ancora...


  • User Attivo

    Ciao Mimmo,
    Intanto ti consiglio di modificare la query in:
    [PHP]$toinsert = "INSERT INTO clienti (ragionesociale, indirizzo, citta, cap, partitaiva, codicefiscale)
    VALUES
    ('".$ragionesociale."','".$indirizzo."','".$citta."','".$cap."','".$partitaiva."','".$codicefiscale."')";[/PHP]

    Come hai fatto tu non dovrebbe dare errore, ma quando inserisci una variabile in una stringa (ossia in un testo), è più corretto "staccare" le due cose concatenando la stringa con l'apposito simbolo (in PHP è il punto, in javascript è il "+" ecc ecc...)

    Ora, se nella tua tabella ci sono tante persone e ognuna di queste è di una città diversa, e vuoi visualizzare tutte le città di tutte le persone, puoi usare:
    [PHP]echo "<select name='nome'>";
    $result = mysql_query("SELECT * FROM clienti")
    while($row = mysql_fetch_array($result))
    {
    echo "<option value='".$row['citta']."'>".$row['citta']."</option>";
    }
    echo "</select>"; [/PHP]

    Invece mi pare di aver inteso che vuoi far visualizzare tutte le città inserite, ma con quello che ti ho scritto sopra se ci sono due persone da Torino, ti mette "Torino" due volte. Se vuoi far comparire ogni città una volta sola puoi usare:

    [PHP]echo "<select name='nome'>";
    $result = mysql_query("SELECT DISTINCT citta FROM clienti ORDER BY citta ASC")
    while($row = mysql_fetch_array($result))
    {
    echo "<option value='".$row['citta']."'>".$row['citta']."</option>";
    }
    echo "</select>"; [/PHP]

    In questo modo dovrebbe eliminare i doppioni e mettertele in ordine alfabetico

    Ciao!


  • User Attivo

    ti ringrazio per le correzzioni (ho capito e corretto quanto suggerito per quel che riguarda l'inser delle variabili in un testo.
    Ho provato a sostituire le variabili che mi occorrono ricavare utilizzando la seconda parte del tuo code , inserendo cosi : > $dbhost = "localhost"; $dbuser = "root";
    $dbpwd = "";
    $dbname = "portale";
    $connessione=mysql_connect($dbhost,$dbuser,$dbpwd)or die (mysql_error());
    $dbsel = mysql_select_db($dbname, $connessione)or die (mysql_error());

    echo "<select name='ragionesociale'>";
    $result = mysql_query("SELECT DISTINCT ragionesociale FROM clienti ORDER BY ragionesociale ASC")
    while($row = mysql_fetch_array($result))
    {
    echo "<option value='".$row['ragionesociale']."'>".$row['ragionesociale']."</option>";
    }
    echo "</select>";
    }

    ma mi resituisce errore sulla while($row = mysql_fetch_array($result)). Come mai? una domanda per confermare quanto penso; dove capisco che sto programmando per visualizzare delle combo? Da Option...?

    Grazie ancora!!!


  • User Attivo

    Ciao, scrivo da telefono quindi non posso copiaincollarti codice, ma oggi pomeriggio (se mi ricordo! XD) ti darò una risposta più completa.
    Usualmente un errore nella funzione mysql_fetch_array è simbolo di errore nella query. Non c'è caso in cui l'errore sia negli echo.
    Il <select> è il contenitore degli <option>, che rappresentano le varie possibili scelte.

    L'attributo name del select è il nome del valore che verrà passato dal form. L'attributo value degli option è il valore effettivo che poi verrà passato, sotto quel nome.

    In ogni caso, non capisco perchè ti dia errore... Ti dà un fatal error o un warning?


  • User Attivo

    Allora...mentre "imprecavo" ho visto che ce una graffa chiusa in piu. Tolta, ma l 'errore resta.

    **Parse error: syntax error, unexpected T_WHILE in **C:\Program Files (x86)\EasyPHP-5.3.8.0\www\combo.php on line **12



  • User Attivo

    risolto!!! Mancava un ; maledetto alla fine della select!!!

    MALEDETTO!!!

    GRAZIE INFINITE MEIS!!!


  • User Attivo

    Ah, ho visto. Errore mio, scusa! Buona programmazione!


  • User Attivo

    come faccio a modificare il titolo in [RISOLTO]?


  • User Attivo

    Non credo si possa fare qui, la gente che avrà il tuo stesso problema arriverà e vedrà che è risolto 🙂