Visualizzazione risultati 1 fino 3 di 3
Like Tree1Likes
  • 1 Post By mzanella

Discussione: problema prima la select compariva e adesso non xompare più

  1. #1
    Guest

    Predefinito problema prima la select compariva e adesso non xompare più

    Salve a tutti,

    Ho riscritto un form di registrazione quello precedente era troppo incasinato. Questo a mio avviso è un po' più ordinato. Però ho un problema. La select che dovrebbe apparire non appare più. Questo è il listato completo. Qualcuno mi saprebbe spiegare il motivo o dove sbaglio ???? A parte la memorizzazione della data che non avviene ma mi sono dimenticato di metterla.

    Codice PHP:
    <!DOCTYPE html>

    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    <link href="style.css" rel="stylesheet" type="text/css">

    <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
    <script>
    $(function(){
    $("#s").change(function(){
    var val = $(this).val();//prelevo il valore dell'option selezionato
    //cambio al cambio della select
    //quindi la selezione di un option
    //il valore nell'input con l'id i
    $("#nazionalita").val(val);
    });
    });
    </script>

    </head>
    <body>

    <div class ="intestazione">
    <h1>BENVENUTI NEL MODULO D'ISCRIZIONE</h1>
    <hr>
    </div>


    <form method="POST" autocomplete="off" action="<?php $_SERVER['PHP_SELF'] ?>">

    <!--Inizio posizionamento per le varie etichette da compilare per il form -->

    <div class = "divhr">

    <div class = "ety">Cognome: <input type="text" id = "cognome" name="cognome" required /> </div>

    <p> <p><div class = "ety">Nome: <input type="text" id = "nome" name="nome" required /> </p> </p> </div>

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


    <!-- 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>
    <div id = "posnazionalita">
    <p>
    <!-- Se la nazionalita è presente nella select oppure no si può aggiungere a mano -->

    Inserire la nazionalità: <input type="text" name="nazionalita" id="input_nazionalita" required/>

    <!-- Query per la verifica se è presente nel db una nuova nazionalitào meno -->

    <?php

    #Richiama la connessione al db e la data
    require_once("connettimysqli.php");

    #Gestisce il tasto "Invio Dati"

    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']);

    $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'];
    }
    ?>
    <!-- Controlla se il campo nazionalita è vuoto o meno e fa apparire la select-->

    <?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; ?>


    </div>


    <?php

    require_once("data.php");
    echo
    "</hr>";


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

    if(
    $result){
    echo(
    "<p> Inserimento avvenuto correttamente <p>");
    } else{
    echo(
    "<br>Inserimento non eseguito");
    }
    }
    ?>
    <!-- Mette al centro del form il tasto "Invio dati"-->
    <!-- Si rende inservibile al momento il tasto "iNvio dati"-->
    <div class = "invio"> <div align = "center">
    <input type="submit" name="reg" value="Invio dati" id="submit" />
    </div> <!-- Chiude il div della classe invio
    <!-- </div> Chiude il div del center-->

    </div> <!-- Chiude il div della classe divhr-->

    </form>

    </body>
    </html>
    Grazie a tutti.

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

    Predefinito

    Che è successo al bel codice prodotto in una delle altre discussioni?

    Nello specifico, l'inserimento di una nuova nazionalità è mescolato alla lettura dalla base di dati per creare la select.
    In pratica tu hai qualcosa del genere:
    Codice:
    <form>
    alcuni input HTML (giorno, mese...)
    
    connettiti al database
    IF c'è qualcosa in $_POST:
        1. valida gli input in $_POST
    
        2. ignora gli input appena validati e mettiti a fare tutt'altro: leggi dalla base di dati le nazionalità già presenti
        3. copia le nazionalità già presenti in $nazionalite
        4. stampale in una select (se $nazionalite non è vuoto)
        5. mostra la data (data.php)
    
        6. ritorna quello che stavi facendo al punto 1 e completa l'inserimento
        FINE (senza chiudere l'IF)
    Mescolando le cose in questo modo, la stampa della select è finita per sbaglio all'interno dell'if, quindi viene mostrata solo se c'è qualcosa in $_POST.
    I punti 1. e 6. gestiscono l'inserimento di una nuova nazionalità, dovrebbero stare vicini tra loro e -preferibilmente- in un punto della pagina distinto da quello in cui generi l'HTML (ad esempio all'inizio dello script).
    fabiodefe likes this.

  3. #3
    Guest

    Predefinito

    Capito l'errore e lo immaginavo. Bene domani penserò a correggerlo. Grazie dei chiarimenti.

Regole di scrittura

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