Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Problema nell'insert di una data presa da menu di selezione a tendina

    Salve a tutti

    ho una form composta da una data di nascita presa da un menu di selezione contenente anno, mese e giorno. Al momento dell'operazione di INSERT nel database, effettuo il binding usando la classe PDO, ma la data che mi restituisce è 0000-00-00 (il problema è nella conversione o nel binding stesso). Da notare che il campo data_nascita esiste solo nel db, nella form non esiste ma è l'insieme dei tre valori anno, mese e giorno.
    Credo che il problema sia dovuto ad una specie di asincronia tra l'invio di dati con POST e il binding... come se il binding avvenisse per ultimo quando già i valori di POST sono stati azzerati.... come potrei risolvere?
    Un sentito grazie a chi mi risponderà.

    codice:
    try { 
     
    $sql = 'INSERT INTO utenti (nome, cognome, data_nascita) VALUES (:name, :surname, :birthdate)'; 
    $stmt = $db_ref->prepare($sql); 
    $stmt -> bindParam(':name', $_POST['name']); 
    $stmt -> bindParam(':surname', $_POST['surname']); 
    $stmt -> bindParam(':birthdate', sprintf("%04d-%02d-%02d", $_POST['year'], $_POST['month'], $_POST['day'])); 
    $stmt -> execute(); 
     
    }
    Ultima modifica di the_indios; 05-05-2016 a 11:17

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    potresti provare a costruirla prima la data
    Codice PHP:
    $bday $_POST['year']."-".$_POST['month']."-".$_POST['day']; 
    e poi passare
    Codice PHP:
    $stmt->bindParam(':birthdate',$bday); 
    oppure direttamente
    Codice PHP:
    $stmt->bindParam(':birthdate',$_POST['year']."-".$_POST['month']."-".$_POST['day']); 
    Riccardo Sadocchi
    Microsoft MCP C#

  3. #3
    Quote Originariamente inviata da rikyeko Visualizza il messaggio
    potresti provare a costruirla prima la data
    Codice PHP:
    $bday $_POST['year']."-".$_POST['month']."-".$_POST['day']; 
    e poi passare
    [PHP]
    $stmt->bindParam(':birthdate',$bday);

    Ho provato in entrambi i modi ma il risultato non cambia, il formato della data è sempre 0000-00-00
    mentre dando prima dell'insert
    Codice PHP:
    print_r($_POST
    mi restituisce come output:

    Array ( [name] => prova [surname] => prova [day] => (1) [month] => (1) [year] => (1970) )
    Quando faccio click su submit mi mostra il messaggio di successo e come output di print_r($_POST) mi esce semplicemente
    Array()
    A questo punto mi sa che sbaglio qualcosa nel codice del form, forse mi sfugge qualcosa...


    codice HTML:
    <form action="index.php"  method="post" >
                        
                        <ul>
                            <li>
                                <label>Nome:</label>
                                <input type="text" name="name"  placeholder="il tuo nome" value="<?php ?>" required/>
                                <span class="asterisk">*</span>
                            </li>
                        
                            <li>
                                <label>Cognome:</label>
                                <input type="text" name="surname" placeholder="il tuo cognome" value="<?php ?>"  required />
                                <span class="asterisk">*</span>
                            </li>
                        
                            
                            <li>
                                <label>Data di nascita:</label>
                                <select name="day">
                                    <?php
                                    $count = 1;
                                    $i = 0;
                                    print ("<option value=\"($i)\">:: giorno ::</option>");
                                        
                                        while ($count <= 31) {
                                        print ("<option value=\"($count)\">$count</option>");
                                        $count ++;
                                        $i ++;
                                        }    
                                    ?>
                                </select>
                            
                        
                                <select name="month">
                                    <?php
                                    $count = 1;
                                    $i = 0;
                                    print ("<option value=\"($i)\">:: mese ::</option>");
                                        
                                        while ($count <= 12) {
                                        print ("<option value=\"($count)\">$count</option>");
                                        $count ++;
                                        $i ++;
                                        }    
                                    ?>
                                </select>
                    
                                <select name="year">
                                    <?php
                                    $count = 1940;
                                    $i = 0;
                                    print ("<option value=\"($i)\">:: anno ::</option>");
                                        
                                        while ($count <= 2004) {
                                        print ("<option value=\"($count)\">$count</option>");
                                        $count ++;
                                        $i ++;
                                        }
                                    ?>
                                </select>
                                <span class="asterisk">*</span>
                            </li>
                            
                            <input type="submit" value="Subscribe" />
    </form>
    Ultima modifica di the_indios; 05-05-2016 a 12:13

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    il campo del DB che formato ha?

  5. #5
    Quote Originariamente inviata da clasku Visualizza il messaggio
    il campo del DB che formato ha?
    il formato è date. Non credo sia quello il problema...

    Ho visto degli snippet di codice dove nelle select usano il php e memorizzano i dati scelti in output dagli utenti (con l'opzione selected e usando variabili di sessione). In quel modo il codice funge, ma non so se è una cosa necessaria per far funzionare correttamente i menu select...
    Ultima modifica di the_indios; 05-05-2016 a 12:11

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Probabilmente non vuol dire nulla, ma prova a correggere la query con le virgolette per i valori
    Codice PHP:
    $sql "INSERT INTO utenti (nome, cognome, data_nascita) VALUES (':name', ':surname', ':birthdate')"
    Riccardo Sadocchi
    Microsoft MCP C#

  7. #7
    Quote Originariamente inviata da rikyeko Visualizza il messaggio
    Probabilmente non vuol dire nulla, ma prova a correggere la query con le virgolette per i valori
    Codice PHP:
    $sql "INSERT INTO utenti (nome, cognome, data_nascita) VALUES (':name', ':surname', ':birthdate')"
    Se faccio come dici mi dà errore.

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ho notato solo ora... togli le parentesi intorno alla variabile count nel form... in tutti i campi della data
    "<option value=\"($count)\">$count</option>"

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Quote Originariamente inviata da the_indios Visualizza il messaggio
    Se faccio come dici mi dà errore.
    Si... mi sono accorto adesso di aver detto una stupidaggine... non le uso nemmeno io le parentesi in questa forma, non so perchè però in testa ero sicuro che servivano
    Riccardo Sadocchi
    Microsoft MCP C#

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.