Souci jointure

Résolu
Bonsoir,

Je viens à nouveau vous car, j'ai un autre souci qui est le suivant :

J'ai fait une jointure de table afin de pouvoir afficher une liste de chose que les membres ont mais le souci c'est que la liste est vide alors qu'elle devrait contenir des choses.

Voici le code correspondant :

Suppression de Pokemon >>
<form method="post" action="moderation.php">
 <label for="membres">A quel membre veux-tu faire une suppression de pokemon ?</label><br />
 <select name="membres" id="membres">
  <?php
  $reponse = $bdd->query('SELECT * FROM membres');

  while ($donnees = $reponse->fetch()) {
   ?>
   <option value=" <?php echo $donnees['ID']; ?>"> <?php echo $donnees['ID'];  echo $donnees['pseudo']; ?></option>
   <?php
  }

  $reponse->closeCursor();

  ?>
 </select>
 <input type="submit" name="envoyer" value="Choisir ce membre" />
</form>
   <?php
    if ($_POST['envoyer']) {
  $sql = $bdd->query("SELECT transfertspokemon.ID AS id_poke, transfertspokemon.membre_id, transfertspokemon.no, 
  transfertspokemon.niveau, transfertspokemon.lieu, transfertspokemon.sexe, transfertspokemon.points, 
  transfertspokemon.shiney, membres.ID AS id_membre, membres.pseudo 
  FROM transfertspokemon 
  INNER JOIN membres 
  ON transfertspokemon.membre_id = membres.ID WHERE membre_id='".$_POST['id_membre']."'");
  echo "<form name='pok-delete' method='post' action='moderation.php'>";
   echo "<select name='pokemon'>";
    while($don = $sql->fetch()) {
     echo "<option value='".$don['id_poke']."' for='item'><b>".($don['no'])."</b></option>";
    }
   echo "</select>";
  echo "</form>";
    } else {
        echo 'Tu doit selectionner un membres';
    }
   
   if (!empty($_POST['pok-delete'])) {
  // REQUETE DE SUPPRESSION
  $suppr = $_POST['pokemon'];
  $sql = $bdd->execute("DELETE FROM transfertspokemon WHERE ID='".$suppr."'");
   }
?>


Si vous avez une idée, se serais sympa.

Merci par avance.

2 réponses

  1. Salut,

    En complément de la réponse de jordane45, l'attribut name de ta balise select est égal à "membres", or dans le traitement de ton formulaire tu essayes de récupérer le paramètre post "id_membres".

    Bonne journée
    1. en faite ça fontionne j'avais comme l'a di pitet mis le mauvais select. bref merci à toi.

      Heu par contre, j'ai un souci dans ma requete de suppression :

      if (!empty($_POST['pok-delete'])) {
        // REQUETE DE SUPPRESSION
        $suppr = $_POST['pok-delete'];
        $sql = $bdd->exec("DELETE FROM transfertspokemon WHERE '".$_POST['id_poke']."'='".$suppr."'");
        echo "</br>Le pokemon à bien été supprimé";


      une idée ?
    2. Quel est le soucis ? Un message d'erreur ?
      Que vaut $_POST['id_poke'] et $_POST['pok-delete'] ?
    3. heu elle ne m'affiche rien du tous donc ça doit pas être les bonne variable du coup.
    4. j'ai aucune erreur, le message contenu dans le "echo" s'affiche bien par contre l'action qu'elle doit effectuer ne s'éffectue pas soit la suppression.
    5. une idée ?
  2. Modérateur
    Même réponse que pour tes messages précédents !

    1 - Récupère PROPREMENT les variables AVANT de les utiliser
    $id_membre = isset($_POST['id_membre']) ? $_POST['id_membre'] : NULL;
    


    2 - TESTES ta requête en direct dans ta BDD (en prenant soin de remplacer les variables par des valeurs existantes) et regarde ce que ça donne.

    N'hésites pas non plus à faire des retours à la ligne dans ta requête histoire qu'elle soit plus lisible.
    Penses également à utiliser des ALIAS pour les noms des tables (là encore pour faciliter la lecture de ta requête)
    
    
    $sql = "SELECT T.ID AS id_poke
                  ,T.membre_id
                   , T.no
                   , T.niveau
                   , T.lieu
                   , T.sexe
                   , T.points
                   , T.shiney
                   , M.ID AS id_membre
                   , M.pseudo 
          FROM transfertspokemon T
          INNER JOIN membres M  ON T.membre_id = M.ID 
          WHERE T.membre_id='$id_membre'";
    
      $resultat = $bdd->query($sql);
    


    Cordialement, 
    Jordane