• User Newbie

    Form html-php per invio dati tabella database mysql

    Sto rimbecillendo!
    Il mio problema era creare un form in html per l'invio di una serie di dati
    (nome1 e id; nome2 e id; nome3 e id: quindi il primo sempre diverso e il secondo
    sempre uguale) in una tabella del database.
    Dopo un lavoro, per me complessissimo :-), ho risolto così, creando 3 file:

    inviodati.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    </head>
    <body>
    <!--CTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//E-->
    <form action="inviovocaboli.php" method="post"
    name="inviovocaboli">Inserisci Vocabolo: <input
    name="voc" size="35" type="text">
    Inserisci id vocabolo: <input name="id" size="3"
    type="text"><br>
    <br>
    <p> </p>
    <p> <input name="inviovocaboli.php"
    value="INVIA" type="submit"></p>
    </form>
    </body>
    </html>
    </form>
    </body>
    </html>


    inviovocaboli.php

    <?
    $voc="";
    $id="";
    $voc=$_POST['voc']; // recupero il valore inserito nella 1^ input box
    $id=$_POST['id'];// recupero il valore inserito nella 2^ input box
    if (empty($voc)===false || empty($id)===false) //verifico che entrambi i campi non siano nulli
    include "connettidatabase.php"; // includo il file di connessione al Db
    $sql="INSERT INTO nuke_vocaboli (voc,id) VALUES ('$voc','$id')"; // preparo la query di inserimento record e quindi passo ad eseguirla
    $query=@mysql_query($sql) or die (mysql_error());
    echo "Inserimento effettuato con successo."; // mando in output un messaggio che mi conferma l'inserimento
    ?>


    connettidatabase.php

    .... con i dati per la connessione ... SONO OK SI CONNETTE SEMPRE REGOLARMENTE

    ==> Tutto funziona bene e il vocabolo che inserisco nel form viene regolarmente inserito nella tabella del database.


    Il mio problema però è non inserire un vocabolo alla volta ma fare in modo che se ad es. nel form per l'inserimento del vocabolo io digito:
    vocabolo1,vocabolo2,vocabolo3,vocabolo4 (quindi più vocaboli separati da una virgola)
    e nel campo per id:
    5 (un solo id comune per tutti i vocaboli)
    --> nella tabella del database mi vengono inserite in un colpo solo tutte e 4 le righe:
    vocabolo1 5
    vocabolo2 5
    vocabolo3 5
    vocabolo4 5

    Ho provato a modificare così il file:

    inviovocaboli.php

    $voc = explode(",",$voc);
    $id="5";
    $voc=$_POST[('".trim($voc)."')]; // recupero il valore inserito nella input box nome
    $id=$_POST['id'];// recupero il valore inserito nella input box cognome
    if (empty($voc)===false || empty($id)===false) //verifico che entrambi i campi non siano nulli
    include "connettidatabase.php"; // includo il file di connessione al Db
    foreach ($vocs as $voc) {
    $voc = addslashes(check_words(check_html($voc, "nohtml")));
    $db->sql_query="INSERT INTO nuke_vocaboli (voc,id) VALUES ('".trim(voc)."','$id')"; // preparo la query di inserimento record e quindi passo ad eseguirla
    }
    echo "Inserimento effettuato con successo."; // mando in output un messaggio che mi conferma l'inserimento
    ?>
    ma il risultato è che mi viene inserita una sola riga:
    vocabolo1,vocabolo2,vocabolo3,vocabolo4 5
    Ho fatto tantissime prove ma non riesco!
    Dove sbaglio? Quali modifiche devo fare x risolvere il problema?
    Grazie per chi ha avuto la pazienza di seguire l'intero post.
    Aspetto fiducioso l'aiuto di qualcuno tosto: dopo giorni di prove ho capito che da solo non ce la faccio.
    Ciao, Dino.


  • User Attivo

    Ciao dovresti fare un explode della stringa $voc.
    Se usi la virgola per separare i singoli vocaboli dovresti fare:
    $voc=explode("," , $voc);
    faccendo questo $voc diventa un array con i vari vocaboli.
    poi usi $voc[0],$voc[1],$voc[2] ecc...


  • User Attivo

    Ciao
    Ha ragione memic, devi usare explode.
    Io ti consiglierei di fare così:
    [PHP]$vocs = explode(",",$vocs);
    foreach($vocs as $voc){
    echo $voc." ";
    }[/PHP]


  • User Newbie

    Puoi postare il codice delle pagine? Necessarie.