Supprimer une ligne dans la base donnée

jobouille Messages postés 356 Statut Membre -  
jordane45 Messages postés 40050 Statut Modérateur -
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

5 réponses

jordane45 Messages postés 40050 Statut Modérateur 4 758
 
Bonjour
problème lié aux doubles quotes devant $id
0
jee pee Messages postés 42404 Statut Modérateur 9 745
 
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 356 Statut Membre 10
 
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 42404 Statut Modérateur 9 745
 
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 356 Statut Membre 10
 
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 40050 Statut Modérateur 4 758
 
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 356 Statut Membre 10
 
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 40050 Statut Modérateur 4 758 > jobouille Messages postés 356 Statut Membre
 

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