Problème avec une requete SELECT

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

  1. Modérateur
    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 ??

    0
    1. Modérateur
      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 
      
      0
  2. 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';
    0
    1. Modérateur
      Toujours pas clair....

      Tu as regardé ma proposition ??
      Ca ne correspond pas ?
      0
  3. 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
    0
    1. Modérateur
      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 !!! ???!!!
      0
  4. 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
    0
    1. Modérateur
      Il suffit de préfixe et avec T1
      SELECT T1.avatar
      0
  5. $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...
    0
    1. Modérateur
      Ç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..
      0
  6. 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
    0
    1. Modérateur
      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...
      0