JeuWeb - Crée ton jeu par navigateur
Transfert et recupération de variable - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Transfert et recupération de variable (/showthread.php?tid=3367)



Transfert et recupération de variable - Rouge - 01-12-2008

Bonsoir,

J'ai 1 petit soucis pour récupérer convenablement l'id d'un joueur afin de pouvoir par la suite interagir avec. EN FAIT, c'est toujours l'id du joueur "appelant" qui apparait. voici le fichier source:

Code :
<?php
// --- pour finir, on affiche les autres persos s'il y en a
$rsc = mysql_query("SELECT id, avatar FROM membres WHERE pause='NON' AND posx={$rsa['posx']} AND posy={$rsa['posy']};") or die(mysql_error());

while($data = mysql_fetch_assoc($rsc)):
    ?>
    
    <td width="100%" align="center" >
        <a href="affiche_aspect_perso.php?id=<?php echo $data['id']; ?>"><img src="./avatars/<?php echo $data['avatar']; ?>" border="0" alt="" /></a>
    </td>
    
    <?php
endwhile;
?>

et le fichier destination affiche_aspect_perso.php:
Code :
<?php
session_start();
$id = $data['id'];
include 'connexion.php';
$req = mysql_query("SELECT avatar, pseudo FROM membres WHERE id = $id; ") or die(mysql_error());
$data= mysql_fetch_assoc($req);
$avatar= $data['avatar'];
$pseudo= $data['pseudo'];
?>
<html>
<head>
<title>aspect perso</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
a:link { text-decoration:none; font-weight:bold; color:#000000; }
a:visited { text-decoration:none; font-weight:bold; color:#000000; }
a:hover { text-decoration:none; font-weight:bold; background-color:#FF0000; }
a:active { text-decoration:none; font-weight:bold; background-color:#000000; }
-->
</style>

</head>
<body background="image/fond.jpg" bgproperties="fixed">
<center>
<table width="70%" border="2">
<td width="2"><center><img src="./avatars/<?php echo $data['avatar'];?>" alt="" /></center>
<td width="130"><center><strong><font face="Book Antiqua"><?php echo $data['pseudo'];?></center>
</td></table>
je suis le joueur "a" et les joueurs b, c, d sont aussi présents. le script affiche toujours mon avatar et mon pseudo ("a") alors que j'ai cliqué sur le "c" par exemple....


RE: transfert et recupération variable - keke - 01-12-2008

Coucou,

J'ai été surpris par la notion du endwhile :
http://www.manuelphp.com/php/migration.while.php

Je ne l'ai jamais testé, mais il semble que ce soit une manière de faire...

Perso, j'utilise la manière suivante :
Code :
while ($data = mysql_fetch_assoc($rsc))
{
   // du code
}

Sinon pour ton erreur, elle vient de là :

Code :
$id = $data['id'];

If faut que tu remplace par :
Code :
$id = $_REQUEST['id'];

Je pense que ça marchera mieux.
En effet, la variable $data n'est pas transmise à ton fichier destination. Elle est donc toujours nul car non initialisée.
La variable _REQUEST[] est une variable système qui prend pour valeur les champs dans l'URL.

Sache cependant que ta méthode n'est pas propre et permet à tous les petits malins de connaitre toutes les informations sur tous tes joueurs.

Je t'encourage à utiliser des boutons (FORMS) et à te pencher sur le débat : POST ou GET...

<edit> Je vois que tu initialises des variables de session ... se pourrait-il que tu ne nous ai pas donnée toutes les informations nécessaires à la compréhension du problème ?
En effet, si tu souhaites utiliser les variables de session, ce que je t'ai donné précédemment ne risque pas de t'aider.

Si tu veux stocker la variable DATA en variable de session, il faut à un moment faire :
$_SESSION[data] = $data.

Je t'encourage à te pencher un peu plus sur la méthode d'utilisation des variables de sessions... si c'est la solution que tu as envisagée. A la manière de la solution des formulaire, elle permettrait de répondre à ton problème ... mais je ne t'encourage pas à aller dans ce sens.
</edit>

Bon courage à toi !

kéké


RE: transfert et recupération variable - Rouge - 03-12-2008

Tu me donnes quelques soluces mais tu me dis que aucune n'est pérenne?

"Sinon pour ton erreur,

If faut que tu remplace par :
Code :
$id = $_REQUEST['id'];

Je pense que ça marchera mieux."
En effet, la variable $data n'est pas transmise à ton fichier destination. Elle est donc toujours nul car non initialisée.
La variable _REQUEST[] est une variable système qui prend pour valeur les champs dans l'URL.

Sache cependant que ta méthode n'est pas propre et permet à tous les petits malins de connaitre toutes les informations sur tous tes joueurs.

Alors comment éviter celà et quel serait le bon script?

"Je t'encourage à utiliser des boutons (FORMS) et à te pencher sur le débat : POST ou GET..." (faut que je teste celà?)


"Si tu veux stocker la variable DATA en variable de session, il faut à un moment faire :
$_SESSION[data] = $data."

Lorsque je passe par la variable de session $id= $_SESSION['id'], le résultat est identique, c'est toujours le "joueur appelant" qui apparait lorsque l'on clique sur 1 autre joueur.

:heuuu:


RE: transfert et recupération variable - Sephi-Chan - 03-12-2008

Sois je ne comprends pas, sois le problème est bien plus simple qu'il n'y paraît…

Tu as une liste des joueurs présents au même endroit que le joueur connecté.
Tu souhaites permettre à ces personnages proches les uns des autres de s'inspecter.

Il te suffit donc comme tu le fais de passer l'identifiant du joueur que l'on souhaite inspecter dans l'URL.
Ensuite, sur la page d'affichage, tu vérifie si le joueur qui inspecte est bien autorisé à inspecter le joueur choisi. Pour cela, il te suffit de comparer les coordonnées du joueur connecté (soit elles sont stockées en session, soit elles sont récupérées par une requête SQL en utilisant l'identifiant du joueur connecté lui-même stocké en session) avec celles du joueur qu'il souhaite inspecter.


Sephi-Chan