Résultat d'un calcul dans une variable

Résolu/Fermé
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021 - 3 mars 2021 à 01:05
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 - 4 mars 2021 à 08:50
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);
A voir également:

15 réponses

dachiasse Messages postés 1709 Date d'inscription samedi 12 septembre 2020 Statut Membre Dernière intervention 13 mai 2021 149
Modifié le 3 mars 2021 à 01:22
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
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
3 mars 2021 à 09:47
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;			
?>
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
Modifié le 3 mars 2021 à 09:55
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 !!
}
  
?>


0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
Modifié le 3 mars 2021 à 19:02
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)
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
3 mars 2021 à 19:09
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
Modifié le 3 mars 2021 à 21:48
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?
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
3 mars 2021 à 21:51
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...)
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
3 mars 2021 à 22:11
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.
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
Modifié le 3 mars 2021 à 22:33
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 ??
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
Modifié le 3 mars 2021 à 22:24
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 !!
}
  
?>
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
3 mars 2021 à 22:44
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 !
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
3 mars 2021 à 23:29
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();
}
?>
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
3 mars 2021 à 23:32
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
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
3 mars 2021 à 23:43
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();
                }     
              }
            }
          }
        }
      }
    }
  }
}
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
3 mars 2021 à 23:47
Inscription OK (script + BDD)
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
3 mars 2021 à 23:52
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.
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
3 mars 2021 à 23:57
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>
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
4 mars 2021 à 00:13
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
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
4 mars 2021 à 00:26

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 )
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
4 mars 2021 à 00:20
au 4e test, en bdd tout semble ok, j'ai du rater 1 truc. je vide la table et recommence.
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
Modifié le 4 mars 2021 à 00:35
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.
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
4 mars 2021 à 00:37
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
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
4 mars 2021 à 00:48
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.
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
4 mars 2021 à 08:50
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.
0