Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Inserimento dati db

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    154

    Inserimento dati db

    Ciao a tutti,

    ho un form come questo:
    codice:
    <form action="?do=4" method="POST" >
    
    <table width="530">
      <tr>
        <td width="30"><input name="giorno" type="hidden" value="Ven" />Ven</td>
        <td width="20"><input name="numero" type="hidden" value="1" />1</td>
        <td width="60"><input name="mese" type="hidden" value="Agosto" />Agosto</td>
        <td width="320"><textarea name="testo" cols="35" ></textarea></td>
        <td width="100"><input name="numero" type="checkbox" value="si" /> Importante!</td>
     </tr>
      <tr>
        <td width="30"><input name="giorno" type="hidden" value="Sab" />Sab</td>
        <td width="20"><input name="numero" type="hidden" value="2" />2</td>
        <td width="60"><input name="mese" type="hidden" value="Agosto" />Agosto</td>
        <td width="320"><textarea name="testo" cols="35" ></textarea></td>
        <td width="100"><input name="importante" type="checkbox" value="si" /> Importante!</td>
     </tr> 
      <tr>
        <td width="30"><input name="giorno" type="hidden" value="Dom" />Dom</td>
        <td width="20"><input name="numero" type="hidden" value="3" />3</td>
        <td width="60"><input name="mese" type="hidden" value="Agosto" />Agosto</td>
        <td width="320"><textarea name="testo" cols="35" ></textarea></td>
        <td width="100"><input name="numero" type="checkbox" value="si" /> Importante!</td>
     </tr>
    </table>
    
    
    <input name="submit" type="submit" value="Invia">
    ed il codice per l'inserimento:
    codice:
    $giorno = $_POST["giorno"];
    $numero = $_POST["numero"];
    $mese = $_POST["mese"];
    $testo = $_POST["testo"];
    $importante = $_POST["importante"];
    
    $inserimento="INSERT INTO `calendario` (id,giorno,numero,mese,anno,testo,importante) 
    VALUES ('','$giorno','$numero','$mese','$anno','$testo','$importante')";
    $risultato=mysql_query($inserimento, $link);
    
    if($risultato) echo "Inserito con successo!";
    Il problema é che mi inserisce solo i dati dell'ultimo <tr>..... e gli altri? Perché?

  2. #2
    beh il motivo è semplice ... si chiamano tutti nello stesso modo

    cambia i nomi, magari usando un array, e ti risolvi il problema alla base

    Per maggiori informazioni dai un occhio qui:
    http://it.php.net/manual/it/intro.array.php
    http://it.php.net/manual/it/language.types.array.php
    http://it.php.net/manual/it/language...tors.array.php
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    154

    Re: Inserimento dati db

    Ho cambiato il codice così, ma mi scrive Array e inserisce nel db una riga sola
    codice:
    <form action="?do=4" method="POST" >
    
    <table width="530">
    <tr>
        <td width="30"><input name="giorno[1]" type="hidden" value="Ven" />Ven</td>
        <td width="20"><input name="numero[1]" type="hidden" value="1" />1</td>
        <td width="60"><input name="mese[1]" type="hidden" value="Agosto" />Agosto</td>
        <td width="320"><textarea name="testo[1]" cols="35" ></textarea></td>
        <td width="100"><input name="importante[1]" type="checkbox" value="si" /> Importante!</td>
     </tr>
      <tr>
        <td width="30"><input name="giorno[2]" type="hidden" value="Sab" />Sab</td>
        <td width="20"><input name="numero[2]" type="hidden" value="2" />2</td>
        <td width="60"><input name="mese[2]" type="hidden" value="Agosto" />Agosto</td>
        <td width="320"><textarea name="testo[2]" cols="35" ></textarea></td>
        <td width="100"><input name="importante[2]" type="checkbox" value="si" /> Importante!</td>
     </tr>
      <tr>
        <td width="30"><input name="giorno[3]" type="hidden" value="Dom" />Dom</td>
        <td width="20"><input name="numero[3]" type="hidden" value="3" />3</td>
        <td width="60"><input name="mese[3]" type="hidden" value="Agosto" />Agosto</td>
        <td width="320"><textarea name="testo[3]" cols="35" ></textarea></td>
        <td width="100"><input name="importante[3]" type="checkbox" value="si" /> Importante!</td>
     </tr>
    </table>
    
    
    <input name="submit" type="submit" value="Invia">
    ed il codice per l'inserimento:
    codice:
    $giorno = $_POST["giorno"];
    $numero = $_POST["numero"];
    $mese = $_POST["mese"];
    $testo = $_POST["testo"];
    $importante = $_POST["importante"];
    
    $inserimento="INSERT INTO `calendario` (id,giorno,numero,mese,anno,testo,importante) 
    VALUES ('','$giorno','$numero','$mese','$anno','$testo','$importante')";
    $risultato=mysql_query($inserimento, $link);
    
    if($risultato) echo "Inserito con successo!";

  4. #4
    beh, è normale che se usi un array (ho postato i link per questo) li tratti come array e non come testo

    codice:
    foreach($_POST["giorno"] as $id => $value)
    {
        $giorno = $value;
        $numero = $_POST["numero"][$id];
        $mese = $_POST["mese"][$id];
        $testo = $_POST["testo"][$id];
        $importante = $_POST["importante"][$id];
    
        $inserimento="INSERT INTO `calendario` (id,giorno,numero,mese,anno,testo,importante) 
    VALUES ('','$giorno','$numero','$mese','$anno','$testo','$importante')";
        mysql_query($inserimento, $link) or die(mysql_error());
    }
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    154
    Funziona, però mi da quest'errore:

    Notice: Undefined offset: 1 in ...
    Notice: Undefined offset: 2 in ...
    Notice: Undefined offset: 3 in ...

    ecc. per tutte le righe inserite! Da cosa dipende?

  6. #6
    tu stai usando quel form che hai postato prima?

    Se si fai un bel

    var_dump($_POST);

    prima del foreach

    e posti qui sul forum il risultato
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    154
    Stampa questo: (calcola che io ho messo i giorni di questo mese fino a 30, nell'esempio di prima solo 3 giorni) :
    codice:
    array(6) { ["giorno"]=> array(31) { [1]=> string(3) "Ven" [2]=> string(3) "Sab" [3]=> string(3) "Dom" [4]=> string(3) "Lun" [5]=> string(3) "Mar" [6]=> string(3) "Mer" [7]=> string(3) "Gio" [8]=> string(3) "Ven" [9]=> string(3) "Sab" [10]=> string(3) "Dom" [11]=> string(3) "Lun" [12]=> string(3) "Mar" [13]=> string(3) "Mer" [14]=> string(3) "Gio" [15]=> string(3) "Ven" [16]=> string(3) "Sab" [17]=> string(3) "Dom" [18]=> string(3) "Lun" [19]=> string(3) "Mar" [20]=> string(3) "Mer" [21]=> string(3) "Gio" [22]=> string(3) "Ven" [23]=> string(3) "Sab" [24]=> string(3) "Dom" [25]=> string(3) "Lun" [26]=> string(3) "Mar" [27]=> string(3) "Mer" [28]=> string(3) "Gio" [29]=> string(3) "Ven" [30]=> string(3) "Sab" [31]=> string(3) "Dom" } ["numero"]=> array(31) { [1]=> string(1) "1" [2]=> string(1) "2" [3]=> string(1) "3" [4]=> string(1) "4" [5]=> string(1) "5" [6]=> string(1) "6" [7]=> string(1) "7" [8]=> string(1) "8" [9]=> string(1) "9" [10]=> string(2) "10" [11]=> string(2) "11" [12]=> string(2) "12" [13]=> string(2) "13" [14]=> string(2) "14" [15]=> string(2) "15" [16]=> string(2) "16" [17]=> string(2) "17" [18]=> string(2) "18" [19]=> string(2) "19" [20]=> string(2) "20" [21]=> string(2) "21" [22]=> string(2) "22" [23]=> string(2) "23" [24]=> string(2) "24" [25]=> string(2) "25" [26]=> string(2) "26" [27]=> string(2) "27" [28]=> string(2) "28" [29]=> string(2) "29" [30]=> string(2) "30" [31]=> string(2) "31" } ["mese"]=> array(31) { [1]=> string(6) "Agosto" [2]=> string(6) "Agosto" [3]=> string(6) "Agosto" [4]=> string(6) "Agosto" [5]=> string(6) "Agosto" [6]=> string(6) "Agosto" [7]=> string(6) "Agosto" [8]=> string(6) "Agosto" [9]=> string(6) "Agosto" [10]=> string(6) "Agosto" [11]=> string(6) "Agosto" [12]=> string(6) "Agosto" [13]=> string(6) "Agosto" [14]=> string(6) "Agosto" [15]=> string(6) "Agosto" [16]=> string(6) "Agosto" [17]=> string(6) "Agosto" [18]=> string(6) "Agosto" [19]=> string(6) "Agosto" [20]=> string(6) "Agosto" [21]=> string(6) "Agosto" [22]=> string(6) "Agosto" [23]=> string(6) "Agosto" [24]=> string(6) "Agosto" [25]=> string(6) "Agosto" [26]=> string(6) "Agosto" [27]=> string(6) "Agosto" [28]=> string(6) "Agosto" [29]=> string(6) "Agosto" [30]=> string(6) "Agosto" [31]=> string(6) "Agosto" } ["testo"]=> array(31) { [1]=> string(14) "Studio Biblico" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" [5]=> string(0) "" [6]=> string(0) "" [7]=> string(0) "" [8]=> string(21) "Nessun Studio Biblico" [9]=> string(0) "" [10]=> string(0) "" [11]=> string(0) "" [12]=> string(0) "" [13]=> string(0) "" [14]=> string(0) "" [15]=> string(10) "Ferragosto" [16]=> string(0) "" [17]=> string(0) "" [18]=> string(0) "" [19]=> string(0) "" [20]=> string(0) "" [21]=> string(0) "" [22]=> string(0) "" [23]=> string(0) "" [24]=> string(0) "" [25]=> string(0) "" [26]=> string(0) "" [27]=> string(0) "" [28]=> string(0) "" [29]=> string(14) "Studio Biblico" [30]=> string(0) "" [31]=> string(0) "" } ["importante"]=> array(1) { [8]=> string(2) "si" } ["submit"]=> string(5) "Invia" }

  8. #8
    k, non mi ero accorto che c'era una checkbox

    In questi casi si usa un isset ( www.php.net/isset ) per verificare se è presente o meno una chiave in un array, una variabile e cosi via

    $importante = $_POST["importante"][$id];

    diventa

    $importante = isset($_POST["importante"][$id]) === true ? $_POST["importante"][$id] : 'no';


    inoltre guarda che il form lo puoi fare costruire tramite un ciclo for sui giorni correnti che recuperi tramite la funzione date
    www.php.net/date

    se a date passi una data come secondo parametri lui farà riferimento a quella data per le sue estreazioni e quindi puoi recuperare mesi precedenti o successivi a quello corrente costruendo il timestamp unix con
    www.php.net/mktime
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    154
    Sei stato molto gentile e preciso! Grazie assai per i link e l'aiuto!


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.