Visualizzazione risultati 1 fino 7 di 7

Discussione: Salvataggio in DB di array di date.

  1. #1
    Guest

    Predefinito Salvataggio in DB di array di date.

    Buongiorno a tutti.
    Ho un form di registrazione con campi input e due bottoni (uno per aggiungere campi al form e l'altro per salvare i dati nel db.
    Ho un problema nel salvataggio in quanto mi salva tutti i dati ad eccezione della data di nascita e dello stato occupazionale (le altre select le salva tranquillamente).
    Di seguito il codice

    Codice HTML:
    <form method="post" id="ciao" action="gestione.php">
    <div id="readroot" style="display: none">
     
          <div class="col-xs-12 col-sm-6 col-md-6 col-lg-3">
                                        <label for="form-nome">Nome</label>
                                        <input type="text" name="Nome[]" class="form-control field" id="form-nome" />                                    
                                    </div>
                                    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-3">
                                        <label for="form-cognome">Cognome</label>
                                        <input type="text" name="Cognome[]" class="form-control field" id="form-cognome" />                                    
                                    </div>                                        
                                    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-3">
    			      <label for="form-luogonascita">Luogo di nascita</label>
                                        <input type="text" name="LuogoNascita[]" class="form-control field" id="form-luogonascita" />                                                
                                    </div>
    			  <div class="col-xs-12 col-sm-6 col-md-6 col-lg-3">
    			      <label for="form-datanascita">Data di nascita</label>
                                        <input type="text" name="DataNascita[]" placeholder="GG/MM/AAAA" class="form-control field" id="form-datanascita" />                                                
                                    </div>
                                
                                <div class="row">
                                     <div class="col-xs-12 col-sm-6 col-md-6 col-lg-1">
    			      <label for="form-sesso">Sesso</label>
                                        <select name="Sesso[]" class="form-control field" id="form-sesso">
    				<option value="" selected="selected" disabled="disabled">...</option>
                                            <option value="M">M</option>
                                            <option value="F">F</option>
                                        </select>                                 
                                    </div>
                                    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
                                      <label for="form-cfiscale">Codice fiscale</label>
    			    <input type="text" name="CodiceFiscale[]" class="form-control field" id="form-cfiscale" />                                          
                                    </div>   
    			  <div class="col-xs-12 col-sm-6 col-md-6 col-lg-3">
                                        <label for="form-cittadinanza">Cittadinanza</label>
                                        <input type="text" name="Cittadinanza[]" class="form-control field" id="form-cittadinanza" />                                        
                                    </div>				
                                    <div class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
    			      <label for="form-ruolo">Ruolo Componente</label>
                                        <select name="IDRuoloFamiglia[]" class="form-control field" id="form-ruolo">
    				<option value="" selected="selected" >Seleziona ruolo componente...</option>
                                            <option value="1">Padre</option>
                                            <option value="2">Madre</option>
                                            <option value="3">Figlio/a</option>
                                            <option value="4">Nonno/a</option>
    										<option value="5">Zio/a</option>
    										<option value="6">Fratello</option>
    										<option value="7">Sorella</option>
    										<option value="8">Tutore/Curatore</option>
                                        </select>       
                                                                                                      
                                    </div>
    			  <div class="col-xs-12 col-sm-6 col-md-6 col-lg-4">
                                           <label for="form-soccupazionale">Stato occupazionale</label>
                                        <select name="IDStatoOccupazionale[]" class="form-control field" id="form-soccupazionale">
    				<option value="" selected="selected" disabled="disabled">Seleziona stato occupazionale...</option>
                                            <option value="1">Occupato/a</option>
                                            <option value="2">Disoccupato/a</option>
                                            <option value="3">Inoccupato/a</option>
                                            <option value="4">Pensionato/a</option>
    										<option value="5">Studente/essa</option>
    										<option value="6">Invalido/a</option>
                                        </select>                                                                          
                                    </div>
    		        
    			  <div class="col-xs-12 col-sm-3 col-md-3 col-lg-4">
                                        <label for="form-telefono">Telefono</label>
                                        <input type="text" name="Telefono[]" placeholder="+39" class="form-control field" id="form-telefono" />  
    			  </div> 
    			  <div class="col-xs-12 col-sm-5 col-md-4 col-lg-4">
                                        <label for="form-email">E-mail</label>
                                        <input type="text" name="Email[]" placeholder="es. paolo.rossi@gmail.com" class="form-control" id="form-email" />                                      
    			  </div>
    		        </div>
    		        <div class="row"><h3 class="form-title"><span>Informazioni HF</span></h3>
    			   <div class="col-xs-12 col-sm-3 col-md-3 col-lg-3">
                                        <label for="form-regione">Regione</label>
    			      <input type="text" name="Regione[]" class="form-control field" id="form-regione" />         
                                     </div> 
    			   <div class="col-xs-12 col-sm-5 col-md-4 col-lg-4">
                                        <label for="form-comune">Comune</label>
                                        <input type="text" name="Comune[]" placeholder="Priolo (Siracusa)" class="form-control field" id="form-comune" />                                        
                                     </div>
    			   <div class="col-xs-12 col-sm-5 col-md-4 col-lg-1">
                                        <label for="form-cap">Cap</label>
                                        <input type="text" name="Cap[]" class="form-control field" id="form-cap" />                                        
                                     </div>
    			   <div class="col-xs-12 col-sm-5 col-md-4 col-lg-4">
                                        <label for="form-abitazione">Indirizzo Abitazione </label>
                                        <input type="text" name="Indirizzo[]" placeholder="es. Via delle vie, 3" class="form-control field" id="form-abitazione" />                                        
                                     </div>
                                    <div class="col-xs-12">
                                        <label for="form-email">Note aggiuntive</label>
                                        <textarea class="form-control low-hight" cols="4" rows="4" name="Note[]"></textarea>
                                    </div>
                                </div>  
                            </div>
    		       <div class="row components"></div>
    	<span id="writeroot"></span>
     
    	<input type="button" id="btnMore" onclick="moreFields();" value="Give me more fields!" />
    	<input type="submit"  value="Send form" />
    	
     
    </form>
    la funzione moreFields è
    Codice HTML:
      <script type="text/javascript">
        var counter = 0;
     
    function moreFields() 
    {
    	counter++;
    	var newFields = document.getElementById('readroot').cloneNode(true);
    	newFields.id = '';
    	newFields.style.display = 'block';
    	var newField = newFields.childNodes;
    	for (var i=0;i<newField.length;i++) 
    	{
    		var theName = newField[i].name;
    		if (theName)
    			newField[i].name = theName + counter;
    	}
    	var insertHere = document.getElementById('writeroot');
    	insertHere.parentNode.insertBefore(newFields,insertHere);
    }
     
    window.onload = moreFields;
        </script>
    Quindi faccio una chiamata Ajax (credo e spero sia giusta) per inviare tutti i dati alla scrittura nel db

    Codice HTML:
    $(document).ready(function() {
    
    	$("#ciao").submit(function(){
        var querystring = $('#ciao').serialize();
    		
    		$.ajax({
      			url: '/result.php',
      			type: "POST",
      			data: querystring,
      			success: function(data) {
        		$("div#result2").html(data);
      			}
    				
    			});
    			
    		return false;
    	}); 
    
    });

  2. #2
    Guest

    Predefinito

    Lo script per il salvataggio in db è questo

    Codice PHP:
    <?php
    $con
    =mysqli_connect("127.0.0.1","root","","proof");

    if(
    mysqli_connect_errno())
    {
    echo
    "CONNESSIONE A MYSQL FALLITA: ".mysqli_connect_error();
    }

    foreach (array(
    'IDSoggetto','IDFamiglia','Nome', 'Cognome', 'DataNascita', 'CodiceFiscale','Sesso','IDStatoOccupazionale','Cittadinanza','Telefono','Email','Note','IDRuoloFamiglia', 'LuogoNascita','Indirizzo','Cap','Comune','Regione') as $pos) {
    foreach ((array)
    $_POST[$pos] as $id => $row) {
    $_POST[$pos][$id] = mysqli_real_escape_string($con, $row);
    }
    }

    //$data_da_form = ($_POST['DataNascita']);
    list($giorno,$mese,$anno) = explode("/", $_POST['DataNascita']);
    $data_in_db = $anno."/".$mese."/".$giorno;

    $ids = $_POST['Nome'];
    $cognome = $_POST ['Cognome'];
    $Cod = $_POST ['CodiceFiscale'];
    $sesso = $_POST ['Sesso'];
    $soccupazionale = $_POST ['IDStatoOccupazionale'];
    $cittadinanza = $_POST ['Cittadinanza'];
    $telefono = $_POST ['Telefono'];
    $email = $_POST ['Email'];
    $note = $_POST ['Note'];
    $ruolofam = $_POST ['IDRuoloFamiglia'];
    $luogonascita = $_POST ['LuogoNascita'];
    $abitazione = $_POST ['Indirizzo'];
    $comune = $_POST ['Comune'];
    $cap = $_POST ['Cap'];
    $regione = $_POST ['Regione'];


    $sql_0="INSERT INTO famiglie (IDFamiglia, Nome) VALUES ('', '$cognome')";
    $query_0=mysqli_query($con,$sql_0) or die (mysqli_error($con));

    $query="SELECT IDFamiglia FROM famiglie WHERE Nome=('$cognome')";
    $dati=mysqli_query($con,$query);
    $id=mysqli_fetch_row($dati);
    $query_1=mysqli_query($con,$query) or die (mysqli_error($con));

    $items = array();

    $size = count($ids);

    for(
    $i = 0 ; $i < $size ; $i++){
    // Check for part id
    /*if (empty($email[$i]) || empty($note[$i]) ) {
    continue;
    }*/
    $items[] = array(
    "IDRuoloFamiglia" => $ruolofam[$i],
    "Nome" => $ids[$i],
    "Cognome" => $cognome[$i],
    "CodiceFiscale" => $Cod[$i],
    "DataNascita" => $data_in_db[$i],
    "LuogoNascita" => $luogonascita[$i],
    "Sesso" => $sesso[$i],
    "IDStatoOccupazionale" => $soccupazionale[$i],
    "Cittadinanza" => $cittadinanza[$i],
    "Telefono" => $telefono[$i],
    "Email" => $email[$i],
    "Note" => $note[$i],
    "Indirizzo" => $abitazione[$i],
    "Cap" => $cap[$i],
    "Comune" => $comune[$i],
    "Regione" => $regione[$i]
    );
    }

    if (!empty(
    $items)) {
    $values = array();
    foreach(
    $items as $item){
    $values[] = "('{$item['']}','{$item['$id[0]']}','{$item['Nome']}', '{$item['Cognome']}', '{$item['DataNascita']}', '{$item['LuogoNascita']}','{$item['CodiceFiscale']}', '{$item['Cittadinanza']}', '{$item['IDStatoOccupazionale']}', '{$item['Telefono']}', '{$item['Email']}', '{$item['IDRuoloFamiglia']}', '{$item['Sesso']}', '{$item['Note']}', '{$item['Indirizzo']}','{$item['Cap']}','{$item['Comune']}', '{$item['Regione']}' )";
    }

    $values = implode(", ", $values);

    $sql = "INSERT INTO soggettini (IDSoggetto,IDFamiglia,Nome,Cognome,DataNascita,LuogoNascita,CodiceFiscale,Cittadinanza,IDStatoOccupazionale,Telefono,Email,IDRuoloFamiglia,Sesso,Note,Indirizzo,Cap,Comune,Regione) VALUES {$values} ;
    "
    ;
    $result = mysqli_query($con, $sql );
    if (
    $result) {
    echo
    'Successful inserts: ' . mysqli_affected_rows($con);
    } else {
    echo
    'query failed: ' . mysqli_error($con);
    }
    }


    //echo " Inserimento avvenuto con successo ";
    //echo $Cod;
    mysqli_close($con);

    exit;

    ?>

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,746

    Predefinito

    Prova a fare l'echo di $sql e vedi cosa non va nella query.

    Ciao!

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Prova a fare l'echo di $sql e vedi cosa non va nella query.

    Ciao!
    Ho inserito due persone e i risultati della query sono questi:

    Codice PHP:
    (IDSoggetto,IDFamiglia,Nome,Cognome,DataNascita,LuogoNascita,CodiceFiscale,Cittadinanza,IDStatoOccupazionale,Telefono,Email,IDRuoloFamiglia,Sesso,Note,Indirizzo,Cap,Comune,Regione) VALUES ('','','', '', '/', '','', '', '1', '', '', '', 'M', '', '','','', '' ), ('','','Mario', 'Rossi', '/', 'Milano','RSSMRA83B04F205I', 'Italiana', '2', '565165561', 'ciao@ciao.it', '1', 'F', '', 'via tal dei tali 1223','12345','Milano', 'Lombardia' ), ('','','Maria', 'Bedda', '', 'Milano','BDDMRA87E67F205H', 'Italiana', '', '111111111111', 'sajd@adasij.it', '2', '', '', 'via tal dei tali 1223','12345','Milano', 'Lombardia' ) ;
    In pratica alla prima persona scrive un ' e al secondo ''.
    Ultima modifica di jumpy83 : 28-04-2016 alle ore 13.28.01

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,746

    Predefinito

    A me sembrano vuote. Comunque continua a debuggare vedendo dove è il problema: guarda (sempre con le echo se vuoi) cosa vale $soccupazionale , etc etc... Con gli strumenti dei browser per sviluppatori puoi anche monitorare i dati effettivamente inviati via ajax. Da lì puoi vedere se i dati vengono almeno inviati...

    Ciao!

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    A me sembrano vuote. Comunque continua a debuggare vedendo dove è il problema: guarda (sempre con le echo se vuoi) cosa vale $soccupazionale , etc etc... Con gli strumenti dei browser per sviluppatori puoi anche monitorare i dati effettivamente inviati via ajax. Da lì puoi vedere se i dati vengono almeno inviati...

    Ciao!
    Grazie per la risposta alemoppo.
    Facendo i vari echo ho notato che la data mi restituisce sempre e solo "//" , come se non prendesse giorno, mese e anno.
    Lo stato occupazionale, come le altre select, mi restituisce "Array" con la differenza che non viene salvato in db.
    O meglio il comportamento strano è che mi scrive N+1 righe e mischiando le cose!
    E non riesco a capire il perché!

    Codice:
    CREATE TABLE `soggettini` (
      `IDSoggetto` int(255) NOT NULL,
      `IDFamiglia` int(11) DEFAULT NULL,
      `Nome` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `Cognome` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `DataNascita` date NOT NULL,
      `LuogoNascita` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `CodiceFiscale` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `Cittadinanza` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
      `IDStatoOccupazionale` int(20) NOT NULL,
      `Telefono` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
      `Email` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL,
      `IDRuoloFamiglia` int(20) DEFAULT NULL,
      `Sesso` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
      `Note` text COLLATE utf8_unicode_ci,
      `Indirizzo` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `Cap` int(5) NOT NULL,
      `Comune` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `Regione` varchar(255) COLLATE utf8_unicode_ci NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    
    --
    -- Dump dei dati per la tabella `soggettini`
    --
    
    INSERT INTO `soggettini` (`IDSoggetto`, `IDFamiglia`, `Nome`, `Cognome`, `DataNascita`, `LuogoNascita`, `CodiceFiscale`, `Cittadinanza`, `IDStatoOccupazionale`, `Telefono`, `Email`, `IDRuoloFamiglia`, `Sesso`, `Note`, `Indirizzo`, `Cap`, `Comune`, `Regione`) VALUES
    (167, 0, '', '', '0000-00-00', '', '', '', 1, '', '', 0, 'M', '', '', 0, '', ''),
    (168, 0, 'Mario', 'Rossi', '0000-00-00', 'Milano', 'RSSMRA83B04F205I', 'Italiana', 3, '565165561', 'ciao@ciao.it', 1, 'F', '', 'Via delle vie 1234', 12345, 'Milano', 'Lombardia'),
    (169, 0, 'Maria', 'Bedda', '0000-00-00', 'Milano', 'BDDMRA89E62I754X', 'Italiana', 0, '1111111111111', 'mariabedda@email.it', 2, '', '', 'Via delle vie 1234', 12345, 'Milano', 'Lombardia');
    Ultima modifica di jumpy83 : 29-04-2016 alle ore 11.34.33

  7. #7
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Non ho guardato l'intero codice php ma quando usi le parentesi quadre in un campo input viene trasformato in un arrray. es. [] sarà [0] discorso diverso su select multiple.
    Codice PHP:
    $_POST['DataNascita'][0]
    e gli altri.
    Ultima modifica di darbula : 30-04-2016 alle ore 12.33.22

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •