IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Messagerie:imposible de capturer un id pour afficher le message voulu


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    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.

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    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

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    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é.

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    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.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    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

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    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.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 37
    Points
    37
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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'].'"';

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155

Discussions similaires

  1. trigger pour afficher un message
    Par lordgodgiven dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 14/12/2011, 15h57
  2. Fonction PRINT pour afficher un message
    Par Pamplonica dans le forum PL/SQL
    Réponses: 3
    Dernier message: 22/08/2011, 14h44
  3. [AJAX] bouton pour afficher un message
    Par senda dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 01/03/2009, 12h32
  4. [MySQL] Requête pour afficher des messages
    Par titirigole dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/12/2008, 14h30
  5. [C#] Fenêtre pour afficher un message d'erreur
    Par radicalrider dans le forum ASP.NET
    Réponses: 18
    Dernier message: 17/08/2005, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo