Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    insert multiplo - creazione ciclo ed array

    devo inserire le ore di frequenza ad un seminario degli studenti da form:

    <form>
    <input type="text" name="utenti_idutenti" value="<?php echo $row_iscritti_sem_all['idutenti']; ?>"
    ......lo stesso x gli altri 2 campi....
    </form>

    <?php
    //creo le 3 var:

    $utenti= $_POST['utenti_idutenti'];
    $ore = $_POST['ore'];
    $seminario=$_POST['seminari_idseminari']; //questo è sempre lo stesso, ma cmq..

    //creo il ciclo e l'array:

    foreach ($utenti as $utente){
    $ext[] = "('$utente','$ore','$seminario')";
    }
    $ext = implode(',',$ext);

    //faccio l'insert:

    $insertSQL = "INSERT INTO frequenze VALUES $ext;";
    ?>

    ma sono sbagliati gli argomenti sia del foreach che del implode...

    chi me lo spiega p.f. ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    da quel che sembra questo $utenti= $_POST['utenti_idutenti'] è "sbagliato" perchè pensi di leggere un array dal form, invece non hai un vettore... da cui gli altri problemi

  3. #3
    tks eyen,

    se pero metto

    <form>
    <input type="text" name="utenti_idutenti[]" value="<?php echo $row_iscritti_sem_all['idutenti']; ?>"


    mi restituisce

    Out of range value adjusted for column 'utenti_idutenti' at row 1

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    la "row 1" cosa contiene? inoltre ti consiglio di fare sempre un DUMP della query e di postarlo (in questo caso della variabile $insertSQL)

  5. #5

    Risolto

    Carissimo eyen, ottima idea il dump della $insertSQL

    il problema era:

    1) ordinamento campi nell'array (e quindi nell'insert)
    2) le [] nel form vanno solo su name="utenti_idutenti[]" , ore e seminario no

    tks x yr time

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    bene... tutto risolto per ora sembra. Ciao!

  7. #7
    Cavolo, ho parlato troppo presto

    con le [] nel form solo su name="utenti_idutenti[]" mi inserisce tutti i record ma sempre lo stesso numero di ore (anche sempre lo stesso seminario ma questo è ok).

    se metto le [] anche in name="ore[]" mi restituisce (echo $insertSQL):


    INSERT INTO frequenze VALUES ('Array','20','14'),('Array','14','14'),('Array',' 5','14')...Out of range value adjusted for column 'ore' at row 1

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    le parentesi ci vogliono perchè intuisco il form è una lista di coppie <utente,ore>, quindi avrai:

    Codice PHP:
    foreach ($utenti as $i => $utente){
    $orario $ore[$i];
    $ext[] = "('$utente','$orario','$seminario')";


  9. #9
    devi costruire l'array per tutte le voci che devi inserire. Poi ne scansioni una di voce e inserisci lo stesso valore della key nell'indice delle altre voci. Forse un esempio e' piu' chiaro.

    Codice PHP:

    foreach($utenti as $key => $value) {

      
    $query=  "insert into tabella (utente, ore, seminario)
                   values
                   ('
    $value', '$ore[$key]', '$seminario[$key]') ";

      
    mysql_query($query);


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

  10. #10
    grazie eiyen e piero,

    l'ho scritta cosi (e va) :

    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

    $utenti= $_POST['utenti_idutenti'];
    $ore = $_POST['ore'];
    $seminario=$_POST['seminari_idseminari'];

    foreach ($utenti as $key => $value){
    $ext[] = "('$ore[$key]','$value','$seminario')";
    }
    $ext = implode(',',$ext);

    $insertSQL = "INSERT INTO frequenze VALUES $ext;";

    mysql_select_db($database..

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.