Page 1 sur 2
pb requète avec like
Posté : 26 févr. 2007, 23:03
par YVES
bonsoir,
j'ai un petit soucis avec la requète suivante
au niveau du "LIKE"...
//Là, on va chercher la ressource de la case sur la map qui correspond au X/Y de ton perso
//$rsb = mysql_query("SELECT ressource FROM map LIKE '%outi%' WHERE posx=".$rsa['posx']." AND posy=".$rsa['posy']"") or die(mysql_error());
$rsb = "SELECT ressource FROM map LIKE '%outi%' WHERE posx='.$rsa['posx'].' AND posy='.$rsa['posy']'" or die(mysql_error());
$data = mysql_fetch_assoc($rsb);
$ressource= $data['ressource'];
//Là, on va chercher l'emplacement qui peut accueillir ladite ressource
$sql= "SELECT outil FROM membres WHERE id = ". $id;
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
etc ....................................
en table, le "outi" (du LIKE) est sous cette forme:
chemin de l'image= ./outil/marteau.gif( par exemple)
Posté : 26 févr. 2007, 23:07
par thehawk
quel est l'erreur afficher ?
Posté : 26 févr. 2007, 23:31
par Truc
Un LIKE sur une table ?
Posté : 26 févr. 2007, 23:52
par guillaume40
Je pense que ça vient de l'ordre essaye ça
//Là, on va chercher la ressource de la case sur la map qui correspond au X/Y de ton perso
//$rsb = mysql_query("SELECT ressource FROM map WHERE posx=".$rsa['posx']." AND posy=".$rsa['posy']" LIKE '%outi%'") or die(mysql_error());
$rsb = "SELECT ressource FROM map LIKE '%outi%' WHERE posx='.$rsa['posx'].' AND posy='.$rsa['posy']'" or die(mysql_error());
$data = mysql_fetch_assoc($rsb);
$ressource= $data['ressource'];
//Là, on va chercher l'emplacement qui peut accueillir ladite ressource
$sql= "SELECT outil FROM membres WHERE id = ". $id;
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
etc ....................................
Posté : 26 févr. 2007, 23:57
par albat
Quelqu'un a lu la remarque de
Truc ?
Non, parce que... on sait jamais... des fois qu'il indiquerait où se trouve l'erreur... 
Posté : 27 févr. 2007, 00:06
par zeus
Aller, je vais vous donner LE indice qu'il faut :
regarder l'ordre de cette partie :
FROM map LIKE '%outi%' WHERE
Posté : 27 févr. 2007, 00:31
par thehawk
j'ai tellement la tete dans mes upload que j'ai meme pas vu ...
i'm sorry
Il faut simplement mettre le LIKE apres le WHERE
SELECT ressource FROM map WHERE posx='.$rsa['posx'].' AND posy='.$rsa['posy']' LIKE '%outi%'" or die(mysql_error());
Posté : 27 févr. 2007, 00:35
par zeus
j'ai tellement la tete dans mes upload que j'ai meme pas vu ...
i'm sorry
Il faut simplement mettre le LIKE apres le WHERE
SELECT ressource FROM map WHERE posx='.$rsa['posx'].' AND posy='.$rsa['posy']' LIKE '%outi%'" or die(mysql_error());
Je suis désolé
thehawk, mais un
tout seul dans un where, ça n'a aucun sens
Il faut un nom de colonne avant

Posté : 27 févr. 2007, 00:42
par thehawk
je dsl j'ai du mal a garder les yeux ouvert ...
SELECT * FROM article WHERE posx LIKE '%".$rsa['posx']."%' AND posy LIKE '%".$rsa['posy']."%');
il faute juste revoir les guillemet de mon code car j'ai un doute ...
Posté : 27 févr. 2007, 11:50
par Truc
je dsl j'ai du mal a garder les yeux ouvert ...
Stresse pas... c'est pas un examen
Dans cete dernière version tu as changé la requête de départ et supprimé cette fameuse condition avec le LIKE.
Posté : 27 févr. 2007, 12:46
par thehawk
Oups j'ai repris un code que j'avais deja programé .... je suis dsl et ouf je sais bien que je ne suis pas en exam mais j aime pas faire des erreur d'inatention mais apparamant il ne faut pas trop en demander passer une certaine erreur ....
SELECT ressource FROM map WHERE posx LIKE '%".$rsa['posx']."%' AND posy LIKE '%".$rsa['posy']."%');
La c'est mieux ? et YVES on te voit pas beaucoup ...
Posté : 27 févr. 2007, 13:00
par Ryle
C'est mieux sur la syntaxe, mais pas grand chose à voir avec la requête de départ

on peut supposer que les posx et posy sont des coordonnées donc ont des valeurs fixes et ne nécessitent pas des chaines approximatives...
"SELECT ressource FROM map
WHERE posx=".$rsa['posx']."
AND posy=".$rsa['posy']."
AND champCheminImage LIKE '%outi%' "
Le mieux étant effectivement d'attendre un retour de Yves

Posté : 27 févr. 2007, 22:31
par YVES
Me revoilà
sacré débat, en fait, je pense que la soluce de Ryle semble la plus appropriée
à mon sujet
heu, "champCheminImage" dans la table c'est "ressource"......, donc j'ai zappé ce paramètre ainsi:
"SELECT ressource FROM map
WHERE posx=".$rsa['posx']."
AND posy=".$rsa['posy']."
LIKE '%outi%' "
resultat= page blanche.
Posté : 27 févr. 2007, 22:39
par YVES
voici le code complet
<?php
session_start();
$id = $_SESSION['id'];
include 'connexion.php';
//on va chercher la position du joueur
$requete = mysql_query("SELECT posx, posy FROM membres WHERE id = ". $id .";") or die(mysql_error());
$rsa= mysql_fetch_assoc($requete);
$posx = $rsa['posx'];
$posy = $rsa['posy'];
//Là, on va chercher la ressource de la case sur la map qui correspond au X/Y de ton perso
$rsb = "SELECT ressource FROM map WHERE posx=".$rsa['posx']."AND posy=".$rsa['posy']." LIKE '%outi%' "
$data = mysql_fetch_assoc($rsb);
$ressource= $data['ressource'];
//Là, on va chercher l'emplacement qui peut accueillir ladite ressource
$sql= "SELECT outil FROM membres WHERE id = ". $id;
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
$data = mysql_fetch_object($res);
// $data = $row->outil;
if (($data== './objet/rien.gif')){
$sql ="UPDATE membres SET outil= '$ressource', action='images/jetonrouge.gif',
exp=exp+0.1, hab=hab+0.1, uoutil=uoutil+0.1 WHERE id = ". $id;
mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
{
$_SESSION['outil']=$ressource;
$_SESSION['action']='images/jetonrouge.gif';
$_SESSION['exp']=$_SESSION['exp']+0.1;
$_SESSION['hab']=$_SESSION['hab']+0.1;
$_SESSION['uoutil']= $_SESSION['uoutil']+0.1;
}
else
{
echo'PAS LE BON TRUC MAIS A POURSUIVRE';
}
}
mysql_close();
?>
Posté : 27 févr. 2007, 23:05
par jojolapine
Je suis désolé thehawk, mais un
Code:
like '%outi%"
tout seul dans un where, ça n'a aucun sens Confused
décidément zeus parle dans le vent ce soir
