Function supprimer_message

Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   -  
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Qu'est ce qui ne va pas dans ma function supprimer_message svp ?
<?php
//la function qui va supprimer le message
function supprimer_message(){
global $bdd;

  //récupération des variables PROPREMENT !
  $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
  $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;

 $result=0;
 if($pseudo_exp && $pseudo_dest){
  $sql = "DELETE
         FROM conversations_messages
         WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
 $params = array('session_pseudo' => $pseudo_exp , 'get_pseudo' => $pseudo_dest) ;
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $requete = $query->fetchall();
 }
}
?> 


Merci d'avance

7 réponses

phenetas Messages postés 1108 Date d'inscription   Statut Membre Dernière intervention   227
 
Quel est le message d'erreur ? On ne va pas passer 5 minutes a lire ton code si un message d'erreur peut nous éclairer en 5 secondes ;)
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
J'en ai pas mais la function ne s'exécute pas :)
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
<?php
//la function qui va supprimer le message
function supprimer_message(){
global $bdd;

  //récupération des variables PROPREMENT !
  $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;

 $result=0;
 if($pseudo_exp && $pseudo_dest){
  $sql = "DELETE
         FROM conversations_messages
         WHERE (pseudo_exp = :session_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
 $params = array('session_pseudo' => $pseudo_exp , 'get_pseudo' => $pseudo_dest) ;
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $requete = $query->fetchall();
 }
}
?>


modifications...

lorsque j'applique cette requête :
DELETE FROM conversations_messages WHERE (pseudo_exp = 'jean')


les messages sont bien tous effacés, mais meme appliqués au code cela ne marche pas :/

Quelles modifications faut-il appliquer à ce code ? (conversations.php)
<?php 
include('functions/membre.func.php');
include('body/header.php');
include('body/menu.php');
?>
<h3>Les conversations</h3>
<?php 
$conversations = recup_conversation();
   if($conversations == true)
   {
        foreach($conversations as $conversation)
     {
      ?>
         <div class='conversation'>      
        <a href="index.php?page=profile&pseudo=<?php echo $conversation['pseudo']; ?>"><?php echo $conversation['pseudo']; ?></a><br />
     <IMG src='avatar/<?php echo $conversation['avatar']; ?>'  height='70' width='70'></IMG>
     <p><a href="index.php?page=message&id=<?php echo $conversation['id_conversation']; ?>"> <?php echo $conversation['sujet_conversation']; ?></a></p>
     <p>Posté le : <?php echo date('d/m/Y à H:i:s',strtotime($conversation['date_message'])); ?></p>
     <p><a href="index.php?page=supprimer_message">Supprimer le message</a></p>
                  </div>      
      <?php
     }
   }else{
    ?>
       <div class'error'>Vous n'avez pas de message</div>
    <?php
   }
?>
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
 $result=0;
 if($pseudo_exp && $pseudo_dest){


2 erreurs ici aussi
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Ma requête en soit marche mais pas sur mon code comment expliquer cela ??
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Déjà... dans ton IF .. tu as deux variables ... alors que tu n'en utilises qu'une seule...
ça ne te choque pas ????
  $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
 if($pseudo_exp && $pseudo_dest){


Vu que tu n'utilises "que" $pseudo_exp ... pourquoi dans ton IF avoir également $pseudo_dest ???


Idem dans ton params ..
  // je place les  params dans une variable avant de l'utiliser :
 $params = array('session_pseudo' => $pseudo_exp , 'get_pseudo' => $pseudo_dest) ;



Si tu avais pris le soins de mettre un bloc TRY CATCH comme je te l'ai fait dans tes autres codes... tu aurais vu des messages d'erreur te permettant de trouver la cause de tes problèmes !!!!
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
c'est ce que j'ai dis plus haut, j'utilise actuellement ce code mais il ne marche pas (desolé pour ce manque de précision) :
<?php
//la function qui va supprimer le message
function supprimer_message(){
global $bdd;

  //récupération des variables PROPREMENT !
  $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;

 if($pseudo_exp){
  $sql = "DELETE
         FROM conversations_messages
         WHERE (pseudo_exp = :session_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
 $params = array('session_pseudo' => $pseudo_exp) ;
  
  $query = $bdd->prepare($sql);
  $query ->execute($params);  
  $requete = $query->fetchall();
 }
}
?> 
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
<?php
//la function qui va supprimer l'invitation
function supprimer_invitation() {
global $bdd;

  //récupération des variables PROPREMENT !
  $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
  $pseudo_dest = isset($_GET['pseudo'])?$_GET['pseudo']:NULL;

 $result=0;
 if($pseudo_exp && $pseudo_dest){
  $sql = "DELETE
         FROM amis
         WHERE (pseudo_exp = :session_pseudo AND pseudo_dest = :get_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
  $params = array('session_pseudo' => $pseudo_exp , 'get_pseudo' => $pseudo_dest);
  
try{
    $query = $bdd->prepare($sql);
    $query ->execute($params); 
   $return = 1;
 }catch(Exception $e) {
     echo "<br>".$e->getMessage()."<br>";
   echo "<br>params : <br>";
   print_r($params);
 }
 }
return $return;
}


je ne detecte pas d'erreurs malgré le try catch
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
<?php
//la function qui va supprimer le message
function supprimer_message(){
global $bdd;

  //récupération des variables PROPREMENT !
  $pseudo_exp = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;

 if($pseudo_exp){
  $sql = "DELETE
         FROM conversations_messages
         WHERE (pseudo_exp = :session_pseudo)";

  // je place les  params dans une variable avant de l'utiliser :
 $params = array('session_pseudo' => $pseudo_exp) ;
  
try{
    $query = $bdd->prepare($sql);
    $query ->execute($params); 
   $return = 1;
 }catch(Exception $e) {
     echo "<br>".$e->getMessage()."<br>";
   echo "<br>params : <br>";
   print_r($params);
 }
 }
return $return;
}
0

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

Posez votre question
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Je crois avoir trouvé l'erreur :
<p><a href="index.php?page=supprimer_message">Supprimer le message</a></p>


à changer en

<p><a href="index.php?page=conversations.php">Supprimer le message</a></p>


je pourrais testé lorsque mon problème de bdd sera out
0
Zakarya93
 
dapparance ce code est il bon ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonsoir,

L'autre problème qui va se poser avec ton code actuel
(celui de ta fonction function supprimer_message ) ... c'est que la... tu va virer TOUS les messages échanges entre les deux personnes..... pas seulement LE message sélectionné !

A la limite... il faudrait modifier ton lien comme ceci je pense :
foreach($conversations as $conversation)  {
      ?>
         <div class='conversation'>      
        <a href="index.php?page=profile&pseudo=<?php echo $conversation['pseudo']; ?>"><?php echo $conversation['pseudo']; ?></a><br />
     <IMG src='avatar/<?php echo $conversation['avatar']; ?>'  height='70' width='70'></IMG>
     <p><a href="index.php?page=message&id=<?php echo $conversation['id_conversation']; ?>"> <?php echo $conversation['sujet_conversation']; ?></a></p>
     <p>Posté le : $date</p>
     <p><a href="index.php?page=supprimer_message&id=<?php echo $conversation['id_conversation']; ?>">Supprimer le message</a></p>
                  </div>      
      <?php
     }



Ensuite.. dans le code de ta page : supprimer_message
<?php
// Page :  supprimer_message.php

// récupération de l'ID du message à supprimer
$id_message = !empty($_GET['id']) ? $_GET['id'] : NULL;

if($id_message) {
  supprimer_message(id_message);
 
// Le temps des tests.. on desactive la redirection
// ça permettra de voir les éventuelles erreur des blocs
// try / catch car sinon.. on ne les vois pas !!!

//  header("Location:index.php?page=conversations");

}else{
 echo "<br> Erreur : No ID ! ";
}
?>





Et enfin... ta fonction de suppression :
<?php
//la function qui va supprimer le message
function supprimer_message($id_message){
global $bdd;

  $sql = "DELETE
         FROM conversations_messages
         WHERE id_conversation= :id";

   // je place les  params dans une variable avant de l'utiliser :
  $params = array(':id' => $id_message) ;
  
try{
    $query = $bdd->prepare($sql);
    $query ->execute($params); 
 }catch(Exception $e) {
     echo "<br>".$e->getMessage()."<br>";
   echo "<br>params : <br>";
   print_r($params);
 }

}
?>




Cordialement,
Jordane
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
enfin... là .... ça va supprimer TOUS les message d'une conversation donnée......
Si tu ne veux supprimer qu'un seul message de la conversation.. il ne faudra pas taper sur le champ id_conversations .... mais id (tout court... si tu as bien refais tes tables comme je te l'avais dis )
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Merci pour votre retour :)
Constats :

- j'ai un "Posté le : $date" qui s'affiche, la date a disparu
- j'ai : Notice: Use of undefined constant id_message - assumed 'id_message' in C:\wamp\www\rs\pages\supprimer_message.php on line 8
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Il manque le $
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10
 
Rien ne se produit, la page charge mais plus rien
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
La page se charge .....; LAQUELLE DE PAGE ?????
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
conversations.php :
<?php 
include('functions/membre.func.php');
include('body/header.php');
include('body/menu.php');
?>
<h3>Les conversations</h3>
<?php 
$conversations = recup_conversation();
   if($conversations == true)
   {
	       foreach($conversations as $conversation)  {
      ?>
         <div class='conversation'>      
        <a href="index.php?page=profile&pseudo=<?php echo $conversation['pseudo']; ?>"><?php echo $conversation['pseudo']; ?></a><br />
     <IMG src='avatar/<?php echo $conversation['avatar']; ?>'  height='70' width='70'></IMG>
     <p><a href="index.php?page=message&id=<?php echo $conversation['id'] ?>"> <?php echo $conversation['sujet']; ?></a></p>
     <p>Posté le : <?php echo $conversation['date_message']; ?></p>
     <p><a href="index.php?page=conversations&id=<?php echo $conversation['id']; ?>">Supprimer le message</a></p>
                  </div>      
      <?php
     }
   }else{
	   ?>
	      <div class'error'>Vous n'avez pas de message</div>
	   <?php
   }
?>
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Et quand tu cliques sue supprimer ?
Et quand tu dis que rien ne se passe.... c'est à dire ???
0
Zakarya93 Messages postés 984 Date d'inscription   Statut Membre Dernière intervention   10 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
eh bien le message ne disparait pas, la page reste telle qu'elle est
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Pourquoi utilises tu la page : page=conversations ... au lieu, de ce que je t'avais indiqué .... supprimer_message ??
0