Souci jointure

Résolu
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   -  
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   -
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

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Quel est le soucis ? Un message d'erreur ?
Que vaut $_POST['id_poke'] et $_POST['pok-delete'] ?
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
heu elle ne m'affiche rien du tous donc ça doit pas être les bonne variable du coup.
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
une idée ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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                                                                 
0