Résultat d'un calcul dans une variable [Résolu]

Signaler
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021
-
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
-
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

Messages postés
1710
Date d'inscription
samedi 12 septembre 2020
Statut
Membre
Dernière intervention
13 mai 2021
137
Salut,

Oui car cette fonction retourne un entier : https://www.php.net/manual/en/function.mt-rand.php

Et tu le fais déjà, 2 fois, avec les variables
$pos_x
et
$pos_y
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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;			
?>
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
3 560
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 !!
}
  
?>


Cordialement,
Jordane
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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)
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
3 560
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 ?
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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?
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
3 560
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...)
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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.
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
3 560
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 ??
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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 !!
}
  
?>
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
3 560
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 !
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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();
}
?>
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
3 560
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();
                }     
              }
            }
          }
        }
      }
    }
  }
}
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

Inscription OK (script + BDD)
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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.
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
3 560
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>
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
3 560

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 )
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

au 4e test, en bdd tout semble ok, j'ai du rater 1 truc. je vide la table et recommence.
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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.
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
3 560
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
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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.
Messages postés
32980
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 juin 2021
3 560
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.