[RESOLU] soucis variable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] soucis variable

Re: soucis variable

par nestor94 » 21 nov. 2021, 19:52

Trouvé !
<?php
session_start();
require_once 'config.php';

$idMembreSession = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;

$pdostat = $bdd->prepare('SELECT * FROM membres WHERE id = :id');
$pdostat->bindvalue(':id', $idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();
if (empty($membreSession)) {
    header('Location: /connexion.php');
    exit();
}
$pos_x_ville = $membreSession['pos_x_ville'];
$pos_y_ville =  $membreSession['pos_y_ville'];


$pdostat = $bdd->prepare("SELECT nom_ville FROM villes LEFT JOIN membres ON villes.pos_x_map = membres.pos_x_enter_ville AND villes.pos_y_map = membres.pos_y_enter_ville WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();    
if (!empty($membreSession)) { 
$nom_ville = $membreSession['nom_ville'];
}
$idMembreSelect = !empty($_GET['id']) ? $_GET['id'] : NULL;

// récupération en bdd du membre sélectionné dans l'url (si il est toujours à proximité du membre connecté en session et pas en vacances)
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id = :id AND (pos_x_ville ='$pos_x_ville' AND pos_y_ville ='$pos_y_ville') AND vacance = 'OFF' AND situation='$nom_ville'");
$pdostat->bindvalue(':id', $idMembreSelect, PDO::PARAM_INT);
$pdostat->execute();
$membreSelect = $pdostat->fetch();
?>
(la gestion des erreur PDO est active dans le script appelé au début (config.php)

Re: soucis variable

par nestor94 » 21 nov. 2021, 19:22

Alors, j'ai effectué quelques modifications en déclarant pos_x_ville et pos_y ville au préalable.
Les var_dump laissés en commentaire sont OK. Idem pour celui avec IdMembreSelect.
C'est donc à la derniere requète que se situe toujours le problème.
$pdostat = $bdd->prepare('SELECT * FROM membres WHERE id = :id');
$pdostat->bindvalue(':id', $idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();
if (empty($membreSession)) {
    header('Location: /connexion.php');
    exit();
}
$pos_x_ville = $membreSession['pos_x_ville'];
$pos_y_ville =  $membreSession['pos_y_ville'];
//var_dump($membreSession['pos_x_ville']);
//var_dump($membreSession['pos_y_ville']);


$pdostat = $bdd->prepare("SELECT nom_ville FROM villes LEFT JOIN membres ON villes.pos_x_map = membres.pos_x_enter_ville AND villes.pos_y_map = membres.pos_y_enter_ville WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();    
if (!empty($membreSession)) { 
$nom_ville = $membreSession['nom_ville'];
}
$idMembreSelect = !empty($_GET['id']) ? $_GET['id'] : NULL;
//var_dump($idMembreSelect);

// récupération en bdd du membre sélectionné dans l'url (si il est toujours à proximité du membre connecté en session et pas en vacances)
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id = :id AND (pos_x_ville ='$pos_x_ville' AND pos_y_ville ='$pos_y_ville') AND vacance = 'OFF' AND situation='$nom_ville'");
$pdostat->bindvalue(':id', $idMembreSelect, PDO::PARAM_INT);
//$pdostat->bindvalue(':pos_x_ville', $membreSession['pos_x_ville'], PDO::PARAM_INT);
//$pdostat->bindvalue(':pos_y_ville', $membreSession['pos_y_ville'], PDO::PARAM_INT);
$pdostat->execute();
$membreSelect = $pdostat->fetch();
Si je réactive les deux lignes de bindvalue, j'ai une erreur supplémentaire.

Re: soucis variable

par @rthur » 21 nov. 2021, 13:54

Il faut que tu avances davantage dans ton debugage :


Le message d'erreur :
Undefined index: pos_x_ville in C:\wamp64\www\action_ville_perso_id.php on line 24
t'indique qu'à la ligne 24, $membreSession['pos_x_ville'] n'a pas de valeur.
Tu peux d'ailleurs le vérifier par un
var_dump($membreSession['pos_x_ville']);
Du coup il faut que tu remontes dans ton code pour savoir où est défini $membreSession et pourquoi $membreSession['pos_x_ville'] n'a pas de valeur.

Vu que tu utilises PDO, n'oublies pas d'activer la gestion des erreurs en WARNING, ça aide à debuguer :
https://www.php.net/manual/fr/pdo.error-handling.php

soucis variable

par nestor94 » 21 nov. 2021, 12:43

$idMembreSession = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;

$pdostat = $bdd->prepare('SELECT * FROM membres WHERE id = :id');
$pdostat->bindvalue(':id', $idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();

$idMembreSelect = !empty($_GET['id']) ? $_GET['id'] : NULL;

$pdostat = $bdd->prepare("SELECT nom_ville FROM villes LEFT JOIN membres ON villes.pos_x_map = membres.pos_x_enter_ville AND villes.pos_y_map = membres.pos_y_enter_ville WHERE membres.id=:id");
$pdostat->bindvalue(':id',$idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();    
if (!empty($membreSession)) { 
$nom_ville = $membreSession['nom_ville'];
}
// récupération en bdd du membre sélectionné dans l'url (si il est toujours à proximité du membre connecté en session et pas en vacances)
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id = :id AND (pos_x_ville =:pos_x_ville AND pos_y_ville =:pos_y_ville) AND vacance = 'OFF' AND situation='$nom_ville'");
$pdostat->bindvalue(':id', $idMembreSelect, PDO::PARAM_INT);
$pdostat->bindvalue(':pos_x_ville', $membreSession['pos_x_ville'], PDO::PARAM_INT);
$pdostat->bindvalue(':pos_y_ville', $membreSession['pos_y_ville'], PDO::PARAM_INT);
$pdostat->execute();
$membreSelect = $pdostat->fetch();
Les variables pos_x_ville et pos_y_ville ne passent pas.

Undefined index: pos_x_ville in C:\wamp64\www\action_ville_perso_id.php on line 24
( ! ) Notice: Undefined index: pos_y_ville in C:\wamp64\www\action_ville_perso_id.php on line 25

echo et var_dump donnent NULL...

Ce script fonctionne pourtant avec pos_x et pos_y sur une autre map de jeu (voir post du mois d'aout)