Résultat d'un calcul dans une variable

Résolu
Bonjour,
Tout est dans le titre! est ce que le résultat d'un mt-rand peut etre affecté dans une variable?

$pos_x_min = 0;
$pos_x_max = 500;
$pos_x = mt_rand($pos_x_min,$pos_x_max);
$pos_y_min = 0;
$pos_y_max = 500;
$pos_y = mt_rand($pos_y_min,$pos_y_max);

15 réponses

  1. Bien, mais j'ai encore un soucis avec mes variables. L'update en table ne se fait pas et le script retourne une page blanche.
    <?php
    session_start();
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    require_once 'config.php';
    $pos_x_min = 0;
    $pos_x_max = 500;
    $pos_x = mt_rand($pos_x_min,$pos_x_max);
    $pos_y_min = 0;
    $pos_y_max = 500;
    $pos_y = mt_rand($pos_y_min,$pos_y_max);
    $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
    if($id){
    	
                $pdostat = $bdd->prepare('UPDATE membres SET pos_x= :pos_x, pos_y= :pos_y WHERE id= :id');
    			$pdostat->bindvalue(':pos_x',$pos_x, PDO::PARAM_INT);
    			$pdostat->bindvalue(':pos_y',$pos_y, PDO::PARAM_INT);
    			$pdostat->bindValue(':id', $id, PDO::PARAM_INT);
                $pdostat->execute();
                $_SESSION['pos_x'] = $pos_x; 
                $_SESSION['pos_y'] = $pos_y; 
                $_SESSION['id'] = $bdd->lastInsertId();
    		}
    header('page_test.html');
    exit;			
    ?>
    
    1. Modérateur
      Bonjour,

      <?php
      session_start();
      
      ini_set('display_errors', 1);
      ini_set('display_startup_errors', 1);
      error_reporting(E_ALL);
      
      //connexion à la bdd
      // NB: Il faut activer l'affichage des erreurs PDO dans la connexion : voir ici : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
      require_once 'config.php';
      
      $pos_x_min = 0;
      $pos_x_max = 500;
      $pos_y_min = 0;
      $pos_y_max = 500;
      
      $pos_x = mt_rand($pos_x_min,$pos_x_max);
      $pos_y = mt_rand($pos_y_min,$pos_y_max);
      $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
      
      if($id){
        try{
          $pdostat = $bdd->prepare('UPDATE membres SET pos_x= :pos_x, pos_y= :pos_y WHERE id= :id');
          $pdostat->bindvalue(':pos_x',$pos_x, PDO::PARAM_INT);
          $pdostat->bindvalue(':pos_y',$pos_y, PDO::PARAM_INT);
          $pdostat->bindValue(':id', $id, PDO::PARAM_INT);
          $pdostat->execute();
          $_SESSION['pos_x'] = $pos_x; 
          $_SESSION['pos_y'] = $pos_y; 
          $_SESSION['id'] = $bdd->lastInsertId();
          //header('page_test.html'); // A désactiver le temps des tests ...
          exit; 
        }catch(Exception $e){
          // en cas d'erreur :
          echo " Erreur ! ".$e->getMessage();
        }
      }else{
         echo " Aucun ID n'est présent !! ";
         var_dump($_SESSION); // le temps des tests pour voir si tu as bien un ID en SESSION !!
      }
        
      ?>
      


      1. Bien vu, Jordane.... voila le resultat du script:

        Aucun ID n'est présent !!

        C:\wamp64\www\position_aleatoire_map_debut_jeu.php:40:
        array (size=2)
        'id' => string '0' (length=1)
        'pseudo' => string 'yves' (length=4)
        1. Modérateur
          C'est donc la partie de ton site où tu renseigne l'id dans la variable de session qui n'est pas bon...

          D'ailleurs, as-tu vérifier en base de données directement depuis phpMyAdmin qu'il y avait bien un id correspondant à ton utilisateur ??
          Le chant id de ta base de données est-il bien en auto-incremente ?
      2. Le chant id de ta base de données est-il bien en auto-incremente ? OUI
        as-tu vérifier en base de données directement depuis phpMyAdmin qu'il y avait bien un id correspondant à ton utilisateur ?? OUI

        le script précédent (que tu m'avais aidé à mettre d'équerre) "register avatar.php"
        <?php
        session_start();
        require_once 'config.php';
        $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
        if($id){
        $avatar= '/avatars/0001.png';
            $pdostat = $bdd->prepare('UPDATE membres SET avatar = :avatar WHERE id = :id');
            $pdostat->bindValue(':avatar', $avatar, PDO::PARAM_STR);
            $pdostat->bindValue(':id', $id, PDO::PARAM_INT);
            $pdostat->execute();
            $_SESSION['id'] = $bdd->lastInsertId();
            }  
          header('Location:position_aleatoire_map_debut_jeu.php');
                exit;
        ?>
        


        et celui encore avant qui est la phase inscription (volontairement épuré ici)
        // INSERTION en bdd
           $pdostat =  $bdd->prepare("INSERT INTO membres (pseudo, password1, mail, sexe, date_inscription) VALUES(:pseudo, :password1, :mail, :sexe, NOW());");
           $pdostat->bindvalue(':pseudo',$_POST['pseudo'],PDO::PARAM_STR);
           $pdostat->bindvalue(':password1',password_hash($_POST["password1"],PASSWORD_DEFAULT ),PDO::PARAM_STR);
           $pdostat->bindvalue(':mail',$_POST['mail'],PDO::PARAM_STR);
           $pdostat->bindvalue(':sexe',$_POST['sexe'],PDO::PARAM_STR);
           $pdostat->execute();
                 $id = $bdd->lastInsertId();
           // Mise en SESSION
           $_SESSION['id'] = $id;
           $_SESSION['pseudo'] = $_POST['pseudo'];
           header('Location:choix_avatar.php');
           exit;
        


        A noter que le script inscription envoie sur une page choix avatar.php ou quelques avatars sont proposés. C'est en cliquant sur une vignette que l'on pointe vers register avatar.php
        en retestant, je viens de voir ceci sur la page choix avatar:

        C:\wamp64\www\choix_avatar.php:7:
        array (size=2)
        'id' => string '0' (length=1)
        'pseudo' => string 'dagu' (length=4)

        l'id ne semble pas etre pris en compte?
        1. Modérateur
          Ben oui...
          mets le last insert id il ne faut le laisser que dans le script ou tu fais l'insertion pas dans celui où tu mets à jour de l'avatar..
          Puisque un update...ne retourne pas de last insert ld... (Qui, comme son nom l'indique, fonctionne pour les insert...)
      3. ok, mais ca coince toujours. Pour résumer les phases:

        1) page inscription.php ok --->
        2) page choix avatar.php
        apparait ce message dans le coin gauche de l'"écran écrit en tout petit
        C:\wamp64\www\choix_avatar.php:7:
        array (size=2)
        'id' => string '2' (length=1)
        'pseudo' => string 'Vanessa' (length=7)
        Jusque là, l'id voyage bien... (Mais pourquoi ce message apparait???)
        un clic sur une vignette ok --->
        3) register.php----> mise ajour table ok
        4) position_aleatoire...php
        écran blanc avec ce message
        Aucun ID n'est présent !!
        C:\wamp64\www\position_aleatoire_map_debut_jeu.php:40:
        array (size=2)
        'id' => string '0' (length=1)
        'pseudo' => string 'Vanessa' (length=7)

        Je comprends rien.
        1. Modérateur
          Commence par nous poster le code de tout tes scripts en précisant bien pour chacun d'eux leur nom.
          Et bien entendu tu as tenu compte de ma réponse précédente pour virer le last insert id qui se situer dans ton script de mise à jour de l'avatar.. n'est-ce pas ?
          Tu as bien également sur chacune de tes pages PHP l'instruction de démarrage des sessions ??
      4. inscription.php

        // INSERTION en bdd
        			$pdostat =  $bdd->prepare("INSERT INTO membres (pseudo, password1, mail, sexe, date_inscription) VALUES(:pseudo, :password1, :mail, :sexe, NOW());");
        			$pdostat->bindvalue(':pseudo',$_POST['pseudo'],PDO::PARAM_STR);
        			$pdostat->bindvalue(':password1',password_hash($_POST["password1"],PASSWORD_DEFAULT ),PDO::PARAM_STR);
        			$pdostat->bindvalue(':mail',$_POST['mail'],PDO::PARAM_STR);
        			$pdostat->bindvalue(':sexe',$_POST['sexe'],PDO::PARAM_STR);
        			$pdostat->execute();
        	        $id = $bdd->lastInsertId();
        			// Mise en SESSION
        			$_SESSION['id'] = $id;
        			$_SESSION['pseudo'] = $_POST['pseudo'];
            		header('Location:choix_avatar.php');
        


        choix_avatar.php

        <?php
        session_start();
        require_once 'config.php';
        $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
        ?>
        <html>
         <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
         <title>choix avatar</title bla bla bla
        <a href="register_av0001.php"><img src="avatars/0001.png" alt="" width="50" height="50"></a>
        <a href="register_av0002.php"><img src="avatars/0002.png" alt="" width="50" height="50"></a>
        bla bla bla
        


        register_av0001.php

        <?php
        session_start();
        require_once 'config.php';
        $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
        if($id){
        $avatar= '/avatars/0001.png';
            $pdostat = $bdd->prepare('UPDATE membres SET avatar = :avatar WHERE id = :id');
            $pdostat->bindValue(':avatar', $avatar, PDO::PARAM_STR);
            $pdostat->bindValue(':id', $id, PDO::PARAM_INT);
            $pdostat->execute();
          //$_SESSION['id'] = $bdd->lastInsertId();
        				}		
         	header('Location:position_aleatoire_map_debut_jeu.php');
                exit;
        ?>
        


        position_aleatoire_map_debut_jeu.php

        <?php
        session_start();
        
        ini_set('display_errors', 1);
        ini_set('display_startup_errors', 1);
        error_reporting(E_ALL);
        
        //connexion à la bdd
        // NB: Il faut activer l'affichage des erreurs PDO dans la connexion : voir ici : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
        require_once 'config.php';
        
        $pos_x_min = 0;
        $pos_x_max = 500;
        $pos_y_min = 0;
        $pos_y_max = 500;
        
        $pos_x = mt_rand($pos_x_min,$pos_x_max);
        $pos_y = mt_rand($pos_y_min,$pos_y_max);
        $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
        
        if($id){
          try{
            $pdostat = $bdd->prepare('UPDATE membres SET pos_x= :pos_x, pos_y= :pos_y WHERE id= :id');
            $pdostat->bindvalue(':pos_x',$pos_x, PDO::PARAM_INT);
            $pdostat->bindvalue(':pos_y',$pos_y, PDO::PARAM_INT);
            $pdostat->bindValue(':id', $id, PDO::PARAM_INT);
            $pdostat->execute();
            $_SESSION['pos_x'] = $pos_x; 
            $_SESSION['pos_y'] = $pos_y; 
         // $_SESSION['id'] = $bdd->lastInsertId();
            //header('page_test.html'); // A désactiver le temps des tests ...
            exit; 
          }catch(Exception $e){
            // en cas d'erreur :
            echo " Erreur ! ".$e->getMessage();
          }
        }else{
           echo " Aucun ID n'est présent !! ";
           var_dump($_SESSION); // le temps des tests pour voir si tu as bien un ID en SESSION !!
        }
          
        ?>
        
        1. Modérateur
          Bon... je pense qu'on arrivera pas à avoir les codes COMPLETS .....
          on va donc essayer de faire avec..

          Donc..
          Niveau code.. il serait bien de respecter ce qui est indiqué dans les liens que je t'ai donné..
          Par exemple .. pour ta page inscription.php
          <?php    
          // récupération PROPRE des variables AVANT de les utiliser
          $mail = !empty($_POST['mail']) ? trim($_POST['mail']) : NULL;
          $sexe = !empty($_POST['sexe']) ? trim($_POST['sexe']) : NULL;
          $password1 = !empty($_POST['password1']) ? trim($_POST['password1']) : NULL;
          $pseudo = !empty($_POST['pseudo']) ? trim($_POST['pseudo']) : NULL;
          
          // INSERTION en bdd
          $sql = "INSERT INTO membres (pseudo, password1, mail, sexe, date_inscription) VALUES(:pseudo, :password1, :mail, :sexe, NOW());";
          
          try{
            $prep =  $bdd->prepare($sql);
            $prep->bindvalue(':pseudo',$pseudo,PDO::PARAM_STR);
            $prep->bindvalue(':password1',password_hash($password1,PASSWORD_DEFAULT ),PDO::PARAM_STR);
            $prep->bindvalue(':mail',$mail,PDO::PARAM_STR);
            $prep->bindvalue(':sexe',$sexe,PDO::PARAM_STR);
            $prep->execute();
            
            $id = $bdd->lastInsertId();
            // Mise en SESSION
            $_SESSION['id'] = $id;
            $_SESSION['pseudo'] = $_POST['pseudo'];
            header('Location: choix_avatar.php');
            exit();
          }catch(Exception $e){
            //en cas d'erreur dans la requete
            echo "Erreur " . $e->getMessage();
          }
          

          Et cette page, une fois l'insertion faite, redirige vers la page choix_avatar.php
          (le code de cette page est faux au passage... )
          <?php    
          //Démarrage des sessions
          session_start();
          
          //Affichage des erreurs PHP
          ini_set('display_errors', 1);
          ini_set('display_startup_errors', 1);
          error_reporting(E_ALL);
          
          //connexion à la bdd
          // NB: Il faut activer l'affichage des erreurs PDO dans la connexion : voir ici : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
          // C'est fait ??
          require_once 'config.php';
          
          //Récupération PROPRE des variables AVANT de les utiliser...
          $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
          
          // Pour débuguer ton code ( faudra le supprimer quand ça marchera )
          var_dump($_SESSION);
          
          
          ?>
          <html>
           <head>
              <meta http-equiv="content-type" content="text/html; charset=utf-8">
              <title>choix avatar</title>
            </head>
            <body>
          
             bla bla bla
            <a href="register_av0001.php"><img src="avatars/0001.png" alt="" width="50" height="50"></a>
            <a href="register_av0002.php"><img src="avatars/0002.png" alt="" width="50" height="50"></a>
            bla bla bla
            
            </body>
          </html>
          


          Commence par ces deux codes ... et dis nous ce que t'affiche le var_dump de la page choix_avatar.php

          Bien entendu, vu que tu as ajouté le lastinsertid que récemment ... il faut que tu repasses par ta page d'inscription pour que la variable de session se remplisse...
          Tu dois donc recommencer les étapes dès le début pour que ça fonctionne !
      5. mon config.php

        <?php
        $dbname= 'mondeideal';
        $user = 'root';
        $password = '';
        $host = '127.0.0.1';
        
        try {
            $bdd = new PDO('mysql:host='.$host .';dbname='.$dbname, $user, $password );
            $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $bdd->exec("SET CHARACTER SET utf8");
        } catch (PDOException $e) {
            echo "<p>Erreur : " . $e->getMessage() . "</p>";
            exit();
        }
        ?>
        
        1. le inscription.php complet

          
          session_start();
          require_once 'config.php';
          $err_connexion = '';
          if(isset($_POST['inscrimembre']))
           {
          // récupération PROPRE des variables AVANT de les utiliser
          $mail = !empty($_POST['mail']) ? trim($_POST['mail']) : NULL;
          $sexe = !empty($_POST['sexe']) ? trim($_POST['sexe']) : NULL;
          $password1 = !empty($_POST['password1']) ? trim($_POST['password1']) : NULL;
          $pseudo = !empty($_POST['pseudo']) ? trim($_POST['pseudo']) : NULL;
          //$pass_hache = password_hash($_POST['password1'], PASSWORD_DEFAULT );
          if(!empty($_POST['pseudo'])AND !empty($_POST['mail']) AND !empty($_POST['password1']) AND !empty($_POST['password2']) AND !empty($_POST['sexe'] ))
          {
          $pseudolength = strlen($pseudo);
          if ($pseudolength <= 20)
           {
           $reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
           $reqpseudo->execute(array($pseudo));
           $pseudoexist = $reqpseudo->fetchColumn();
          
          if ($pseudoexist == 0)
           {
          
          if($mail == $mail)
              {
          if(filter_var($mail, FILTER_VALIDATE_EMAIL))
           {
           	 $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
          $reqmail->execute(array($mail));
           $mailexist = $reqmail->fetchColumn();
           if ($mailexist == 0)
              {
             if ($_POST["password1"] == $_POST["password2"])
            {
                // INSERTION en bdd
          	$sql = "INSERT INTO membres (pseudo, password1, mail, sexe, date_inscription) VALUES(:pseudo, :password1, :mail, :sexe, NOW());";
              try{
              $prep =  $bdd->prepare($sql);
              $prep->bindvalue(':pseudo',$pseudo,PDO::PARAM_STR);
              $prep->bindvalue(':password1',password_hash($password1,PASSWORD_DEFAULT ),PDO::PARAM_STR);
              $prep->bindvalue(':mail',$mail,PDO::PARAM_STR);
              $prep->bindvalue(':sexe',$sexe,PDO::PARAM_STR);
              $prep->execute();
              $id = $bdd->lastInsertId();
            // Mise en SESSION
              $_SESSION['id'] = $id;
              $_SESSION['pseudo'] = $_POST['pseudo'];
              header('Location: choix_avatar.php');
              exit();
          }catch(Exception $e){
            //en cas d'erreur dans la requete
            echo "Erreur " . $e->getMessage();
          }
          	
              
               }
          
               }
          
          	
                }
          
               
                 }
           }
               
            
                  }
          
            }
          ?>
          <html>
          <head>
          <title>inscription</title>
          <meta charset="utf-8">
          <style type="text/css">.wifeo_pagemenu > a{color:#FFFFFF;text-decoration:none} .wifeo_pagemenu:hover >
          a{color:#FFFFFF;text-decoration:none;font-weight:bold} .wifeo_rubrique > a{color:#FFFFFF;text-decoration:none} .wifeo_rubrique:hover >
          a{color:#FFFFFF;font-weight:bold;text-decoration:none} .wifeo_pagesousmenu > a{color:#FFFFFF;text-decoration:none}
          .wifeo_conteneur_menu{border-spacing:0px} .wifeo_conteneur_menu{width:100%;display:table;border-radius:5px;height:50px;background:linear-gradient(top, #333333 0%,#000000 100%);
          background:-moz-linear-gradient(top, #333333 0%, #000000 100%);background:-webkit-linear-gradient(top, #333333 0%,#000000 100%);background:-ms-linear-gradient(top, #333333 0%, #000000 100%);background:-o-linear-gradient(top, #333333 0%,#000000 100%)} .wifeo_conteneur_menu a{text-decoration:none;display:table-cell;vertical-align:middle;height:50px;padding:0 5px;text-align:center;-webkit-transition:all 0.25s ease;-moz-transition:all 0.25s ease;-ms-transition:all 0.25s ease;-o-transition:all 0.25s ease;transition:all 0.25s ease} .wifeo_pagemenu, .wifeo_rubrique{float:left;position:relative;width:12.5%;text-align:center;display:table} .wifeo_sousmenu{left:0;opacity:0;position:absolute;top:0;visibility:hidden;z-index:3;width:100%;background-color:#333333;box-shadow:1px 1px 8px #333333} @media screen and (min-device-width:1024px){.wifeo_sousmenu{-webkit-transition:all 0.25s ease;-moz-transition:all 0.25s ease;-ms-transition:all 0.25s ease;-o-transition:all 0.25s ease;transition:all 0.25s ease}} .wifeo_pagesousmenu{border-top:1px solid #797979;border-bottom:1px solid #000000} .wifeo_rubrique:hover .wifeo_sousmenu{opacity:1;visibility:visible;top:50px}
          .wifeo_sousmenu a:hover{background-color:#656565} .wifeo_pagesousmenu{width:100%;text-align:center;display:table}</style>
              <style type="text/css">
          html {
            margin:0;
            padding:0;
            background: url(images/fond.jpg) no-repeat center fixed;
            -webkit-background-size: cover; /* pour anciens Chrome et Safari */
            background-size: cover; /* version standardisée */
          }
          </style> <style type="text/css">
          #inscription
          {
            width:400px;
            background:#FFFFFF;
            margin:20px auto;
            font-family: Arial, Helvetica, sans-serif;
            font-size:1em;
            border:1px solid #ccc;
            border-radius:10px;
          }
          
          #inscription fieldset
          {
            text-align:center;
            font-size:1.2em;
            background:#333333;
            padding-bottom:5px;
            margin-bottom:15px;
            color:#FFFFFF;
            letter-spacing:0.05em;
            border-top-left-radius:10px;
            border-top-right-radius:10px;
          }
          
          #inscription p
          {
            padding-top:15px;
            padding-right:50px;
            text-align:right;
          }
          
          #inscription input
          {
            margin-left:30px;
            width:150px;
          }
          
          #inscription #valider
          {
            width:155px;
            font-size:0.8em;
          }
          
          #inscription #message
          {
            height:27px;
            color:#F00;
            font-size:0.8em;
            font-weight:bold;
            text-align:center;
            padding:10px 0 0 0;
          }
          -->
          </style>
           </head>
           <body>
           <div id="entete">
                <center><img src="images/logo.jpg"></center>
              </div>
              <nav>
                <div class="wifeo_conteneur_menu">
                  <div class="wifeo_pagemenu"><a href="accueil.html" target="_blank">ACCUEIL</a></div>
                  <div class="wifeo_pagemenu"><a href="base.html" target="_blank">A PROPOS</a></div>
                  <div class="wifeo_pagemenu"><a href="inscription.php" target="_blank">INSCRIPTION</a></div>
                  <div class="wifeo_pagemenu"><a href="bonus.php" target="_blank">BONUS</a></div>
                  <div class="wifeo_pagemenu"><a href="connexion.php" target="_blank">CONNEXION</a></div>
                  <div class="wifeo_pagemenu"><a href="logout.php" target="_blank">QUITTER</a></div>
                  <div class="wifeo_pagemenu"><a href="orum.blalblabla" target="_blank">FORUM</a></div>
                  <div class="wifeo_pagemenu"><a href="infos.html" target="_blank">INFOS</a></div>
                </div>
              </nav>
          	   </head>
          
          <center>
          <h2>Inscription</h2>
          <?php 	if( !empty($err_inscription) ){ ?>
          		<div class="error"><?php echo implode('<br/>', $err_inscription); ?></div>
          <?php 	} ?>
          	<form action="" method="post">
                      <table>
          	               <tr>
          	                  <td align="right">
          	                     <label for="pseudo">PSEUDO :</label>
          	                  </td>
          	                  <td>
          	                     <input type="text" placeholder="VOTRE PSEUDO" id="pseudo" name="pseudo" class="input_pseudo"/>
          	                  </td>
          	               </tr>
          	               <tr>
          	                  <td align="right">
          	                     <label for="mail">EMAIL :</label>
          	                  </td>
          	                  <td>
          	                     <input type="email" placeholder="VOTRE EMAIL" id="mail" name="mail" class="input_mail"/>
          	                  </td>
          	               </tr>
          	               <tr>
          	                  <td align="right">
          	                     <label for="password1">VOTRE MOT DE PASSE :</label>
          	                  </td>
          	                  <td>
          	                     <input type="password1" placeholder="MOT DE PASSE" id="password1" name="password1" class="input_password1"/>
          	                  </td>
          	               </tr>
          	               <tr>
          	                  <td align="right">
          	                     <label for="password2">RETAPER MOT DE PASSE :</label>
          	                  </td>
          	                  <td>
          	                     <input type="password2" placeholder="MOT DE PASSE" id="password2" name="password2" class="input_password2"/>
          	                  </td>
          	               </tr>
                 	                  <tr>
              				   <td align="right">
          	                  <label for="sexe">SEXE DU PERSO :</label>
          						  </td><td>
          					  <label><input type="radio" name="sexe" value="H" id="homme" checked="checked"  /><label for="H">H</label>
                                <input type="radio" name="sexe" value="F" id="femme"/><label for="F">F</label>
          	                  </td>
          					   </tr>
          					   </table>
          				  <td align="center"></td>
          	            <input type="submit" name="inscrimembre" value="Je m'inscris" />
          	         </form>
          	         </center>
          </body>
          </html>
          


          Parse error: syntax error, unexpected end of file in C:\wamp64\www\inscription.php on line 219
          1. Modérateur
            C'est là que tu comprends que l'indentation a toute son utilité ....
            Là.. tu avais oublié une quote fermante
            ça devrait ressembler à ça
            <?php    
            //Démarrage des sessions
            session_start();
            
            //Affichage des erreurs PHP
            ini_set('display_errors', 1);
            ini_set('display_startup_errors', 1);
            error_reporting(E_ALL);
            
            require_once 'config.php';
            
            $err_connexion = '';
            
            if(isset($_POST['inscrimembre'])) {
              // récupération PROPRE des variables AVANT de les utiliser
              $mail = !empty($_POST['mail']) ? trim($_POST['mail']) : NULL;
              $sexe = !empty($_POST['sexe']) ? trim($_POST['sexe']) : NULL;
              $password1 = !empty($_POST['password1']) ? trim($_POST['password1']) : NULL;
              $password2 = !empty($_POST['password2']) ? trim($_POST['password2']) : NULL;
              $pseudo = !empty($_POST['pseudo']) ? trim($_POST['pseudo']) : NULL;
            
              
              if($pseudo && $mail && !$password1 && $password2 && $sexe) {
                $pseudolength = strlen($pseudo);
                if ($pseudolength <= 20)  {
                  try{
                    $reqpseudo = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ?");
                    $reqpseudo->execute(array($pseudo));
                    $pseudoexist = $reqpseudo->fetchColumn();
                  }catch(Exception $e){
                    //en cas d'erreur dans la requete
                    echo "Erreur " . $e->getMessage();
                  } 
                  if ($pseudoexist == 0) {
            
                    if($mail == $mail) {
                      if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
                        $reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
                        $reqmail->execute(array($mail));
                        $mailexist = $reqmail->fetchColumn();
                        if ($mailexist == 0)  {
                          if ($password1 == $password2) {
                            // INSERTION en bdd
                            $sql = "INSERT INTO membres (pseudo, password1, mail, sexe, date_inscription) VALUES(:pseudo, :password1, :mail, :sexe, NOW());";
                            try{
                                $prep =  $bdd->prepare($sql);
                                $prep->bindvalue(':pseudo',$pseudo,PDO::PARAM_STR);
                                $prep->bindvalue(':password1',password_hash($password1,PASSWORD_DEFAULT ),PDO::PARAM_STR);
                                $prep->bindvalue(':mail',$mail,PDO::PARAM_STR);
                                $prep->bindvalue(':sexe',$sexe,PDO::PARAM_STR);
                                $prep->execute();
                                $id = $bdd->lastInsertId();
                                // Mise en SESSION
                                $_SESSION['id'] = $id;
                                $_SESSION['pseudo'] = $_POST['pseudo'];
                                header('Location: choix_avatar.php');
                                exit();
                            }catch(Exception $e){
                              //en cas d'erreur dans la requete
                              echo "Erreur " . $e->getMessage();
                            }     
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
            
        2. inscription OK

          choix_avatar.php complet

          <?php    
          //Démarrage des sessions
          session_start();
          
          //Affichage des erreurs PHP
          ini_set('display_errors', 1);
          ini_set('display_startup_errors', 1);
          error_reporting(E_ALL);
          
          //connexion à la bdd
          // NB: Il faut activer l'affichage des erreurs PDO dans la connexion : voir ici : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
          // C'est fait ??
          require_once 'config.php';
          
          //Récupération PROPRE des variables AVANT de les utiliser...
          $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
          
          // Pour débuguer ton code ( faudra le supprimer quand ça marchera )
          var_dump($_SESSION);
          
          
          ?>
          <html>
           <head>
          <meta http-equiv="content-type" content="text/html; charset=utf-8">
           <title>choix avatar</title>
          <style type="text/css">.wifeo_pagemenu > a{color:#FFFFFF;text-decoration:none} .wifeo_pagemenu:hover >
          a{color:#FFFFFF;text-decoration:none;font-weight:bold} .wifeo_rubrique > a{color:#FFFFFF;text-decoration:none} .wifeo_rubrique:hover >
          a{color:#FFFFFF;font-weight:bold;text-decoration:none} .wifeo_pagesousmenu > a{color:#FFFFFF;text-decoration:none}
          .wifeo_conteneur_menu{border-spacing:0px} .wifeo_conteneur_menu{width:100%;display:table;border-radius:5px;height:50px;background:linear-gradient(top, #333333 0%,#000000 100%);
          background:-moz-linear-gradient(top, #333333 0%, #000000 100%);background:-webkit-linear-gradient(top, #333333 0%,#000000 100%);background:-ms-linear-gradient(top, #333333 0%, #000000 100%);background:-o-linear-gradient(top, #333333 0%,#000000 100%)} .wifeo_conteneur_menu a{text-decoration:none;display:table-cell;vertical-align:middle;height:50px;padding:0 5px;text-align:center;-webkit-transition:all 0.25s ease;-moz-transition:all 0.25s ease;-ms-transition:all 0.25s ease;-o-transition:all 0.25s ease;transition:all 0.25s ease} .wifeo_pagemenu, .wifeo_rubrique{float:left;position:relative;width:12.5%;text-align:center;display:table} .wifeo_sousmenu{left:0;opacity:0;position:absolute;top:0;visibility:hidden;z-index:3;width:100%;background-color:#333333;box-shadow:1px 1px 8px #333333} @media screen and (min-device-width:1024px){.wifeo_sousmenu{-webkit-transition:all 0.25s ease;-moz-transition:all 0.25s ease;-ms-transition:all 0.25s ease;-o-transition:all 0.25s ease;transition:all 0.25s ease}} .wifeo_pagesousmenu{border-top:1px solid #797979;border-bottom:1px solid #000000} .wifeo_rubrique:hover .wifeo_sousmenu{opacity:1;visibility:visible;top:50px}
          .wifeo_sousmenu a:hover{background-color:#656565} .wifeo_pagesousmenu{width:100%;text-align:center;display:table}</style>
          <style type="text/css">
          html {
            margin:0;
            padding:0;
            background: url(images/fond.jpg) no-repeat center fixed;
            -webkit-background-size: cover; /* pour anciens Chrome et Safari */
            background-size: cover; /* version standardisée */
          }
          </style> </head>
          <body>
           <div id="entete">
                <center><img src="images/logo.jpg"></center>
              </div>
              <nav>
                <div class="wifeo_conteneur_menu">
                  <div class="wifeo_pagemenu"><a href="accueil.html" target="_blank">ACCUEIL</a></div>
                  <div class="wifeo_pagemenu"><a href="base.html" target="_blank">A PROPOS</a></div>
                  <div class="wifeo_pagemenu"><a href="inscription.php" target="_blank">INSCRIPTION</a></div>
                  <div class="wifeo_pagemenu"><a href="bonus.php" target="_blank">BONUS</a></div>
                  <div class="wifeo_pagemenu"><a href="connexion.php" target="_blank">CONNEXION</a></div>
                  <div class="wifeo_pagemenu"><a href="logout.php" target="_blank">QUITTER</a></div>
                  <div class="wifeo_pagemenu"><a href="orum.blalblabla" target="_blank">FORUM</a></div>
                  <div class="wifeo_pagemenu"><a href="infos.html" target="_blank">INFOS</a></div>
                </div>
              </nav>
          <br>    <center><b><big> <p style="color:#FF0000";>BRAVO, VOUS AVEZ DÉJA UN PIED DANS LE MONDE IDÉAL !</p>
              <center>AU LIEU DE CELA<br>
          <img src="avatars/defaut.png" alt="" width="50" height="50">
          <br>VOUS POURRIEZ CHOISIR UN AUTRE AVATAR</b></big><br><br>
          <a href="register_av0001.php"><img src="avatars/0001.png" alt="" width="50" height="50"></a>
          <a href="register_av0002.php"><img src="avatars/0002.png" alt="" width="50" height="50"></a>
          <a href="register_av0003.php"><img src="avatars/0003.png" alt="" width="50" height="50"></a>
          <a href="register_av0004.php"><img src="avatars/0004.png" alt="" width="50" height="50"></a>
          <a href="register_av0005.php"><img src="avatars/0005.png" alt="" width="50" height="50"></a>
          <table>
          </center>
          </body>
          </html>
          


          affiche une page blanche.
          1. Modérateur
            Dis .. je ne vais pas refaire le code de toutes tes pages quand même......
            <?php    
            //Démarrage des sessions
            session_start();
            
            //Affichage des erreurs PHP
            ini_set('display_errors', 1);
            ini_set('display_startup_errors', 1);
            error_reporting(E_ALL);
            
            //connexion à la bdd
            // NB: Il faut activer l'affichage des erreurs PDO dans la connexion : voir ici : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
            // C'est fait ??
            require_once 'config.php';
            
            // Pour débuguer ton code ( faudra le supprimer quand ça marchera )
            var_dump($_SESSION);
            
            ?>
            <!Doctype html>
            <html>
              <head>
                <meta http-equiv="content-type" content="text/html; charset=utf-8">
                <title>choix avatar</title>
                <style type="text/css">
                  .wifeo_pagemenu > a{
                    color:#FFFFFF;
                  text-decoration:none;
                  } 
                  .wifeo_pagemenu:hover >
                    a{color:#FFFFFF;
                    text-decoration:none;font-weight:bold} .wifeo_rubrique > a{
                      color:#FFFFFF;
                      text-decoration:none;
                      } 
                  .wifeo_rubrique:hover >a{
                    color:#FFFFFF;
                    font-weight:bold;
                    text-decoration:none;
                    } 
                  .wifeo_pagesousmenu > a{
                      color:#FFFFFF;
                      text-decoration:none;
                    }
                    .wifeo_conteneur_menu{border-spacing:0px} .wifeo_conteneur_menu{width:100%;display:table;border-radius:5px;height:50px;background:linear-gradient(top, #333333 0%,#000000 100%);
                    background:-moz-linear-gradient(top, #333333 0%, #000000 100%);background:-webkit-linear-gradient(top, #333333 0%,#000000 100%);background:-ms-linear-gradient(top, #333333 0%, #000000 100%);background:-o-linear-gradient(top, #333333 0%,#000000 100%)} .wifeo_conteneur_menu a{text-decoration:none;display:table-cell;vertical-align:middle;height:50px;padding:0 5px;text-align:center;-webkit-transition:all 0.25s ease;-moz-transition:all 0.25s ease;-ms-transition:all 0.25s ease;-o-transition:all 0.25s ease;transition:all 0.25s ease} .wifeo_pagemenu, .wifeo_rubrique{float:left;position:relative;width:12.5%;text-align:center;display:table} .wifeo_sousmenu{left:0;opacity:0;position:absolute;top:0;visibility:hidden;z-index:3;width:100%;background-color:#333333;box-shadow:1px 1px 8px #333333} @media screen and (min-device-width:1024px){.wifeo_sousmenu{-webkit-transition:all 0.25s ease;-moz-transition:all 0.25s ease;-ms-transition:all 0.25s ease;-o-transition:all 0.25s ease;transition:all 0.25s ease}} .wifeo_pagesousmenu{border-top:1px solid #797979;border-bottom:1px solid #000000} .wifeo_rubrique:hover .wifeo_sousmenu{opacity:1;visibility:visible;top:50px}
                    .wifeo_sousmenu a:hover{background-color:#656565} .wifeo_pagesousmenu{width:100%;text-align:center;display:table}
            
                  html {
                    margin:0;
                    padding:0;
                    background: url(images/fond.jpg) no-repeat center fixed;
                    -webkit-background-size: cover; /* pour anciens Chrome et Safari */
                    background-size: cover; /* version standardisée */
                  }
                </style> 
              </head>
              <body>
               <div id="entete">
                  <center><img src="images/logo.jpg"></center>
                </div>
                <nav>
                  <div class="wifeo_conteneur_menu">
                    <div class="wifeo_pagemenu"><a href="accueil.html" target="_blank">ACCUEIL</a></div>
                    <div class="wifeo_pagemenu"><a href="base.html" target="_blank">A PROPOS</a></div>
                    <div class="wifeo_pagemenu"><a href="inscription.php" target="_blank">INSCRIPTION</a></div>
                    <div class="wifeo_pagemenu"><a href="bonus.php" target="_blank">BONUS</a></div>
                    <div class="wifeo_pagemenu"><a href="connexion.php" target="_blank">CONNEXION</a></div>
                    <div class="wifeo_pagemenu"><a href="logout.php" target="_blank">QUITTER</a></div>
                    <div class="wifeo_pagemenu"><a href="orum.blalblabla" target="_blank">FORUM</a></div>
                    <div class="wifeo_pagemenu"><a href="infos.html" target="_blank">INFOS</a></div>
                  </div>
                </nav>
                <br>   
                <center>
                <b>
                <big> 
                <p style="color:#FF0000";>BRAVO, VOUS AVEZ DÉJA UN PIED DANS LE MONDE IDÉAL !</p>
                <center>AU LIEU DE CELA<br>
                  <img src="avatars/defaut.png" alt="" width="50" height="50">
                  <br>VOUS POURRIEZ CHOISIR UN AUTRE AVATAR</b></big><br><br>
                  <a href="register_av0001.php"><img src="avatars/0001.png" alt="" width="50" height="50"></a>
                  <a href="register_av0002.php"><img src="avatars/0002.png" alt="" width="50" height="50"></a>
                  <a href="register_av0003.php"><img src="avatars/0003.png" alt="" width="50" height="50"></a>
                  <a href="register_av0004.php"><img src="avatars/0004.png" alt="" width="50" height="50"></a>
                  <a href="register_av0005.php"><img src="avatars/0005.png" alt="" width="50" height="50"></a>
                </center>
              </body>
            </html>
            
        3. je viens de tester avec un autre pseudo. C'est à n'y rien comprendre.

          inscription ok et bdd ok.

          sur la page choix avatar s'affiche
          :\wamp64\www\choix_avatar.php:19:
          array (size=4)
          'id' => string '2' (length=1)
          'pseudo' => string 'vero' (length=4)
          'pos_x' => int 369
          'pos_y' => int 150

          pos_x et pos-y étant le résultat traitement du script appelé lors du clic (register_av001.php)

          le truc, c'est que dans la table, pos_x et pos_y ont été updaté sur le 1er id.....

          puis derniere page position_aleatoire_debut_jeu.php affiche

          Aucun ID n'est présent !!

          C:\wamp64\www\position_aleatoire_map_debut_jeu.php:40:
          array (size=4)
          'id' => string '0' (length=1)
          'pseudo' => string 'vero' (length=4)
          'pos_x' => int 369
          'pos_y' => int 150

          là, il a donc perdu l'id. Mais ce qui est curieux
          1. Modérateur

            sur la page choix avatar s'affiche
            :\wamp64\www\choix_avatar.php:19:
            array (size=4)
            'id' => string '2' (length=1)
            'pseudo' => string 'vero' (length=4)
            'pos_x' => int 369
            'pos_y' => int 150


            C'est le var_dump qui affiche ça.. et ça permet de voir, qu'en effet, tu as bien un id de renseigné dans les SESSIONS sur cette page.

            Fichier : register_av001.php
            <?php    
            //Démarrage des sessions
            session_start();
            
            //Affichage des erreurs PHP
            ini_set('display_errors', 1);
            ini_set('display_startup_errors', 1);
            error_reporting(E_ALL);
            
            require_once 'config.php';
            
            $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
            $avatar= '/avatars/0001.png';
            
            if($id){
              $sql = 'UPDATE membres SET avatar = :avatar WHERE id = :id';
              try{
                $pdostat = $bdd->prepare($sql);
                $pdostat->bindValue(':avatar', $avatar, PDO::PARAM_STR);
                $pdostat->bindValue(':id', $id, PDO::PARAM_INT);
                $pdostat->execute();
                header('Location:position_aleatoire_map_debut_jeu.php');
                exit;
              }catch(Exception $e){
                //en cas d'erreur dans la requete
                echo "Erreur " . $e->getMessage();
              }
            
            }else{
              echo " ID manquant !";
              var_dump($_SESSION);
            }  
            
            ?>


            Tu vas créer un nouveau fichier (clearSession.php) dans lequel tu vas écrire le code
            <?php
            // Fichier clearSession.php
            
            session_start();
            
            $_SESSION['id'] = null;
            $_SESSION['pseudo'] = null;
            $_SESSION['pos_x'] = null;
            $_SESSION['pos_y'] = null;
            
            unset($_SESSION);
            

            Une fois que c'est fait, tu vas l'appeler directement en mettant l'url dans ton navigateur

            Puis, une fois que les variables de sessions seront supprimées ... tu recommence tout depuis l'étape 1 ( register )
        4. au 4e test, en bdd tout semble ok, j'ai du rater 1 truc. je vide la table et recommence.
          1. c'est bon Jordanne ça marche !!!!
            en fait, j'avais utilisé un register_avxx.php ou j'avais laissé le lastinsertid....

            Merci pour ta patience.
            1. Modérateur
              Pense à marquer le sujet en RESOLU.

              Et surtout ... pense, dans tes prochains codes à
              - Bien les identer
              - Les écrire sous la même forme que ceux que je t'ai donné .. en activant l'affichage des erreurs php, la gestion des erreurs PDO, la récupération PROPRE des variables AVANT de les utiliser

              ça te fera gagner du temps pour le debugage ... et nous aussi quand tu viendras nous demander
          2. Pas de soucis. Ca me fait une bonne base de modèle de script. J'avais codé en 2006 et j'ai ressorti ce projet de jeu. C'était php4, beaucoup plus facile que PDO.
            1. Modérateur
              C'était php4, beaucoup plus facile que PDO.

              PHP c'est le Langage de programmation
              PDO .. une extension ( de php) qui permet de se connecter aux bases de données et les manipuler.

              Quoi qu'il en soit.. le souci se situant dans le fonctionnement de ton script (au n nveau du langage php , la structure du code ..) ... rien à voir avec le fait d'utiliser PDO.