Boucle et select

theananas -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, je suis debutante en php et j'aimerais avoir votre aide sur mon programme
Voilà je voudrais faire une boucle php dans mon code html pour un formulaire d'inscription mais peut importe ce que j'essaie, cela ne fonctionne pas

<select name="jour">
            <option value="1">01
          <option value="2">02
          ...
          <option value="31">31 </option>
          </select>
          /
          <select name="mois">
            <option value="1">1
            <option value="2">2
            <option value="3">3
            ...
            <option value="12">12</option>
          </select>
          /
          <select name="annee">
          	<option value="1994">1994
            <option value="1995">1995
            ...
            <option value="2007">2007</option>
          </select>


voici un exemple qui ne marche pas ci dessous, il n'affiche que $i

<?php
	  <select name="mois">
	  for ($i = 1; $i < 13; $i++)
	  {
		echo '<option value=\'' . $i . '\'>' . $i . '</option>'
	  }
	  </select>
	  ?>

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    <select name="mois">
     <?php
      for ($i = 1; $i <= 12; $i++)  {
        echo "<option value='$i' > $i </option>";
      }
     ?>
     </select>
    


    0
    1. theananas
       
      Bonjour malheuresement cela ne fonctionne toujours pas

      vous pouvez tester par vous même cela ne fonctionne pas...
      <?php session_start();
      
      $AfficherFormulaire=1;
      
      	if(isset($_POST['pseudo'],$_POST['mdp'])){
      		if (empty($_POST['nom'])){
      			echo "Veuillez écrire votre nom.";
      		} elseif(empty($_POST['prenom'])){
      			echo "Veuillez écrire votre prénom.";
      		} elseif(empty($_POST['pseudo'])){
      			echo "Veuillez écrire votre mot de passe.";
      		} elseif(strlen($_POST['pseudo'])>15)) {
      			echo "Le pseudo est trop long, il dépasse 15 caractères.";
      		} elseif(empty($_POST['mdp'])){
      			echo "Veuillez écrire votre mot de passe.";
      		} elseif(empty($_POST['mdp_confirm'])){
      			echo "Veuillez confirmer votre mot de passe.";
      		} elseif($_POST['mdp'] != $_POST['mdp_confirm'])
      			echo 'Les deux mots de passe doivent être identiques.';
      		}elseif(empty($_POST['email'])){
      			echo "Veuillez écrire votre adresse mail.";
      		} elseif(mysqli_num_rows(mysqli_query($mysqli,"SELECT * FROM membres WHERE pseudo='".$_POST['pseudo']."'"))==1){
      			echo "Ce pseudo est déjà utilisé.";
      		} else {
      			//enregistrement dans la base de données:
      			if(!mysqli_query($mysqli,"INSERT INTO membres SET pseudo='".$_POST['pseudo']."', mdp='".md5($_POST['mdp'])."'")){//on crypte le mot de passe md5
      				echo "Une erreur s'est produite: ".mysqli_error($mysqli);
      			} else {
      				echo "Vous êtes inscrit !";
      				//on affiche plus le formulaire
      				$AfficherFormulaire=0;
      			}
      		}
      	}	
      
      if($AfficherFormulaire==1){
          ?>
          <br />
      	<table  border="1"  align="center">
          <form method="post" action="phpinscription.php">
      		<tr>
      			<td>
      				Nom : <input type="text" name="nom">
      				<br />
      			</td>
      			<td>
      				Prénom : <input type="text" name="prenom">
      				<br />
      			</td>
      			<td>
      				Pseudo : <input type="text" name="pseudo">
      				<br />
      			</td>
      			<td>
      				Mot de passe : <input type="password" name="mdp">
      				<br />
      			</td>
      			<td>
      				Confirmation : <input type="password" name="mdp_confirm">
      				<br />
      			</td>
      			<td>
      				Email : <input type="text" name="email">
      				<br />
      			</td>
      			<td>
      				Date de naissance :
      				<select name="mois">
      					 <?php
      					  for ($i = 1; $i <= 12; $i++)  {
      						echo "<option value='$i' > $i </option>";
      					  }
      					 ?>
      				</select>
      
      				<br />
      			</td>
      		</tr>
      		<tr align="center">
      			<input type="submit" value="S'inscrire">
      		</tr>
      	</table>
          </form>
      
      
      0
  2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Il semble qu'il y ait quelques erreurs dans ton code.

    je t'invite à lire et à appliquer le contenu de ce lien pour tes prochains code.
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    A noter que le MD5 n'est plus la bonne méthode pour hasher tes mots de passes.
    Tourne toi vers la fonction password_hash et pour "vérifier le password", la fonction password_verify
    https://www.php.net/manual/fr/function.password-hash.php

    Tu sembles également avoir oublié de mettre le code de connexion à ta bdd...

    Tu n'as pas non plus utilisé la "bonne" syntaxe pour ton insert. (alors oui, en mysql elle peut fonctionner.. mais c'est fortement déconseillé et elle ne fonctionne pas pour les autres SGBD )

    Je vois également que tu avais n'avais pas placé tes balises form correctement par rapport à tes balises table.

    Bref,
    Voici à quoi il devrait ressembler :
    
    <?php 
    session_start();
    
    // affichage des erreurs PHP
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    
    // Connexion à la bdd
    // ??? tu as oublié de mettre la connexion à ta bdd ici... ??
    
    
    
    $AfficherFormulaire=1;
    
    //récupération PROPRE des variables AVANT de les utiliser
    $nom = !empty($_POST['nom']) ? trim($_POST['nom']) : NULL;
    $prenom = !empty($_POST['prenom']) ? trim($_POST['prenom']) : NULL;
    $pseudo = !empty($_POST['pseudo']) ? trim($_POST['pseudo']) : NULL;
    $mdp = !empty($_POST['mdp']) ? trim($_POST['mdp']) : NULL;
    $mdp_confirm = !empty($_POST['mdp_confirm']) ? trim($_POST['mdp_confirm']) : NULL;
    $email = !empty($_POST['email']) ? trim($_POST['email']) : NULL;
    
    /**
    * Execute une requête mysqli
    */
    function dbQuery($sql){
      global $mysqli;
      if (!$res = mysqli_query($mysqli, $sql)) {
        printf("Message d'erreur : %s\n", mysqli_error($mysqli));
        exit;
      }
      return $res;
    }
    
    function getUserByPseudo($pseudo){
      $sql = "SELECT * FROM membres WHERE pseudo='".$pseudo."'";
      return $res; 
    }
    
    function addUser($pseudo,$mdp){
      $password = password_hash($dmp); // A la place du MD5 qui n'est pas sécuritsé !! 
      $sql = "INSERT INTO membres (pseudo,mdp) VALUES('".$pseudo."','".$password."')"; 
      $res = dbQuery($sql);
      return $res;
    }
    
    
    	if($pseudo && $mdp){
      
      
        if(!$mdp){
          echo "Veuillez écrire votre mot de passe.";
        } elseif(!$nom){
          echo "Veuillez écrire votre nom.";
        } elseif(!$prenom){
          echo "Veuillez écrire votre prénom.";  
        } elseif(!$mdp_confirm){
          echo "Veuillez confirmer votre mot de passe.";
        } elseif(!$pseudo){
          echo "Veuillez écrire votre pseudo.";
        } elseif(strlen($pseudo)>15)) {
    			echo "Le pseudo est trop long, il dépasse 15 caractères.";
        } elseif($mdp != $mdp_confirm)) {
    			echo 'Les deux mots de passe doivent être identiques.';
        } elseif(!$email){
    			echo "Veuillez écrire votre adresse mail.";
        } elseif(mysqli_num_rows(getUserByPseudo($pseudo)))>=1 ){
          echo "Ce pseudo est déjà utilisé."; 
        }else{
          if(! addUser($pseudo,$mdp)){
            echo "Une erreur s'est produite: ".mysqli_error($mysqli); 
          } else {
    				echo "Vous êtes inscrit !";
    				//on affiche plus le formulaire
    				$AfficherFormulaire=0;
    			}
    
        }
      }
    
    
    if($AfficherFormulaire==1){
    ?>
    <br />
    <form method="post" action="">
      <table  border="1"  align="center">
        <tr>
          <td>
            Nom : <input type="text" name="nom">
            <br />
          </td>
          <td>
            Prénom : <input type="text" name="prenom">
            <br />
          </td>
          <td>
            Pseudo : <input type="text" name="pseudo">
            <br />
          </td>
          <td>
            Mot de passe : <input type="password" name="mdp">
            <br />
          </td>
          <td>
            Confirmation : <input type="password" name="mdp_confirm">
            <br />
          </td>
          <td>
            Email : <input type="text" name="email">
            <br />
          </td>
          <td>
            Date de naissance :
            <select name="mois">
               <?php
                for ($i=1; $i<= 12; $i++)  {
                  echo "<option value='".$i."'>".$i."</option>";
                }
               ?>
            </select>
    
            <br />
          </td>
        </tr>
        <tr align="center">
          <td colspan="6">
            <input type="submit" value="S'inscrire">
          </td>
        </tr>
    
      </table>
    </form>
    


    Si ça ne marche toujours pas, merci de nous donner les éventuels messages d'erreur... et montre nous le code généré (en faisant CTRL + u ) dans ton navigateur lorsque la page est affichée.

    0