JeuWeb - Crée ton jeu par navigateur
Requête qui ne fait pas tout - 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 : Requête qui ne fait pas tout (/showthread.php?tid=3270)

Pages : 1 2


Requête qui ne fait pas tout - Rouge - 10-11-2008

Suite à une requète qui ne fonctionnait plus :heuuu:
le script a été modifié et donne ce qui suit.
Mais bien sur, le résultat escompté (à savoir rediriger
vers la bonne page "relief" ou se trouve le joueur)

n'est pas au rdv.
Au lieu de celà, je tombe toujours sur la page de "create_relief.php."

Code PHP :
<?php

session_start
();

$id = $_SESSION['id'];

require_once
'connexion.php';



$res = "SELECT posx, posy FROM membres WHERE id = '$id'";

$result = mysql_query($res) or die(mysql_error());

$rsa = mysql_fetch_assoc($result);



$posx = $rsa['posx'];

$posy = $rsa['posy'];



$req = "SELECT image FROM map WHERE posx = '$posx' AND posy = '$posy'";

$data = mysql_query($req) or die(mysql_error());



$localisation = basename($data['image'], '.gif');



if (
in_array($localisation, array('prairie', 'foret', 'lac', 'piste', 'riviere', 'champ', 'colline', 'desert', 'ville')))
{

if (
$localisation == 'ville' ) {

$sql = "UPDATE membres SET localisation= 'aux portes de la ville' WHERE id = '$id'";

$_SESSION['localisation']= 'aux portes de la ville';

}

else {

$sql = "UPDATE membres SET localisation= '$localisation' WHERE id = '$id'";

$_SESSION['localisation'] = $localisation;

}

mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());

include
'quel_'.$localisation.'.php' ;

}

else {


include
'create_relief.php';
}

mysql_close();

?>



RE: requete qui fait pas tout - Raoull - 10-11-2008

Je n'ai pas été voir plus bas, mais ceci pose déjà problème :

Code PHP :
<?php 
$data
= mysql_query($req) or die(mysql_error());

$localisation = basename($data['image'], '.gif');

La fonction mysql_query() renvoie une ressource (à exploiter ensuite) ou bien FALSE en cas d'erreur.

Ton problème vient donc que tu ne traite pas la réponse de mysql_query() correctement, avec par exemple mysql_fetch_array() ou mysql_result() ou autre...


RE: requete qui fait pas tout - Rouge - 11-11-2008

J'ai modifié:
Code PHP :
<?php

session_start
();

$id = $_SESSION['id'];

require_once
'connexion.php';



$res = "SELECT posx, posy FROM membres WHERE id = '$id'";

$result = mysql_query($res) or die(mysql_error());

$rsa = mysql_fetch_assoc($result);



$posx = $rsa['posx'];

$posy = $rsa['posy'];



$req = "SELECT image FROM map WHERE posx = '$posx' AND posy = '$posy'";

$res = mysql_query($req) or die(mysql_error());

$data = mysql_fetch_assoc($res);

$image = $data['image'];

$localisation = basename($data['image'], '.gif');



if (
in_array($localisation, array('prairie', 'foret', 'lac', 'piste', 'riviere', 'champ', 'colline', 'desert', 'ville')))
{

if (
$localisation == 'ville' ) {

$sql = "UPDATE membres SET localisation= 'aux portes de la ville' WHERE id = '$id'";

$_SESSION['localisation']= 'aux portes de la ville';

}

else {

$sql = "UPDATE membres SET localisation= '$localisation' WHERE id = '$id'";

$_SESSION['localisation'] = $localisation;

}

mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());

include
'quel_'.$localisation.'.php' ;

}

else {


include
'create_relief.php';
}

mysql_close();

?>

et c'est 1 message d'eereur ainsi:

You have an error in your SQL syntax.


RE: requete qui fait pas tout - Sephi-Chan - 11-11-2008

D'accord, mais sur quel requête ? Indique le message complet.


Sephi-Chan


RE: requete qui fait pas tout - Rouge - 12-11-2008

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


RE: requete qui fait pas tout - Sephi-Chan - 12-11-2008

Je ne t'en voudrais pas si tu réponds à ma question.
Sephi-Chan a écrit :D'accord, mais sur quel requête ?

Pour le savoir, indique simplement dans tes die() quelque chose, le numéro de leur ligne, par exemple.


Sephi-Chan


RE: requete qui fait pas tout - Rouge - 12-11-2008

Il y a un peu de mieux en modifiant cela:

Code PHP :
<?php 
$res
= "SELECT posx, posy FROM membres WHERE id = '.$id.'";
$req = "SELECT image FROM map WHERE posx = '.$posx.' AND posy = '.$posy.'";
(rajouts de points autour des variables)

mais le script redirige toujours vers create_relief.php au lieu de
include 'quel_'.$localisation.'.php' ;
(en l'occurence, cela devrait pointer vers quel_piste.php)

Au passage, est ce que cette syntaxe (avec le array et $localisation + tous les cas de figure possibles) est correcte?
Je pose la question car cette soluce m'a été soufflée ailleurs :heuuu:


RE: requete qui fait pas tout - Sephi-Chan - 12-11-2008

En fait, tu ne dois pas mettre de guillemets simples autour de la valeur d'un champ numérique. Ils ne servent qu'à entourer les chaînes de caractère et les dates.

Ce qui donne respectivement :
Code PHP :
<?php 
$res
= "SELECT posx, posy FROM membres WHERE id = $id;";
$req = "SELECT image FROM map WHERE posx = $posx AND posy = $posy;";

Concernant ton problème de condition, je t'invite vivement à regarder ce qui est renvoyé par une expression à l'aide de la fonction var_dump().

Dans ton cas, par exemple, tu aurais plus de facilité à déboguer si tu remplaçais cette portion de code :
Code PHP :
<?php 
if ( in_array($localisation, array('prairie', 'foret', 'lac', 'piste', 'riviere', 'champ', 'colline', 'desert', 'ville')))

Par :
Code PHP :
<?php 
var_dump
($localisation);
$inArray = in_array(
$localisation,
array(
'prairie', 'foret', 'lac', 'piste', 'riviere', 'champ', 'colline', 'desert', 'ville')
);
var_dump($inArray);
if(
$inArray === true){


Sephi-Chan


RE: requete qui fait pas tout - pascal - 12-11-2008

tu peux trouver des ressources pour faciliter ton utilisation du SQL dans ce tutorial :
http://wiki.jeuweb.org/tutoprog/bonnes_pratiques_sql

ça donne des astuces et évite de perdre du temps.

A+

Pascal


RE: requete qui fait pas tout - Rouge - 13-11-2008

Sephi-Chan, avec ta modif, le script redirige toujours vers create_relief.php mais affiche cela en haut de page:

string(0) "" bool(false)