Souci de requete pour l'affichage

Résolu
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   -  
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,

Je reviens à nouveau vers vous car, j'ai encore un souci sur un code.
En faite j'ai un module MP qui fonctionne puisqu'il enregistre tous correctement dans ma bdd par contre les MP ne veulent pas s'afficher sur ma page.

voici mon code concernant l'affichage :

default;
    
    echo'<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> <a href="./messagesprives.php">Messagerie privée</a>';
    echo '<h1>Messagerie Privée</h1><br /><br />';

    $query=$bdd->prepare('SELECT mp_lu, mp_id, mp_expediteur, mp_titre, mp_time, ID, pseudo
    FROM forum_mp
    LEFT JOIN membres ON forum_mp.mp_expediteur = membres.ID
    WHERE mp_receveur = :id ORDER BY mp_id DESC');
    $query->bindValue(':id',$id,PDO::PARAM_INT);
    $query->execute();
    echo'<p><a href="./messagesprives.php?action=nouveau">
    <img src="./includes/images/nouveau.gif" alt="Nouveau" title="Nouveau message" />
    </a></p>';
    if ($query->rowCount()>0)
    {
	?>
        <table>
        <tr>
        <th></th>
        <th class="mp_titre"><strong>Titre</strong></th>
        <th class="mp_expediteur"><strong>Expéditeur</strong></th>
        <th class="mp_time"><strong>Date</strong></th>
        <th><strong>Action</strong></th>
        </tr>
<?php
        //On boucle et on remplit le tableau
        while ($data = $query->fetch())
        {
            echo'<tr>';
            //Mp jamais lu, on affiche l'icone en question
            if($data['mp_lu'] == 0)
            {
            echo'<td><img src="./images/message_non_lu.gif" alt="Non lu" /></td>';
            }
            else //sinon une autre icone
            {
            echo'<td><img src="./images/message.gif" alt="Déja lu" /></td>';
            }
            echo'<td id="mp_titre">
            <a href="./messagesprives.php?action=consulter&id='.$data['mp_id'].'">
            '.stripslashes(htmlspecialchars($data['mp_titre'])).'</a></td>
            <td id="mp_expediteur">
            <a href="./voirprofil.php?action=consulter&m='.$data['membre_id'].'">
            '.stripslashes(htmlspecialchars($data['membre_pseudo'])).'</a></td>
            <td id="mp_time">'.date('H\hi \l\e d M Y',$data['mp_time']).'</td>
            <td>
            <a href="./messagesprives.php?action=supprimer&id='.$data['mp_id'].'&sur=0">supprimer</a></td></tr>';
        } //Fin de la boucle
        $query->CloseCursor();
        echo '</table>';

    } //Fin du if
    else
    {
        echo'<p>Vous n\'avez aucun message privé pour l\'instant, cliquez
        <a href="./index.php">ici</a> pour revenir à la page d\'index</p>';
    }
} //Fin du switch
?>


Si quelqu'un à une idée, je suis preneur car ça fait bien 3H que je cherche et je trouve pas ou est le problème.

Merci par avance pour votre aide.

5 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Bonjour,

Tu veux dire que tu obtiens le message :
Vous n\'avez aucun message privé pour l\'instant, cliquez.... 
??

C'est donc que tu n'entres pas dans ton IF.

Premier problème : Il est déconseillé d'utiliser l'intruction ROWCOUNT
Ensuite... as tu testé ta requête en direct dans ta BDD ? Elle fonctionne ??
As tu vérifié quelle valeur avait ta variable $id ?
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
Quand je l'entre cette requete :

SELECT mp_lu, mp_id, mp_expediteur, mp_titre, mp_time, ID, pseudo
    FROM forum_mp
    LEFT JOIN membres ON forum_mp.mp_expediteur = membres.ID
    WHERE mp_receveur = :id ORDER BY mp_id DESC


j'ai cette erreur :

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':id ORDER BY mp_id DESC LIMIT 0, 30' at line 4

une idée ?
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai testé en retirant cette ligne :

WHERE mp_receveur = :id ORDER BY mp_id DESC


La requete fontionne très bien dans phpmyadmin.
je vais tester sur le site voir ce que ça donne.
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
les MP s'affiche mais en faite il affiche tous les MP de la bdd sans prendre en compte l'ID du membre.

Autrement, vous avez pas un script de MP avec option répondre et supprimer seulement ?(et ci-possible bbcode).

Comme ça j'étudierais en même temps comment c'est fait.

Merci par avance.
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
personne pour m'aider ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Tu peux tester ta requête
SELECT mp_lu, mp_id, mp_expediteur, mp_titre, mp_time, ID, pseudo
    FROM forum_mp
    LEFT JOIN membres ON forum_mp.mp_expediteur = membres.ID
    WHERE mp_receveur = :id ORDER BY mp_id DESC

EN REMPLACANT LES VARIABLES ???
par exemple.... tu y mets un ID existant et tu regardes si ça te retourne quelque chose.....
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
La requete fonctionne et m'affiche bien les MP correspondant à l'ID que je met.
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
une idée du coup ?
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
Personne à une idée pour m'aider à debugger ce code ?
0

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

Posez votre question
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
Un idée de quelqu'un ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Ca ne sert à rien de venir demander 3 fois par jour si quelqu'un à une idée !!!!!
Si personne ne répond c'est que : ( plusieurs choix possibles ! )
- Personne n'a le temps
- Personne ne sait
- Personne ne comprend ta question (car mal rédigée)
- Personne n'a envie

.....


Et puis... qu'as tu essayé depuis ??
Tu nous as indiqué que la requête que je t'ai fais essayé (et que donc tu as mis en place dans ton code bien sûr (hein ??) fonctionnait.
- As tu essayé de voir ce que retournait le rowcount ?
- As tu essayé de mettre un peu de debug ? ( un try catch par exemple ) ??
0
Lucryio Messages postés 206 Date d'inscription   Statut Membre Dernière intervention  
 
j'ai tous essayé et finalement j'ai trouvé la solution, merci quand même.
0