la select non compare come dovrebbe apparire inserendo da tastiera

Ovvio che non funziona! In codice è completamente sbagliato. Devi richiamare la funzione javascript e passargli l'indice altrimenti ti esce sempre l'input. Non hai proprio le basi secondo me di come si sviluppi questa cosa e nè una logica. Appena ho tempo ti invio un esempio.
 
Codice:
<?php
    //includi file connessione DB
    $query = "SELECT count(*) FROM UTENTI";
    $result = mysqli_query($connessione, $query);
    if(!$result) echo "Errore Query";
    else{
        $row = mysqli_num_rows($result);
        if($row > 0) $indice = 1;
        else $indice = 0;
    }
?>

<!DOCTYPE html>
<html lang="it">
    <head>
        <title> prova </title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js">
        </script>
        <script>
            function funzione(indice){
                if(indice == 1){
                    $("#nazione").show();
                    $("#nazionalita").hide();
                }
                else {
                    $("#nazionalita").show();
                    $("#nazione").hide();
                }
            </script>
        </head>
        <body onLoad="funzione(<?php echo $indice ?>)">
           
            <form action="tuapagina" method="POST">
                //metti qui il tuo form con gli id
            </form>
        </body>
    </html>
 
  • Like
Reactions: paperinik4
Ciao ibernato,

Ho eseguito il tuo esempio ma non so perchè Forse ho sbagliato posizione dove doveva andare ??? ma mi sembra che era abbastanza chiaro. Di seguito ti mostro il listato completo. E un'immagine di quello che mi appare.

iscrizione2.php

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="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.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);

// Inizia nascondi/appari dell'input per la nazionalità
   
   
  $query = "SELECT count(*) FROM UTENTI";
  $result = mysqli_query($con, $query);
  if(!$result) echo "Errore Query";
  else{
  $row = mysqli_num_rows($result);
  if($row > 0) $indice = 1;
  else $indice = 0;
  }
   
   
   
  // 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>
  function funzione(indice){
  if(indice == 1){
  $("#nazione").show();
  $("#nazionalita").hide();
  }
  else {
  $("#nazionalita").show();
  $("#nazione").hide();
  }
  </script>
  </head>
  <body onLoad="funzione(<?php echo $indice ?>)">
   
  </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 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>


E questo è il risultato che mi da:

Risultato_dopo_l_inserimento_dati.png
 
Ma perchè apri sempre <DOCTYPE ECC. In una pagina deve starci un solo DOCTYPE, un solo tag HEAD e un solo tag BODY. Secondo me devi rivederti HTML perchè non sei molto pratico.
Questo è il cdice come dovrebbe essere scritto, ma non so se funziona poichè non ho il DB tuo a portata di mano.
PHP:
<?php
    require_once("connettimysqli.php"); 
    require_once("data.php");
    $query = "SELECT * FROM nome_tua_tabella_utenti";
    $result = mysqli_query($con, $query);
    if(!$result) echo "Errore Query";
    else{
        $row = mysqli_num_rows($result);
        if($row > 0) $indice = 1;
        else $indice = 0;
    }
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Modulo d'iscrizione</title>
        <link href="style.css" rel="stylesheet" type="text/css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
     
        <script>
            function funzione(indice){
                if(indice == 1){
                    $("#nazione").show();
                    $("#nazionalita").hide();
                }
                else {
                    $("#nazionalita").show();
                    $("#nazione").hide();
                }
            </script>
        </head>
        <body onLoad="funzione(<?php echo $indice ?>)">
         
            <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 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>";
        ?>
     
        <?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>';
            }
        }
     
    ?>
    </body>
</html>
 
Sapevo che si potevano aprire e chiudere più dcotype e tah head. Per lo meno così avevo capito. Forse, azni da quello che mi dici credo proprio di aver capito male. A proposito, ma è giusto che ci sia prima il php e poi di seguito hmtl, e nel caso delle select della data sia mescolato html e php ???? Perchè sapevo che prima andava html di sopra e poi php.


P.S.: Ho provato il codice ma non compare la select alla seconda registrazione.
 
Il php può essere mescolato all'html. Tu puoi fare per esempio un ciclo while in php
PHP:
<?php
  $i = 1;
while($i < = 5){
?>
<h3> Numero <?php echo $i ?> </h3> <br>
<?php
} //fine while
?>
e così ti stampa 5 i numeri da 1 a 5 uno sotto l'altro.
 

Discussioni simili