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
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
 
<?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 00
Vieux 28/01/2010, 19h56   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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 00
Vieux 29/01/2010, 06h18   #3
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 238
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 238
Points : 2 591
Points : 2 591
Salut

Code :
1
2
3
4
5
6
$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.2 | Apache 2.2.21 | Php 5.3.8 | MySQL 5.5.16
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 00
Vieux 29/01/2010, 10h54   #4
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
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 00
Vieux 29/01/2010, 11h02   #5
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
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 00
Vieux 29/01/2010, 13h05   #6
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 238
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 238
Points : 2 591
Points : 2 591
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.2 | Apache 2.2.21 | Php 5.3.8 | MySQL 5.5.16
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 00
Vieux 29/01/2010, 15h55   #7
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
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 00
Vieux 29/01/2010, 16h07   #8
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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 00
Vieux 29/01/2010, 21h29   #9
Futur Membre du Club
 
Inscription : avril 2008
Messages : 79
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 79
Points : 15
Points : 15
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 :
1
2
3
 
 $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 00
Vieux 30/01/2010, 11h16   #10
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 13h15.


 
 
 
 
Partenaires

Hébergement Web