Problème avec une requete SELECT

Signaler
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021
-
Messages postés
32416
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
-
Bonjour,
Je ne vois pas comment coder correctement cette demande...
$sql = "SELECT avatar FROM membres WHERE pos_x AND pos_y =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$avatar = $resultat['avatar'];
?>


le but étant de sélectionner tous les avatars éventuels ayant la même position que $id

6 réponses

Messages postés
32416
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 477
Bonjour,

- Si ta question concerne une requête SQL .. c'est dans le forum MysQL qu'il faut la poser !!!!
Je la déplace au bon endroit ( encore une fois ! )


- Qu'est-ce contient ta variable $id ? A quoi fait elle référence ?

Si j'arrive à traduire ta question.. quand tu dis "La même position que l'id ..." tu veux dire la même position => donc mêmes valeurs pos_x et pos_y qu'une autre membre ayant pour id celui que tu veux envoyer en paramètre ??


Messages postés
32416
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 477
Si c'est bien ce que j'ai compris, tu peux donc utiliser un inner Join
SELECT 
     select_list
FROM 
     t1
INNER JOIN t2 ON join_condition;


donc un truc du genre
SELECT avatar 
FROM membres T1
INNER JOIN  membres T2 ON  T1.pos_x = T2.pos_x AND T1.pos_y = T2.pos_y
WHERE T2.id = :id 
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

le soucis? c'est que je pars d'une seule table...
exemple avec les pseudos

table membres
PSEUDO POS_X POS_Y etc....
nestor pos_x pos_y (exemple 7 7)
jordane pos_x pos_y (exemple 7 7)
remy pos_x pos_y (exemple 7 9)

je souhaite sélectionner les pseudos qui sont sur la même position que moi (7 7)

SELECT bla bla bla
echo 'jordane';
Messages postés
32416
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 477
Toujours pas clair....

Tu as regardé ma proposition ??
Ca ne correspond pas ?
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

Non, désolé je n'ai qu'une table (membres)

SELECT avatar FROM membres T1 INNER JOIN membres T2 ??

je souhaiterai parcourir toute la table membres pour affichage (éventuel) des membres ayant la meme pos_x et pos_y
Messages postés
32416
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 477
Je sais que tu n'as qu'une table ..... et c'est bien en partant de ce constat que je t'ai proposé la requête n'utilises qu'une seule table ...
Donc je réitère ma question... AS TU TESTE LA REQUETE QUE JE T'AI DONNE avant de dire que ça ne marche pas !!! ???!!!
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

oui, oui (ne crie pas) je l'ai testé ce matin telle que:

$sql = "SELECT avatar FROM membres T1 INNER JOIN  membres T2 ON  T1.pos_x = T2.pos_x AND T1.pos_y = T2.pos_y WHERE T2.id = :id ";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
//$resultat = $pdostat->fetch();    
//$avatar = $resultat['avatar'];
while ($avatar = $pdostat->fetch(PDO::FETCH_OBJ))
{
  echo $avatar ;
}


PDOException: SQLSTATE[23000]: Integrity constraint violation: 1052 Champ: 'avatar' dans field list est ambigu in
Messages postés
32416
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 477
Il suffit de préfixe et avec T1
SELECT T1.avatar
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

$sql = "SELECT T1.avatar FROM membres T1 INNER JOIN  membres T2 ON  T1.pos_x = T2.pos_x AND T1.pos_y = T2.pos_y  WHERE T2.id = :id ";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
while ($avatar = $pdostat->fetch(PDO::FETCH_OBJ))
{
 echo '<img src="'.$avatar.'">';  
}


Catchable fatal error: Object of class stdClass could not be converted to string in C:\wamp...
Messages postés
32416
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 477
Ça n'a rien à voir avec la Requête...
Mais avec l'utilisation que tu fais du résultat de cette requête...
C'est tà variable $avatar qui n'est pas bonne.. du moins.. pas complette. Au niveau de ta balise img..
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

j'ai creusé un peu mais pas au bon endroit?

$sql = "SELECT T1.avatar FROM membres.T1 INNER JOIN  membres.T2 ON  T1.pos_x = T2.pos_x AND T1.pos_y = T2.pos_y  WHERE T2.id = :id ";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
while ($avatar = $pdostat->fetch(PDO::FETCH_OBJ))
{
 echo '<img src="'.$avatar.'">' ->fetch();  
}


Base table or view not found: 1146 La table 'membres.t1' n'existe pas in C:\wamp64\www\map_detail.php
Messages postés
32416
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 mai 2021
3 477
Si tu n'es pas capable de faire de simples copier/coller ni de te relire alors qu'il n'y a qu'une seule ligne de code... là je ne peux plus rien pour toi...