Supprimer une ligne dans la base donnée

Fermé
jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 - Modifié par jobouille le 19/04/2015 à 15:52
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 19 avril 2015 à 22:29
Bonjour à tous !

J'ai créer un petit chat et j'aimerais qu'un bouton "Supprimer" apparaissent permettant de supprimer le message.

J'ai donc fait ceci :

<a href="delete_msg.php?id=<?php echo $msg['id'];?>" class="supprimer">Supprimer</a>


La redirection vers delete_msg.php avec l'id fonctionne correctement.

Voici la page delete_msg.php qui, elle, ne fonctionne pas très bien car le message ne se supprime pas :

<?php
session_start();

$bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '');

 $delMsg = $bdd->prepare('DELETE FROM chat WHERE id="$id');
 $delMsg->execute(array($id));

 header("Location:chat.php");
?>


Je débute en php donc si vous pourriez éventuellement écrire les lignes de codes qu'il faudrait ce serait juste parfait :D

Merci et bonne journée
A voir également:

5 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 avril 2015 à 16:07
Bonjour
problème lié aux doubles quotes devant $id
0
jee pee Messages postés 39650 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 avril 2024 9 238
19 avril 2015 à 16:09
Bonjour,

Je ne pratique pas le php. Mais la logique de tes simples quotes et double quotes n'est informatiquement pas correcte :-)

'DELETE FROM chat WHERE id="$id')
;

Tu as une double quote devant $id qui n'a pas son pendant fermant.

cdlt
0
jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 10
19 avril 2015 à 16:21
Je viens d'enlever les double quote, ce qui donne ceci :

$delMsg = $bdd->prepare('DELETE FROM chat WHERE id=$id');


Mais le problème persiste toujours : le message ne se supprime pas :/
0
jee pee Messages postés 39650 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 avril 2024 9 238
Modifié par jee pee le 19/04/2015 à 16:33
Tu devrais regarder : https://stackoverflow.com/questions/1569610/delete-from-table-where-id-id-variable-refuses-to-stick c'est aussi une question, donc avec aussi un problème mais ...

Il semble qu'il faille definir la variable localement avant de l'utiliser, plus les quotes sont à l'inverse de toi.

Et chose importante, quand on programme, on doit gérer les erreurs. C'est à dire que le code en cas d'anomalie doit d'envoyer un message. Sur le lien plus haut cela me semble répondre à cette logique.

        Un étranger, c'est un ami qu'on n'a pas encore rencontré.
0
jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 10
19 avril 2015 à 16:51
J'ai essayé de faire un peu comme le post que vous m'avez donné.
Mais voilà bien 20min que j'y suis et aucun résultat :/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
19 avril 2015 à 17:54
Premier souci ...
Où recupères tu $id dans ton code ?
Ensuite.... sorts la requête de son exécution... ainsi tu peux en faire une ECHO et la tester en direct dans ta BDD histoire de comprendre où se trouve le PB ...

Donc :

<?php
session_start();

// Connexion à la BDD
// (A mettre dans un fichier à part que tu auras juste à inclure au besoin ! )
$bdd = new PDO('mysql:host=localhost;dbname=espace_membre', 'root', '');


// Récupération des variables:
$id = isset($_GET['id'])?$_GET['id']:NULL;

// Traitement :
if($id){
$sql = "DELETE FROM chat 
             WHERE id=':id'";
 
$param =array(":id"=>$id);

 $delMsg = $bdd->prepare($sql);
 $result =  $delMsg->execute($param);

 if($result){
    header("Location:chat.php");
 }else{
   echo "<pre> ERREUR !<br>";
     print_r($sql);
     print_r($param);
   echo "</pre>";
 }
}else{
 echo "<br> NO ID !";
} 
?>


0
jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017 10
19 avril 2015 à 21:19
J'ai mit le code que vous venez de me donner dans delete_msg.php

Ensuite, j'ai mit ce bouton qui apparaît dans chaque message posté :

<a href="delete_msg.php" class="supprimer">Supprimer</a>


Et voilà ce qui se passe lorsqu'on clic sur le bouton "envoyer" pour envoyer notre message :

if(isset($_POST['envoyer']))
	{
		if(isset($_POST['message']) AND !empty($_POST['message']))
		{
			$id = htmlspecialchars($msg['id']);
			$avatar = htmlspecialchars($user['avatar']);
			$pseudo = htmlspecialchars($user['pseudo']);
			$message = nl2br(htmlspecialchars($_POST['message']));
			$grade = htmlspecialchars($user['grade']);
			$idmembre = htmlspecialchars($user['id']);
			$date = date("d-m-Y");
			$heure = date("H:i:s");

			$insertmsg = $bdd->prepare('INSERT INTO chat(id, avatar, pseudo, message, grade, idmembre, date, heure) VALUES(?, ?, ?, ?, ?, ?, ?, ?)');
			$insertmsg->execute(array($id, $avatar, $pseudo, $message, $grade, $idmembre, $date, $heure));
			header ('Location: place_du_village.php');
		}
	}


Merci

PS: à noter qu'il y a 3 pages php pour ce chat :
- La page place_du_village.php où se trouve le code php ci dessus pour envoyer un message.
- La page chat.php qui est inclu via un iframe dans place_du_village.php
- Et enfin la page delete_msg.php qui, j'espère, permettra de supprimer un message.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jobouille Messages postés 286 Date d'inscription jeudi 11 juin 2009 Statut Membre Dernière intervention 27 septembre 2017
19 avril 2015 à 22:29

Ensuite, j'ai mit ce bouton qui apparaît dans chaque message posté :

Non .. tu devrais avoir la même chose que dans ta question initiale ... à savoir :
<a href="delete_msg.php?id=<?php echo $msg['id'];?>" class="supprimer">Supprimer</a>

comme tu peux le voir... dans ce code... on passe un argument en GET ... l' ID ....
C'est grâce à ça... que le code que je t'ai donné peut fonctionner !
0