Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: insert mysql

  1. #1
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489

    insert mysql

    Il file che elabora un form mi da questi dati/valori (giusti):
    Codice PHP:
    data22/04/2011 //campo:valore
    tema:  18 
    id_1

    voto
    0,
    id_2

    voto2
    0,0
     id_3

    voto3
    0,
    id_4

    voto4
    0,
    id_5

    voto5
    0,
    id_6

    voto6
    0,
    id_7

    voto7
    0,
    id_8

    voto8
    0,
    id_9

    voto9
    0,
    id_10
    10 
    voto10
    0,
    ora vorrei inserirli in una tabella, però gli inserimenti dovrebbero essere tanti record quanti sono gli “id_*” (in questo esempio da id_1 a id_10) e i valori per ogni inserimento devono essere quelli :
    -della data;
    -del tema;
    -del l’id_num;
    -del voto_num.
    Ho provato a ragionarci ma non ci arrivo..

    mi aiutate?

  2. #2
    Stampa ad inizio pagina l'array $_POST e vedi come e' composto.

    Codice PHP:
    <?php
    echo "<pre>";
    print_r($_POST);
    exit;
    da come e' composto questo array si potra' capire come fare.

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

  3. #3
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    ecco:

    Array
    (
    [data] => 22/04/2011
    [tema] => 23
    [id_1] => 1
    [voto1] => 0,0
    [id_2] => 2
    [voto2] => 0,0
    [id_3] => 3
    [voto3] => 0,0
    [id_4] => 4
    [voto4] => 0,0
    [id_5] => 5
    [voto5] => 0,0
    [id_6] => 6
    [voto6] => 0,0
    [id_7] => 7
    [voto7] => 0,0
    [id_8] => 8
    [voto8] => 0,0
    [id_9] => 9
    [voto9] => 0,0
    [id_10] => 10
    [voto10] => 0,0
    [submit] => registra
    )

  4. #4
    ci sono vari modi, forse il piu' semplicistico, ma dovresti comporre la data yyyy-mm-dd:

    codice:
    insert into tabella
    (id, data, tema, voto)
    values
    ($_POST[id_1], '$_POST[data]', $_POST[tema]', $_POST[voto1]),
    ($_POST[id_2], '$_POST[data]', $_POST[tema]', $_POST[voto2]),
    ($_POST[id_3], '$_POST[data]', $_POST[tema]', $_POST[voto3]),
    .........
    ($_POST[id_n], '$_POST[data]', $_POST[tema]', $_POST[voton])
    si puo' anche fare diversamente. Ora pero' vado con dei clienti e se nessuno continua vediamo di completare nel pomeriggio.

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

  5. #5
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    la data non è un problema...(almeno spero )

    ho capito la query, però come deve essere il passaggio a "n".... cioè nell'esempio i campi richiamati sono dieci, ma potrebbero essere 15, 16, 20, 25 (non penso di andare oltre)...

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    Innanzitutto, posto che il tema e la data sono fissi, sarebbe più comodo se i campi id e voto fossero congrui (quindi entrambi con o senza underscore).

    Dopodichè, se sai già che gli id sono 10, puoi fare un loop e ad ogni giro fai una insert oppure (molto più pulito e veloce) prepari lo statement che verrà eseguito interamente alla fine.
    Ti scrivo al volo giusto per darti un'idea:

    primo metodo:
    Codice PHP:
    $data $_POST["data"];
    $tema $_POST"tema"}

    for (
    $i=1;$i<=10;$i++) {
    $varid "id_" $i;
    $varvoto "voto".$i;
    $id $_POST[$varid];
    $voto $_POST[$voto];
    mysql_query("insert into tabella (data, tema, id, voto) values ('$data','$tema','$id','$voto')";

    // se vuoi pulire le variabili
    unset ($varid,$varvoto,$id,$voto);

    il secondo metodo prevede l'utilizzo della funzione sizeof, ma non vorrei complicarti troppo la vita

  7. #7
    Originariamente inviato da ttcc
    la data non è un problema...(almeno spero )

    ho capito la query, però come deve essere il passaggio a "n".... cioè nell'esempio i campi richiamati sono dieci, ma potrebbero essere 15, 16, 20, 25 (non penso di andare oltre)...
    Per un numero indefinito di record potresti utilizzare il seguente sistema. Commento man mano con il codice

    Codice PHP:
    // prendi la data ed il tema
    list($giorno$mese$anno) = explode('/'$_POST['data']);
    $data "$anno-$mese-$giorno";
    $tema $_POST['tema'];

    //rimuovi i primi due indici data e tema e l'ultimo indice submit
    array_shift($_POST);
    array_shift($_POST);
    array_pop($_POST);

    // eliminiamo gli indici associativi e facciamoli diventare numerici
    $array array_values($_POST);

    // dividiamo i valori id e voto in due distinti array
    foreach($array as $key => $value) {

        if(
    $key == 0) {
        
    $id[] = $value
        } else { 
    $voto[] = $value;  }

    }
    // ora abbiamo 2 array dove a parita' di indice hai la relazione id - voto
    // facciamo la query di inserimento
    foreach($id as $key => $value)    {

       
    $query "INSERT INTO table
              (id, data, tema, voto)
              values
              (
    $value, '$data', '$tema', '$voto[$key]')";

    echo 
    $query ."
    "
    ;


    Per eseguire sostituisci echo $query con mysql_query($query)

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

  8. #8
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489

    quanta grazia!
    datemi tempo , qui c'è ne da studiare per diversi giorni.
    mi costringete a passare Pasqua a casa....

    datemi tempo....

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    128
    il primo codice è il più semplice, ma più lungo da scrivere.

    il mio è meno lungo, di comprensione abbastanza facile, ma non ottimale in termini di performance (infatti ti ho scritto che ci sarebbe un secondo metodo ma non vorrei complicarti la vita).

    Il terzo codice è il più performante, ma richiede un pò di conoscenza degli array

  10. #10
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    a proposito, al di la della correttezza del codice, come faccio a misurare la performance del codice? e dove posso leggere qualcosa in merito?
    grazie

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.