UPDATE qui fonctionne pas

Résolu/Fermé
Jeremdu54 Messages postés 10 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 3 mars 2013 - 22 août 2012 à 15:59
Jeremdu54 Messages postés 10 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 3 mars 2013 - 22 août 2012 à 16:14
Bonjour,

Je suis actuellement sur l'amelioration de mon site en ajoutant une messagerie interne.Cependant j'ai un souci avec lu et non lu.En effet lorsque je clique sur un sujet il m'ouvre une page lire.php qui inclus le message.Cependant j'ai ajouter une requete UPDATE qui permet de mettre a jours ma table afin que le champs lu soit a 1.Mais rien ne se passe. si toutefois je le fais manuellement je n'ai aucun souci.
Pouvez vous me guider?
Voici le bout de code lire.php

mysql_query("update messages set lu=1 where messages.id='".$id_message."'")or die(mysql_error());;      

// on teste si notre paramètre existe bien et qu'il n'est pas vide
if (!isset($_GET['id_message']) || empty($_GET['id_message'])) { 
  echo 'Aucun message reconnu.';  
}  
else { 
    
   // on prépare une requete SQL selectionnant la date, le titre et l'expediteur du message que l'on souhaite lire, tout en prenant soin de vérifier que le message appartient bien au membre connecté
  $sql = 'SELECT titre, date, message, users.username as expediteur FROM messages, users WHERE id_destinataire="'.$_SESSION['userid'].'" AND id_expediteur=users.id AND messages.id="'.$_GET['id_message'].'"'; 
  // on lance cette requete SQL à MySQL
   $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
   $nb = mysql_num_rows($req); 
 
   if ($nb == 0) { 
      echo 'Aucun message reconnu.'; 
   } 
   else { 
      // si le message a été trouvé, on l'affiche
      $data = mysql_fetch_array($req);
	  ?> 
      <strong><font color="blue">Message recu le:</font> 
	  <?php
		echo ''.date('d-m-Y  \à H:i:s', strtotime ($data['date'])).'<br><br>';
		echo '<font color="blue">Objet: </font> ', stripslashes(htmlentities(trim($data['titre']))) , '</a></br></br>'; 
		echo '<font color="blue">Expediteur: </font>' , stripslashes(htmlentities(trim($data['expediteur']))) , '<br /><br />'; 
        echo  '<font color="blue">Message: </font>'.nl2br(stripslashes(htmlentities(trim($data['message'])))).'</br></br>';
     // on affiche également un lien permettant de supprimer ce message de la boite de réception
      echo '<br /><br /><center><a href="supprimer.php?id_message=' , $_GET['id_message'] , '">Supprimer ce message</a></strong>';
	}
}

?>


voici ma table messages:
CREATE TABLE IF NOT EXISTS 'messages' (
  'id' int(11) NOT NULL AUTO_INCREMENT,
  'id_expediteur' int(11) NOT NULL DEFAULT '0',
  'id_destinataire' int(11) NOT NULL DEFAULT '0',
  'date' datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  'titre' text NOT NULL,
  'message' text NOT NULL,
  'lu' int(1) NOT NULL,
  PRIMARY KEY ('id')
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;

bien entendu AUTO_INCREMENT est a 22 car des tests ont ete effectués

enfin le code de messages.php:
<?php
	$req='SELECT COUNT(*) as nb_messnonlu FROM messages WHERE id_destinataire="'.$_SESSION['userid'].'" AND messages.lu=0';
				$result = mysql_query($req);  
				$donnee3 = mysql_fetch_row($result);
	$req2='SELECT COUNT(*) as nb_messnonlu FROM messages WHERE id_destinataire="'.$_SESSION['userid'].'"';
				$result2 = mysql_query($req2);  
				$donnee4 = mysql_fetch_row($result2);
	?>
	<b>Vous avez <?php echo $donnee4[0];?> messages dont <?php echo $donnee3[0];?> non lus.</b>
	<table border="1" cellspacing="0">
    <tr>
    	<th>Date</th>
    	<th>Titre</th>
		<th> Expediteur</th>
<div id="list_mess">
<?php
// on prépare une requete SQL cherchant tous les titres, les dates ainsi que l'auteur des messages pour le membre connecté
$sql = 'SELECT titre, date, users.username as expediteur, messages.id as id_message, lu FROM messages, users WHERE id_destinataire="'.$_SESSION['userid'].'" AND id_expediteur=users.id ORDER BY date DESC';
// lancement de la requete SQL
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);

if ($nb == 0) {
        echo '<table width="880" border="1" cellpadding="0" style="border-collapse: collapse" bordercolor="blue"><tr><td bgcolor="#CCCCFF" width=5% align="center">Vous n\'avez aucun message.</td></tr></table>';
}
else {
        // si on a des messages, on affiche la date, un lien vers la page lire.php ainsi que le titre et l'auteur du message
        while ($data = mysql_fetch_array($req))
        {
                                if($data['lu']==1)
                                {
                                                $img = 'lu.png';
                                }
                                else
                                {
                                                $img = 'non lu.png';
                                }
                echo '<table width="880" border="1" cellpadding="0" style="border-collapse: collapse" bordercolor="blue"><tr><td bgcolor="#FFFF99" width=5% align="center"><img src="images/'.$img.'" alt="" border="0"></td><td bgcolor="#CCCCFF" width=20%>' , $data['date'] , ' </td><td bgcolor="#CCCCFF" witdh=50%><a href="lire.php?id_message=' , $data['id_message'] , '">' , stripslashes(htmlentities(trim($data['titre']))) , '</a></td>
                <td bgcolor="#CCCCFF" width=25%><table vorder="0"><tr><td width=95%> &nbsp;<b>' , stripslashes(htmlentities(trim($data['expediteur']))) , '</b></td><td align="right" width="5%"><a href="supprimer.php?id_message=' , $data['id_message'] , '"><img src="images/supprimer.gif" alt="Supprimer ce message" border="0"></a></td></tr></table></td></tr></table>';
        }
}
mysql_free_result($req);
mysql_close();
?>


A voir également:

2 réponses

Utilisateur anonyme
22 août 2012 à 16:10
Bonjour

D'où vient la valeur de $id_message ? Ce ne serait pas plutôt $_GET['id_message'] ?
0
Jeremdu54 Messages postés 10 Date d'inscription mercredi 22 août 2012 Statut Membre Dernière intervention 3 mars 2013
22 août 2012 à 16:14
Arf je peut parfois etre tete en l'air ... Je te remercie problème resolu:)
0