Bonsoir (ou bonjour) à tous,
J'ai actuellement un problème de requête DELETE que j'aimerais utiliser sur une boucle WHILE.
J'ai une section amis dans l'espace membre de mon site ou j'affiche une liste de tout les amis que l'utilisateur a ajouté en tant qu'amis, en faisant une boucle while ou j'affiche un bref résumé de l'amis en question : (pseudo, avatar et la date et l'heure depuis que ces 2 utilisateurs sont amis).
Dans cet boucle while, j'en profite pour ajouter un formulaire HTML pour avec un simple bouton submit qui a comme valeur " Supprimer de mes ami".
Ce bouton ce répète donc à chaque fois dans la boucle pour chaque utilisateur qui apparait dans la boucle.
Dans ma boucle while je recupere 5 variables depuis une table Liste_Amis et je fais une jointure de table vers la table Membres ( qui n'a normalement rien à voir avec mon problème mais je précise quand même. )
Le code PHP et SQL de ma boucle ressemble donc à ça:
et l'html/php de la boucle qui affiche cette liste est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $reqfriends = $bdd->prepare('SELECT * FROM Liste_Amis JOIN Membres ON Liste_Amis.ID_Ami = Membres.ID_Utilisateur WHERE Utilisateur = ?'); $reqfriends->execute(array($_SESSION['id'])); $friendscount = $reqfriends->rowCount(); if($friendscount == 0) { ?> <div class="aucunamis">Vous n'avez actuellement aucun ami !</div> <?php } else { ?> <?php while ($f = $reqfriends->fetch()) { ?>
La table SQL "Liste_Amis" ressemble à ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <div class="friend"> <?php $Date = (strftime('%d/%m/%Y ', strtotime($f['DateAjout']))); ?> <p class="avatar"><img src="membres/avatars/<?= $f['Avatar']; ?>" /></p> <p class="pseudo"><?php if($f['Admin'] == true ) { ?><a class="admin" href="membre.php?Pseudo=<?= $f['Pseudo']; ?>"><i class="fas fa-fan fa-spin"></i> <?= $f['Pseudo'];?></a><?php } else { ?><a class="membre" href="membre.php?Pseudo=<?= $f['Pseudo']; ?>"><?= $f['Pseudo'];?></a><?php } ?></p> <p>Vous et <?php if($f['Admin'] == true ) { ?> <span class="admin"><?= $f['Pseudo']?></span><?php } else { ?> <span class="membre"><?= $f['Pseudo']?></span><?php } ?> êtes amis depuis le: <?= $Date; ?> à <?= $f['HeureAjout']; ?></p> <form method="POST"> <input type="submit" name="Supprimer" value="Supprimer de mes amis"/> </form> <?php if(isset($_POST['Supprimer'])) { $deletefriend = $bdd->prepare('DELETE ID FROM Liste_Amis WHERE Utilisateur = ? && ID_Ami = ?'); $deletefriend->execute(array($_SESSION['id'], $f['ID_Ami'])); } ?> </div>
ID / Utilisateur / ID_Ami / DateAjout / HeureAjout/
L'ID est la clé primaire que j'auto incrémente à chaque nouvel ajout en ami. (int)
l'Utilisateur est l'ID de l'utilisateur que je récupère automatiquement depuis une table "Membres".(int)
l'ID_Ami est aussi un ID Utilisateur.(int)
DateAjout et HeureAjout ne sont là qu'en tant que current-timestamp pour afficher l'heure et la date de l'ajout en ami comme mentionner plus haut.
Donc mon problème c'est que:
La requête que j'utilise actuellement ne fonctionne pas et je ne comprend pas du tout pourquoi...
Le truc c'est que pour "essayer" j'ai déjà ajouter un bouton qui supprime touts les amis de l'utilisateur et celui-ci marche parfaitement. ( fonction qui n'est la que pour tester et qui ne sera pas présent dans la version finale de la page.)
J'ai déjà tenter plusieurs manipulation de code, d'autres syntaxe, rien y fait. Soit ça ne supprime rien ou alors ça supprime tout !
J'ai d'ailleurs exactement le même problème sur une autre partie de mon site avec les messages privés ou j'arrive à effacer touts les messages qu'un utilisateur a reçu mais pas à les supprimer un à la fois...
Je ne sais pas si tout ce que j'ai dit est très compréhensible et si ce n'est pas le cas je m'en excuse très sincérement...
Mais je serais très heureux si quelqu'un pouvait m'aider à résoudre mon problème !![]()
Partager