Pagina 2 di 2 PrimoPrimo 12
Visualizzazione risultati 31 fino 48 di 48

Discussione: problema di errore con mysql_num_rows

  1. #31
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Come tutte le cose, richiede tempo e pazienza.
    Bisogna anche riconoscere che imparare a programmare in questo modo è doppiamente difficile nel senso che, oltre a muovere i primi passi con un linguaggio di programmazione, stai facendo altrettanto con le basi di dati e l'SQL, per non parlare del fatto che tutto questo è in contesto web (quindi HTML, CSS ed eventualmente JavaScript). Insomma, tante cose assieme .

    Inoltre, PHP come linguaggio ha i suoi vantaggi e svantaggi.
    Non essendo staticamente tipato, ad esempio, gli errori ti vengono presentati "un po' alla volta man mano che provi ad eseguire il codice".
    In termini concreti, se fosse staticamente tipato, un buon 70% dei problemi trattati in questa discussione non si sarebbe nemmeno presentato.

    La scelta naturalmente è tua, ma a mio parere non c'è niente di impossibile.

  2. #32
    Guest

    Predefinito problemi di errore con mysql_num_rows

    Grazie dell'incoraggiamento. Mi ero un pò avvilito a dire il vero. Continuerò ovviamente.

  3. #33
    Guest

    Predefinito

    Ciao mzanella,

    Ho riscritto il codice un pochino più pulito rispetto a quello precendete. Per i miei gusti c'erano troppi apri e chiudi di tag per la data e per avere le select allineate. Invece ho aggiunto un po' di css che ha ottenuto lo stesso risultato ma senza mescolare html con php. Secondo me html deve stare al suo posto e il php pure. Forse è più semplice mettere le mani e mi sembra più ordinato. Ora provo gli esempi sopra citati al post #29 incrociamo le dita e speriamo che vada tutto bene. Solo una cosa, ma la select compare già della nazionalita come select vuota oppure viene nascosta e poi al primo inserimento compare ?????

  4. #34
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Con un codice di questo tipo, la select viene nascosta (verrà mostrata solo quando il vettore $nazionalità avrà almeno un valore).
    Codice PHP:
    <?php if (!empty($nazionalita)): ?>
    <select name="nazionalita">
    <option value="">-seleziona-</option>

    <?php foreach ($nazionalita as $entry): ?>
    <option value="<?= $entry ?>"><?= $entry ?></option>
    <?php endforeach; ?>
    </select>
    <?php endif; ?>
    Se vuoi preferisci mostrare la select vuota, basta togliere le righe con l'if ed il rispettivo endif.

  5. #35
    Guest

    Predefinito problema di errore con mysql_num_rows

    Ciao mzanella,

    Mi spiace richiedere aiuto ma purtroppo trovo difficoltà. Qui di seguito ti posto l'intero listato. C'è qualcosa di sbagliato così come l'ho impostato io:

    iscrizione.php

    Codice PHP:
    <DOCTYPE html>

    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
    body {
    background-color:#333;
    color:#FFF;
    font-family:Comic Sans MS;
    font-size:20px;

    }
    #intestazione{
    width:100%;
    height:100px;
    position:absolute;
    font-family: Comic Sans MS;
    top:0px;
    left:0px;
    text-align: center;
    }
    #posdata {
    position: fixed;
    top: -10px;
    font-family:Comic Sans MS;

    }
    #divhr {

    position:absolute;
    top: 100px;
    font-family:Comic Sans MS;
    }

    #messaggio {
    position: absolute;
    top: 480px;
    font-family:Comic Sans MS;

    }

    #posselectgiorno{

    position: absolute;
    top: 226px;
    left: 410px;
    font-family:Comic Sans MS;
    }

    #posselectmese{

    position: fixed;
    top: 216px;
    left: 525px;
    font-family:Comic Sans MS;
    }

    #posselectanno{

    position: fixed;
    top: 216px;
    left: 625px;
    font-family:Comic Sans MS;
    }

    #posnazionalita{

    position: absolute;
    top: 145px;
    left: 0px;
    font-family:Comic Sans MS;
    }
    #posinsnazionalità {

    position: absolute;
    top: 145px;
    left: 1000px;
    font-family:Comic Sans MS;
    }
    #posusername{

    position: absolute;
    top: 185px;
    left: 0px;
    font-family:Comic Sans MS;
    }

    #posemail{

    position: absolute;
    top: 235px;
    left: 0px;
    font-family:Comic Sans MS;
    }

    #posripemail{
    position: relative;
    top: 140px;
    left: 0px;
    font-family:Comic Sans MS;
    }

    #pospassword{

    position: absolute;
    top: 335px;
    left: 0px;
    font-family:Comic Sans MS;
    }

    #posripassword{

    position: absolute;
    top: 385px;
    left: 0px;
    font-family:Comic Sans MS;
    }

    #postasto {

    position: relative;
    left: 600px;
    top:285px;


    }

    </style>
    </head>
    <body>

    <div id ="intestazione">
    <H2>BENVENUTI NEL MODULO D'ISCRIZIONE</H2>
    <hr>
    </div>

    <div id ="divhr">
    <form method="POST" autocomplete ="off" action="<?php $_SERVER['PHP_SELF'] ?>">
    <p> <p> <p>
    <label for =campo-cognome"> Cognome: </label> <input type ="text" name = "cognome" required />

    </p> </p> </p>
    <p> <p><label for =campo-nome"> Nome: </label> <input type ="text" name = "nome" required/> </p></p>

    Seleziona la data di nascita (gg/mm/aaaa):

    <?php
    //Posizionamento delle tre select giorno, mese anno

    // formazione dei tre select:
    // giorno

    echo '<select name="giorno">';
    echo
    '<option value="">Scegli giorno: </option>';
    for(
    $i=1;$i<32;$i++){
    echo
    "<option value=\"" . $i . "\">" . $i . "</option>\n";
    }

    echo
    "</select> ";

    #echo "</div>";

    // mese
    #echo '<div id = "posselectmese">';

    echo '<select name="mese">';
    echo
    '<option value="">Scegli mese: </option>';
    for(
    $i=1;$i<13;$i++){
    echo
    "<option value=\"" . $i . "\">" . $i . "</option>\n";
    }
    echo
    "</select> ";
    #echo "</div>";

    // anno

    #echo '<div id = "posselectanno">';

    // anno
    echo '<select name="anno">';
    echo
    '<option value="">Scegli anno: </option>';

    for(
    $i=1920;$i<2012;$i++){
    echo
    "<option value=\"" . $i . "\">" . $i . "</option>\n";
    }
    echo
    "</select>";
    #echo "</div>";

    //controlla l'inserimento della data che sia corretta
    if (!checkdate($input['mese'], $input['giorno'], $input['anno'])) {
    $errore = "Data non valida";
    }


    ?>


    <div id = "posnazionalita">
    <!--<p> <p> Seleziona la nazionalità: </p></p>-->

    <p> <p> <label for =campo-nazionalita"> Nazionalità: </label> <input type ="text" name = "nazionalita" required/> </p></p>

    </div> <!--chiude il div posnazionalita-->

    <!--Comapre e scompare se il campo nazionalità ha almeno un record inserito-->
    <?php
    //Inserimento campo nazionalità e la select

    $checknazionalita="SELECT DISTINCT nazionalita FROM utenti ORDER BY nazionalita";
    $result = mysqli_query($con, $checknazionalita);
    if (
    $result === false) {
    echo
    "ERROR: " . mysqli_error($con);
    }

    $nazionalite = array();
    while (
    $row = mysqli_fetch_assoc($result)) {
    $nazionalite[] = $row['nazionalita'];
    }
    ?>
    <?php if (!empty($nazionalita)): ?>
    <select name="nazionalita">
    <option value="">-seleziona-</option>

    <?php foreach ($nazionalita as $entry): ?>
    <option value="<?= $entry ?>"><?= $entry ?></option>
    <?php endforeach; ?>
    </select>
    <?php endif; ?>

    <div id = "posusername">
    <p> <p> <label for =campo-username"> Username: </label> <input type ="text" name = "username" required/> </p></p>
    </div> <!--chiude il div posusername-->

    <div id = "posemail">
    <p> <p> <label for =campo-email"> Email: </label> <input type ="text" name = "email" required/> </p></p>
    </div> <!--chiude il div posemail-->

    <div id = "posripemail">
    <p> <p> <label for =campo-ripemail">Ripeti-Email: </label> <input type ="text" name = "ripemail" required/> </p></p>
    </div> <!--chiude il div posripemail-->


    <div id = "pospassword">
    <p> <p> <label for =campo-password"> Password: </label> <input type ="password" name = "password" required/> </p></p>
    </div> <!--chiude il div posemail-->


    <div id = "posripassword">
    <p> <p> <label for =campo-ripemail">Ripeti-Password: </label> <input type ="password" name = "rippassword" required/> </p></p>
    </div> <!--chiude il div posrippassword-->

    <!--Posizionamento del tasto "Invio dati al centro"-->

    <!-- <input type="submit" name="reg" value="Invio Iscrizione" />-->

    <div id ="postasto">
    <input type="submit" name="reg" value="Invio dati" id="submit" />

    </div>
    </div>

    </form
    <?php

    require_once("connettimysqli.php");
    echo
    '<div id = "posdata">';
    require_once(
    "data.php");
    echo
    "</hr>";

    #Controllo tasto "Invio dati"

    if(!empty($_POST)){

    # Inizializzazioni variabili

    $id = mysqli_real_escape_string($con, $_POST['id']);
    $cognome = mysqli_real_escape_string($con, $_POST['cognome']);
    $nome = mysqli_real_escape_string($con, $_POST['nome']);
    $giorno = mysqli_real_escape_string($con, $_POST['giorno']);
    $mese = mysqli_real_escape_string($con, $_POST['mese']);
    $anno = mysqli_real_escape_string($con, $_POST['anno']);
    $nascita = sprintf("%04d%02d%02d", $anno, $mese, $giorno);
    $nazionalita = mysqli_real_escape_string($con, $_POST['nazionalita']);
    $citta = mysqli_real_escape_string($con, $_POST['citta']);
    $prov = mysqli_real_escape_string($con, $_POST['prov']);
    $username = mysqli_real_escape_string($con, $_POST['username']);
    $email = mysqli_real_escape_string($con, $_POST['email']);
    $ripemail = mysqli_real_escape_string($con, $_POST['ripemail']);
    $password = mysqli_real_escape_string($con, $_POST['password']);
    $rippassword = mysqli_real_escape_string($con, $_POST['rippassword']);


    # Inserimento dati nella tabella utenti

    $query=("INSERT INTO utenti (cognome, nome, nascita, nazionalita, username, email, password) "
    . "VALUES('$cognome','$nome','$nascita','$nazionalita','$username','$email','$password')");
    $result=mysqli_query($con,$query);

    if(
    $result){
    echo(
    "<p> Inserimento avvenuto correttamente <p>");
    } else{
    echo(
    "Inserimento non eseguito. Errore: ".mysqli_error($con));
    }
    }


    ?>
    </body>
    </html>
    Ci potresti dare un'occhiata e correggermi dove sbaglio per favore ??? Grazie e scusami per il disturbo.

  6. #36
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ho tolto il CSS, al momento non era rilevante (ti consiglio in ogni caso di usare un foglio di stile esterno).
    Come al solito, non ho modo di testarlo quindi potrebbero mancare punti e virgola od esserci altri errori di sintassi.

    Codice PHP:
    <?php
    ////////////////////////////////////////////////////////////////////////
    // Connessione alla base di dati
    // NOTA: La connessione è disponibile nella variabile globale $con
    require_once("connettimysqli.php");


    ////////////////////////////////////////////////////////////////////////
    // Controllo su dati inviati dal form
    // Se sono stai inviati dei dati, la richiesta di inserimento di un utente
    // viene elaborata
    if (!empty($_POST)) {
    // Lettura e validazione dei parametri
    $id = mysqli_real_escape_string($con, $_POST['id']);
    $cognome = mysqli_real_escape_string($con, $_POST['cognome']);
    $nome = mysqli_real_escape_string($con, $_POST['nome']);
    $giorno = mysqli_real_escape_string($con, $_POST['giorno']);
    $mese = mysqli_real_escape_string($con, $_POST['mese']);
    $anno = mysqli_real_escape_string($con, $_POST['anno']);
    $nazionalita = mysqli_real_escape_string($con, $_POST['nazionalita']);
    $citta = mysqli_real_escape_string($con, $_POST['citta']);
    $prov = mysqli_real_escape_string($con, $_POST['prov']);
    $username = mysqli_real_escape_string($con, $_POST['username']);
    $email = mysqli_real_escape_string($con, $_POST['email']);
    $ripemail = mysqli_real_escape_string($con, $_POST['ripemail']);
    $password = mysqli_real_escape_string($con, $_POST['password']);
    $rippassword = mysqli_real_escape_string($con, $_POST['rippassword']);


    // Controlla che la data inserita sia valida e la codifica nel formato aaaammgg
    if (!checkdate($mese, $giorno, $anno)) {
    echo
    "<p><strong>Errore</strong>: Data non valida</p>";
    }
    $nascita = sprintf("%04d%02d%02d", $anno, $mese, $giorno);

    // Inserimento nella tabella utenti
    $query = "INSERT INTO utenti (cognome, nome, nascita, nazionalita, username, email, password) "
    . "VALUES('$cognome','$nome','$nascita','$nazionalita','$username','$email','$password')";
    $result = mysqli_query($con, $query);
    if (
    $result !== false) {
    echo
    "<p>Inserimento avvenuto correttamente<p>";
    } else {
    echo
    "<p>Inserimento non eseguito.<br />"
    echo "<strong>Errore</strong>: " . mysqli_error($con) . "</p>";
    }
    }
    ?>

    <DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    </head>


    <body>
    <div id="intestazione">
    <h2>BENVENUTI NEL MODULO D'ISCRIZIONE</h2>
    <hr>
    </div>

    <div id="divhr">
    <form method="POST" autocomplete="off" action="<?php $_SERVER['PHP_SELF'] ?>">
    <!-- Cognome -->
    <p>
    <label for="campo-cognome">Cognome: </label>
    <input type="text" name="cognome" required />
    </p>

    <!-- Nome -->
    <p>
    <label for="campo-nome">Nome: </label>
    <input type="text" name="nome" required />
    </p>

    <!-- Data di nascita -->
    Seleziona la data di nascita (gg/mm/aaaa):

    <!-- Giorno -->
    <select name="giorno">
    <option value="">Scegli giorno: </option>

    <?php for ($i = 0; $i < 32; $i++): ?>
    <option value="<?= $i ?>"><?= $i ?></option>;
    <?php endfor; ?>
    </select>

    <!-- Mese -->
    <select name="mese">
    <option value="">Scegli mese: </option>

    <?php for ($i = 1; $i < 13; $i++): ?>
    <option value="<?= $i ?>"><?= $i ?></option>
    <?php endfor; ?>
    </select>

    <!-- Anno -->
    <select name="anno">
    <option value="">Scegli anno: </option>

    <?php for ($i = 2012; $i >= 1920; $i--): ?>
    <option value="<?= $i ?>"><?= $i ?></option>
    <?php endfor; ?>
    </select>


    <!-- Nuova nazionalità (non presente nella lista) -->
    <div id = "posnazionalita">
    <p>
    <label for="campo-nazionalita">Nazionalità: </label>
    <input type="text" name="nazionalita" required/>
    </p>
    </div>


    <!-- Nazionalità (lista di nazionalità già inserite, non compare se vuota) -->
    <?php
    // Lettura nazionalità presenti nella base di dati
    $checknazionalita = "SELECT DISTINCT nazionalita FROM utenti ORDER BY nazionalita";
    $result = mysqli_query($con, $checknazionalita);
    if (
    $result === false) {
    echo
    "<strong>Errore</strong>: " . mysqli_error($con);
    }

    $nazionalite = array();
    while (
    $row = mysqli_fetch_assoc($result)) {
    $nazionalite[] = $row['nazionalita'];
    }
    ?>

    <?php if (!empty($nazionalita)): ?>
    <select name="nazionalita">
    <option value="">-seleziona-</option>

    <?php foreach ($nazionalita as $entry): ?>
    <option value="<?= $entry ?>"><?= $entry ?></option>
    <?php endforeach; ?>
    </select>
    <?php endif; ?>


    <!-- Nome utente -->
    <div id="posusername">
    <p>
    <label for="campo-username">Username: </label>
    <input type="text" name="username" required/>
    </p>
    </div>


    <!-- Email -->
    <div id="posemail">
    <p>
    <label for="campo-email">Email: </label>
    <input type="text" name="email" required/>
    </p>
    </div>


    <!-- Ripeti email -->
    <div id="posripemail">
    <p>
    <label for="campo-ripemail">Ripeti-Email: </label>
    <input type="text" name="ripemail" required/>
    </p>
    </div>


    <!-- Password -->
    <div id="pospassword">
    <p>
    <label for="campo-password">Password: </label>
    <input type="password" name="password" required/>
    </p>
    </div>


    <!-- Ripeti password -->
    <div id="posripassword">
    <p>
    <label for="campo-ripemail">Ripeti-Password: </label>
    <input type="password" name="rippassword" required/>
    </p>
    </div>

    <!-- Taso "Invio dati" -->
    <div id="postasto">
    <input type="submit" name="reg" value="Invio dati" id="submit" />
    </div>
    </form>
    </div>

    <?php
    echo '<div id="posdata">';
    require_once(
    "data.php");
    echo
    "</hr>";
    ?>
    </body>
    </html>
    Dunque:
    • il blocco di PHP all'inizio della pagina (racchiuso dentro if (!empty($_POST)) è quello che gestisce le richieste per la creazione di nuovi utenti; è tutto racchiuso in quel blocco, è bene che il codice stia "insieme" piuttosto che separato; poi a me (ed immagino anche ad altri) piace gestire le richieste in cima alla pagina, in modo da avere prima l'interazione con la base di dati e poi potermi occupare solo dell'HTML, ma questa è esclusivamente una questione di gusti (potresti mettere il codice in fondo alla pagina, od usarne una diversa)
    • require_once("connettimysqli.php"); ti serve per avere a disposizione la variabile $con e, siccome la usi in vari punti della pagina per interagire con la base di dati, è bene che sia in cima, tra le prime istruzioni. In questo modo ce l'hai a disposizione in tutta la pagina (a voler fare i fini questo definisce un contesto globale che, per varie ragioni, può avere controindicazioni, ma in questo caso specifico va bene)
    • La lettura delle nazionalità già presenti l'ho lasciata in mezzo al codice dove l'ho trovata. Se non ti piace lì puoi spostarla in cima alla pagina per separare PHP ed HTML.
    • Il form in HTML ora è diviso per bene in "blocchetti", uno per ogni input
    • Varie correzioni minori come tag non chiusi

    Infine, questo frammento non so cosa faccia, quindi l'ho lasciato dov'era:
    Codice PHP:
    <?php
    echo '<div id="posdata">';
    require_once(
    "data.php");
    echo
    "</hr>";
    ?>
    Il tutto resta comunque da testare.

  7. #37
    Guest

    Predefinito

    Ciao,

    Innanzi tutto grazie di avermi prestato attenzione e sottratto del tempo prezioso ai tuoi interessi. Secondo, il frammento del codice chiamato "#posdata", non fa altro che posizionare la data allineata all'interazione (almeno spero che sua alliniata). Domani proverò e ti dirò com'è andata. Notte e grazie ancora.

  8. #38
    Guest

    Predefinito

    Ciao mzanella

    sono al pc e finalmente ho provato le tue modifiche. L'unico errore che mi da è il seguente:

    Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' at line 44
    Questa è la riga 44:

    Codice PHP:
    echo '<strong>Errore</strong>: ' . mysqli_error($con) . '</p>';
    Cos'è che non gli piace secondo te ??? Torvato mancava un ";" alla riga superiore.
    Ultima modifica di fabiodefe : 03-06-2016 alle ore 11.21.49

  9. #39
    Guest

    Predefinito problema di errore con mysql_num_rows

    Allora il tutto funziona alla grande complimenti solo un errore. Sei promosso :P scherzo. Però c'è sempre il fatto della nazionalità che non mi visualizza la select benchè nel db siano presenti 5 nominativi con la stessa nazionalità ??? Come si può risolvere secondo te ???? Grazie.

  10. #40
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito



    Nel frammento di codice che stampa la select, ho scritto $nazionalita al posto di $nazionalite. Corretto diventa così:
    Codice PHP:
    <?php if (!empty($nazionalite)): ?>
    <select name="nazionalita">
    <option value="">-seleziona-</option>

    <?php foreach ($nazionalite as $entry): ?>
    <option value="<?= $entry ?>"><?= $entry ?></option>
    <?php endforeach; ?>
    </select>
    <?php endif; ?>

  11. #41
    Guest

    Predefinito

    Ok grazie. Provo e ti farò sapere. Buon pranzo

  12. #42
    Guest

    Predefinito

    Sei un genio complimenti. Adesso si che funziona come si deve. Difatti è apparsa la select perchè ci stanno 4 italiani di prova (non è la solita barzeletta, c'è un italiano, un tedesco e un francese :P). Grazie davvero ora devo creare lo style.css e caricarlo nella pagina. Secondo te è possibilie apportare una modifica. Ossia visto che c'è required in tutti i campi, quando seleziono la nazionalità il campo input rimane vuoto e mi da errore. Dicenddo che debbo compilare il campo. C'è la possibilità di visualizzare nell'input ciò che selezioni dalla select ??? So di chiedere troppo......
    Ultima modifica di fabiodefe : 03-06-2016 alle ore 13.38.37

  13. #43
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    C'è la possibilità di visualizzare nell'input ciò che selezioni dalla select ??? So di chiedere troppo
    Usando JavaScript:
    Codice HTML:
    <script type="text/JavaScript">
    function update_nazionalita() {
        var select = document.getElementById("select_nazionalita");
        var input = document.getElementById("input_nazionalita");
    
        input.value = select.value;
    }
    </script>
    
    ...
    <input type="text" name="nazionalita" id="input_nazionalita" required/>
    ...
    <select name="nazionalita" id="select_nazionalita" onchange="update_nazionalita()">
    ...
    </select>
    Nota che devi aggiungere gli attributi id nell'input e nella select, e che questi devono coincidere con quelli usati nella funzione JavaScript.

  14. #44
    Guest

    Predefinito problema di errore con mysql_num_rows

    Ciao mzanella,

    Scusa se ti rispondo solo ora ma mi sono accorto che non mierano arrovate le notifiche e non sentendoti più, mi sono detto controlliamo se c'è qualche messaggio nuovo e difatti c'era il tuo messaggio del: 03/06/2016. intanto ti ringrazio per avermi fornito la soluzione che ovviamente la provo suibito. Inoltre ti volevo chiedere cosa intendi per "gli attributi id nell'input e nella select" anche sua mezza idea c'è l'ho. Ti faccio sapere se tutto è ok, ma spero di si.

  15. #45
    Guest

    Predefinito problema di errore con mysql_num_rows

    Ciao mzanella,

    Questo è quello che ho combinato. La select si vede benchè ho eliminato la tabella utenti e rifatta da capo. Il punto è che la select compare anche se non ci sono prensenti i dati, ovviamente risulta vuota. Ma anche inserendo i dati ottengo sempre lo stesso risultato, ossia lista vuota. Non capisco pripro dove sbaglio. Puoi dare un occhiata al codice per favore ??? L'ho ripostato tutto in quanto è un po' sparpagliato.

    Codice PHP:
    <!DOCTYPE html>

    <html>
    <head>
    <meta charset="UTF-8">
    <title>Modulo d'iscrizione</title>
    <link href="style.css" rel="stylesheet" type="text/css">
    <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
    </head>
    <body>

    </body>
    <DOCTYP<?php
    ////////////////////////////////////////////////////////////////////////
    // Connessione alla base di dati
    // NOTA: La connessione è disponibile nella variabile globale $con
    require_once("connettimysqli.php");

    require_once(
    "data.php");


    ////////////////////////////////////////////////////////////////////////
    // Controllo su dati inviati dal form
    // Se sono stai inviati dei dati, la richiesta di inserimento di un utente
    // viene elaborata
    if (!empty($_POST)) {
    // Lettura e validazione dei parametri
    $id = mysqli_real_escape_string($con, $_POST['id']);
    $cognome = mysqli_real_escape_string($con, $_POST['cognome']);
    $nome = mysqli_real_escape_string($con, $_POST['nome']);
    $giorno = mysqli_real_escape_string($con, $_POST['giorno']);
    $mese = mysqli_real_escape_string($con, $_POST['mese']);
    $anno = mysqli_real_escape_string($con, $_POST['anno']);
    $nazionalita = mysqli_real_escape_string($con, $_POST['nazionalita']);
    $citta = mysqli_real_escape_string($con, $_POST['citta']);
    $prov = mysqli_real_escape_string($con, $_POST['prov']);
    $username = mysqli_real_escape_string($con, $_POST['username']);
    $email = mysqli_real_escape_string($con, $_POST['email']);
    $ripemail = mysqli_real_escape_string($con, $_POST['ripemail']);
    $password = mysqli_real_escape_string($con, $_POST['password']);
    $rippassword = mysqli_real_escape_string($con, $_POST['rippassword']);


    // Controlla che la data inserita sia valida e la codifica nel formato aaaammgg
    if (!checkdate($mese, $giorno, $anno)) {
    echo
    "<p><strong>Errore</strong>: Data non valida</p>";
    }
    $nascita = sprintf("%04d%02d%02d", $anno, $mese, $giorno);

    // Inserimento nella tabella utenti
    $query = "INSERT INTO utenti (cognome, nome, nascita, nazionalita, username, email, password) "
    . "VALUES('$cognome','$nome','$nascita','$nazionalita','$username','$email','$password')";
    $result = mysqli_query($con, $query);
    if (
    $result !== false) {
    echo
    "<p>Inserimento avvenuto correttamente<p>";
    } else {
    echo
    "<p>Inserimento non eseguito.<br />";
    echo
    '<strong>Errore</strong>: '.mysqli_error($con).'</p>';
    }
    }

    ?>

    <DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <script type="text/JavaScript">
    function update_nazionalita() {
    var select = document.getElementById("select_nazionalita");
    var input = document.getElementById("input_nazionalita");

    input.value = select.value;
    }
    </script>

    </head>
    <body>
    <div id="intestazione">
    <h2>BENVENUTI NEL MODULO D'ISCRIZIONE</h2>
    <hr>
    </div>

    <div id="divhr">
    <form method="POST" autocomplete="off" action="<?php $_SERVER['PHP_SELF'] ?>">
    <!-- Cognome -->
    <p>
    <label for="campo-cognome">Cognome: </label>
    <input type="text" name="cognome" required />
    </p>

    <!-- Nome -->
    <p>
    <label for="campo-nome">Nome: </label>
    <input type="text" name="nome" required />
    </p>

    <!-- Data di nascita -->
    Seleziona la data di nascita (gg/mm/aaaa):

    <!-- Giorno -->
    <select name="giorno">
    <option value="">Scegli giorno: </option>

    <?php for ($i = 0; $i < 32; $i++): ?>
    <option value="<?= $i ?>"><?= $i ?></option>;
    <?php endfor; ?>
    </select>

    <!-- Mese -->
    <select name="mese">
    <option value="">Scegli mese: </option>

    <?php for ($i = 1; $i < 13; $i++): ?>
    <option value="<?= $i ?>"><?= $i ?></option>
    <?php endfor; ?>
    </select>

    <!-- Anno -->
    <select name="anno">
    <option value="">Scegli anno: </option>

    <?php for ($i = 2012; $i >= 1920; $i--): ?>
    <option value="<?= $i ?>"><?= $i ?></option>
    <?php endfor; ?>
    </select>


    <!-- Nuova nazionalità (non presente nella lista) -->
    <div id = "posnazionalita">
    <p>
    Inserire la nazionalità: <input type="text" name="nazionalita" id="input_nazionalita" required/>
    <select name="nazionalita" id="select_nazionalita" onchange="update_nazionalita()">
    </p> </select> </div>


    <!-- Nazionalità (lista di nazionalità già inserite, non compare se vuota) -->
    <?php

    // Lettura nazionalità presenti nella base di dati

    $checknazionalita = "SELECT DISTINCT nazionalita FROM utenti ORDER BY nazionalita";
    $result = mysqli_query($con, $checknazionalita);
    if (
    $result === false) {
    echo
    "<strong>Errore</strong>: " . mysqli_error($con);
    }
    $nazionalite = array();
    while (
    $row = mysqli_fetch_assoc($result)) {
    $nazionalite[] = $row['nazionalita'];
    }
    ?>

    <?php if (!empty($nazionalite)): ?>
    <select hidden="true" name="nazione"
    <option value="">-seleziona-</option>

    <?php foreach ($nazionalite as $entry): ?>
    <option value="<?= $entry ?>"><?= $entry ?></option>
    <?php endforeach; ?>
    </select>
    <?php endif; ?>



    <!-- Nome utente -->
    <div id="posusername">
    <p>
    <label for="campo-username">Username: </label>
    <input type="text" name="username" required/>
    </p>
    </div>


    <!-- Email -->
    <div id="posemail">
    <p>
    <label for="campo-email">Email: </label>
    <input type="text" name="email" required/>
    </p>
    </div>


    <!-- Ripeti email -->
    <div id="posripemail">
    <p>
    <label for="campo-ripemail">Ripeti-Email: </label>
    <input type="text" name="ripemail" required/>
    </p>
    </div>


    <!-- Password -->
    <div id="pospassword">
    <p>
    <label for="campo-password">Password: </label>
    <input type="password" name="password" required/>
    </p>
    </div>


    <!-- Ripeti password -->
    <div id="posripassword">
    <p>
    <label for="campo-ripemail">Ripeti-Password: </label>
    <input type="password" name="rippassword" required/>
    </p>
    </div>

    <div align ="center">
    <input type="submit" name="reg" value="Invio dati" id="submit" />
    </div>
    </form>
    </div>

    <?php

    echo "</hr>";
    ?>
    </body>
    </html>
    Grazie.

  16. #46
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Inoltre ti volevo chiedere cosa intendi per "gli attributi id nell'input e nella select"
    Si tratta solo di nomenclatura. Gli attributi sono delle coppie chiave-valore che specificano alcune "proprietà" di un tag. Ad esempio:
    Codice HTML:
    <input name="username" placeholder="nome utente..." required="required" id="input_username" class="bordered blue" />
    il tag input ha come attributi name, placeholder, required, id, class, i cui valori sono rispettivamente username, nome utente..., required, input_username, bordered blue.
    L'attributo id è in qualche modo speciale, perché identifica univocamente un elemento all'interno della pagina. Questo è utile quando vuoi usare JavaScript per accedere/leggere/modificare dinamicamente elementi della pagina.

    Il punto è che la select compare anche se non ci sono prensenti i dati, ovviamente risulta vuota. Ma anche inserendo i dati ottengo sempre lo stesso risultato, ossia lista vuota.
    Ci sono due problemi separati. Il primo è nel "blocco" relativo all'inserimento di nuova nazionalità, nel quale hai:
    Codice HTML:
                    <!-- Nuova nazionalità (non presente nella lista) --> 
                    <div id = "posnazionalita"> 
                        <p> 
    Inserire la nazionalità: <input type="text" name="nazionalita" id="input_nazionalita" required/> 
    <select name="nazionalita" id="select_nazionalita" onchange="update_nazionalita()"> 
    </p> </select> </div> 
    Hai aggiunto una select vuota (tra l'altro, il tag </p> è nel posto sbagliato, va chiuso dopo la select, non dentro di essa).

    L'altro problema è nel "blocco" successivo, in cui non hai chiuso correttamente il tag e -soprattutto- hai usato l'attributo hidden per nasconderla:
    Codice HTML:
                     <?php if (!empty($nazionalite)): ?> 
    <select hidden="true" name="nazione" 
    <option value="">-seleziona-</option> 
    
        <?php foreach ($nazionalite as $entry): ?> 
        <option value="<?= $entry ?>"><?= $entry ?></option> 
        <?php endforeach; ?> 
    </select> 
    <?php endif; ?> 
    Come soluzione, rimuovi la select vuota dal primo "blocco", ed aggiusta quella nel secondo blocco come segue:
    Codice PHP:
    <!-- Nuova nazionalità (non presente nella lista) -->
    <div id = "posnazionalita">
    <p>
    Inserire la nazionalità: <input type="text" name="nazionalita" id="input_nazionalita" required />
    </p>
    </div>


    <!-- Nazionalità (lista di nazionalità già inserite, non compare se vuota) -->
    <?php
    // Lettura nazionalità presenti nella base di dati

    $checknazionalita = "SELECT DISTINCT nazionalita FROM utenti ORDER BY nazionalita";
    $result = mysqli_query($con, $checknazionalita);
    if (
    $result === false) {
    echo
    "<strong>Errore</strong>: " . mysqli_error($con);
    }
    $nazionalite = array();
    while (
    $row = mysqli_fetch_assoc($result)) {
    $nazionalite[] = $row['nazionalita'];
    }
    ?>

    <?php if (!empty($nazionalite)): ?>
    <select name="nazione" id="select_nazionalita">
    <option value="">-seleziona-</option>

    <?php foreach ($nazionalite as $entry): ?>
    <option value="<?= $entry ?>"><?= $entry ?></option>
    <?php endforeach; ?>
    </select>
    <?php endif; ?>

  17. #47
    Guest

    Predefinito

    Ok grazie. Domani provo e ti saprò dire. Spero di farcela. Grazie delle spiegazioni utili e mi spiace romperti...... buona serara.

  18. #48
    Guest

    Predefinito

    Ciao mzanella,

    Ti volevo ringraziare dell'aito datomi. Ho riscritto il form per intero era troppo incasinato. Ecco perchè il tuo codice non andava. Adesso ovviamente funziona alla grande. Sto iniziando a capire meglio la procedura posturale. poi quando avrò tempo e sopratutto voglia proverò quella ad oggetti. Anconra non ho capito qual'è meglio e la più semplice. Anche se mi sono fatto una mezza idea che quella posturale sia più semplice basta capire come funzione e dove si ssbaglia quando ci sono errori di tipo:

    errore con mysql_num_rows
    Con l'ultima correzione finalmente ho capito dove sbaglio e perchè lo da. T'invito a questa nuova discussione. Sotto c'è il link.

    http://forum.it.altervista.org/php-m...sullinput.html

    Qua per me si può chiudere. Grazie ancora della tua collaborazione preziosa.

    P.S.: Prima di chiudere la discussione, volevo sapere una cosa. Si può far in modo che la select sia sulla dx e dopo c'è l'input ???? Grazie.
    Ultima modifica di fabiodefe : 08-06-2016 alle ore 13.29.57

Pagina 2 di 2 PrimoPrimo 12

Regole di scrittura

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