Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 28/01/2010, 17h06   #1 (permalink)
Nouveau membre du Club
 
Date d'inscription: avril 2008
Messages: 79
Par défaut Messagerie:imposible de capturer un id pour afficher le message voulu

Bonjour j'espere que qlq'un pourra m'aider,mon probleme est le suivant:
je veux faire une messagerie interne, et j'ai commencé par faire la boite de reception en premier, mais je n'arrive à afficher le msg voulu, porbleme d'indentifiant, elle me donne le msg : "Aucun message trouvé."
le mail sera affiher ds une popup.
voila le code et merci à vous:
Code :
 
<?php  
session_start();
$membre['id']=$_SESSION['id'];
include('../include/control-session.php');
include('../include/db_connect.php');
?>
<body>
 
  <div class="body">
    <div class="center">
        
			<div>
				<h3><a href="#">Boite de réception</a></h3>
				<div>
				
				<?php
				// requete SQL cherchant tous les titres, les dates ainsi que l'auteur des messages pour le membre connecté  
 $requete = 'SELECT messagerie.id as id_message,objet,membres.login as expediteur,date   FROM messagerie, membres WHERE id_destinataire="'.$membre['id'].'" AND id_expediteur=membres.id ORDER BY date DESC'; 
		 
		 
$rep=mysql_query($requete)or die('Erreur SQL !<br />'.$requete.'<br />'.mysql_error());;
if($rep==0)
    
	echo "Vous n\'avez aucun message.";
else{
    
	echo '<form name="form" method="post">';
	echo '<table id="myTable">';
	echo '<thead><tr><th>Objet</th><th>Expéditeur</th><th>Date et heure</th><th>Effacer</th></tr></thead><tbody>';
	while($ligne=mysql_fetch_row($rep)){ 
		                                                                 
	echo '<tr><td><a href="#?id_message=' , $ligne[0] , '">' , stripslashes(htmlentities(trim($ligne[1]))) , '</a></td>
	<td ><a href="lire.php?id_message=' , $ligne[0] , '">' , stripslashes(htmlentities(trim($ligne[2]))) , '</a></td>
	<td >'.$ligne[3].'</td><td><input type="checkbox" name="id[]" value="'.$ligne[0].'"></td></tr>';
	}
echo '</tbody></table><br>';
echo '<input type="submit" class="buttonSubmit" name="suppression" value="Supprimer">';
echo '</form>';
} 
   //libère toute la mémoire et les ressources utilisées par la ressource de résultat
mysql_free_result($rep);
mysql_close();
                
echo"	<div id=\"popupContact\">
		<a id=\"popupContactClose\">x</a>
		<h1>Title of our cool popup, yay!</h1>
		<p id=\"contactArea\">";
 
include('../include/db_connect.php');
		 // 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 objet, date, message, membres.login as expediteur FROM messagerie, membres 
	  WHERE id_destinataire="'.$membre['id'].'" 
	  AND id_expediteur=membres.id AND messagerie.id="'.$_GET['id_message'].'"'; 
      // on lance cette requete
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
      $nb = mysql_num_rows($req); 
    
      if ($nb == 0) { 
         echo 'Aucun message trouvé.'; 
      } 
      else { 
         // si le message a été trouvé, on l'affiche 
         $data = mysql_fetch_array($req); 
       
          echo "<div><b>Date :"; echo $data['date'] ,'</b></div>', ' <br><br> ' , '<div><b>Expéditeur  :' , stripslashes(htmlentities(trim($data['expediteur']))) ,'<br><br>','Objet  :',stripslashes(htmlentities(trim($data['objet']))) ,'<b></div><br>'; 
		
        echo "<div>";
		echo nl2br(stripslashes(htmlentities(trim($data['message']))));		
		echo "</div>";
		}
		?>
		</p>
	</div>
	<div id="backgroundPopup"></div>
				</div>
				
			</div>
			<div >
				<h3><a href="#">Messages envoyés</a></h3>
				<div>              </div>
			</div>
			<div >
				<h3><a href="#">Messages supprimés</a></h3>
				<div>           </div>
			</div>
		
 
	  
      </div>
  </div>
 <?php include('../include/menu-footer.php');?>
</div>
</body>
</html>
 
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/01/2010, 19h56   #2 (permalink)
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 016
Par défaut

Fais un echo de ta requete pour voir a quoi elle ressemble et si elle te semble correcte, regarde precisemment le contenu de tes tables par rapport à ce que demande la requête.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 06h18   #3 (permalink)
Membre éclairé
 
Avatar de RunCodePhp
 
Date d'inscription: janvier 2010
Localisation: Ile De La Réunion
Messages: 384
Par défaut

Salut

Code :
$rep=mysql_query($requete)or die ... bla bla bla ...;
if($rep==0)
	echo "Vous n\'avez aucun message.";
else{
	... bla bla bla ...
}
mysql_query() retourne une resource et non le nombre de résultat.
T'as surement oublié de faire un $nb = mysql_num_rows($req); comme tu l'as fais plus bas dans ton code

A cause de ça tu ne devrais pas pouvoir afficher le formulaire avec les messages, donc impossible de renvoyer un $_GET['id_message'] par exemple car c'est au click sur un des lien qui renvoie cet ID aparement.
Du coup, il est normal que le contenu de ton popup soit vide.

D'ailleurs, par défaut normalement le popup ne contient pas de contenu, ce qui fait que dans ce cas là tu lance une requête pour rien.

Tout ça si j'ai bien suivi le truc
__________________
Win XP | WampServer 2.0 | Apache 2.2.11 | Php 5.3.0 | MySQL 5.1.36
Si debugger, c’est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Dernière modification par RunCodePhp ; 29/01/2010 à 06h35.
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 10h54   #4 (permalink)
Nouveau membre du Club
 
Date d'inscription: avril 2008
Messages: 79
Par défaut

dans le popup j'ai le msg "Aucun message trouvé." c par rien
la premiere requette march bien puisque il m'affiche bien les champs chacun ds sa colonne, et quand je mets le curseur sur l'objet du mail, il me donne bien l'identifiant du mail dans la barre d'etat, mais ce meme id n'est plus reconnu dans la 2eme requette, c la tt le probleme. et je vous remercie de l'interet que vous portez à mon pb
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 11h02   #5 (permalink)
Nouveau membre du Club
 
Date d'inscription: avril 2008
Messages: 79
Par défaut

j'ai ajouter le mysql_num_rows($req), mais ça ne change rien puisque c pas au niveau de cette requette que y a le pb, mais je te remercie RunCodePhp, je l'ai pas remarqué.
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 13h05   #6 (permalink)
Membre éclairé
 
Avatar de RunCodePhp
 
Date d'inscription: janvier 2010
Localisation: Ile De La Réunion
Messages: 384
Par défaut

Et bien dans ces conditions tu aurais pu (comme l'a suggéré sabotage) afficher cette requête $sql, car si elle renvoie rien, c'est qu'il y a erreur.
Tu pourras d'ailleurs à ce moment la copier et l'exécuter dans ton PhpMyAdmin (par exemple) pour vérifier si elle te retourne la ligne attendue.

Peut être qu'il y a erreur sur tes liens, ne serait ce du HTML non valide ne permettant pas d'envoyer ce id_message ? Tu peux le vérifier en affichant le code source de la page.
__________________
Win XP | WampServer 2.0 | Apache 2.2.11 | Php 5.3.0 | MySQL 5.1.36
Si debugger, c’est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 15h55   #7 (permalink)
Nouveau membre du Club
 
Date d'inscription: avril 2008
Messages: 79
Par défaut

j'ai testé la requete sur phpmyadmin en remplaçant les variables "'.$membre['id'].'" et "'.$_GET['id_message'].'"' par des id que j'ai choisi, et tt marche elle m'affiche exactement le resultat voulu.
je vais encore une fois verifer le code html esperant que je trouve qlq choses
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 16h07   #8 (permalink)
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 016
Par défaut

Il ne faut pas executer dans phpmyadmin ta requete avec des valeurs que tu mets toi meme, mais avec les valeurs avec lesquelles elle est executée dans le script.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 29/01/2010, 21h29   #9 (permalink)
Nouveau membre du Club
 
Date d'inscription: avril 2008
Messages: 79
Par défaut

pr le moment je peux pas le faire j'ai un probleme avec wampserver
mais comment il reconnaitra les $_GET['id_message'] et $membre['id'] ?
Code :
 
 $sql = 'SELECT objet, date, message, membres.login as expediteur FROM messagerie, membres 
	  WHERE id_destinataire="'.$membre['id'].'" AND id_expediteur=membres.id AND messagerie.id="'.$_GET['id_message'].'"'; 
 
timboy11 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 30/01/2010, 11h16   #10 (permalink)
Modérateur
 
Avatar de sabotage
 
Date d'inscription: juillet 2005
Messages: 10 016
Par défaut

Code :
echo $sql;
sabotage est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 21h03.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.