Systeme de messagerie priver
Résolu<?php
$bdd = new PDO("mysql:host=127.0.0.1;dbname=espace_membre;charset=utf8", "root", "");
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
?>
<?php
$iesp ="5 " ;
$dest ="10" ;
?>
<?php $requete = $bdd->query("SELECT * FROM membres where id = $dest ");
while($normal =$requete->fetch())
{ ?>
<?php echo $normal ['pseudo']
?> <br>
<img src="<?php echo $normal ['avatar']?>" weight = "100" height ="100">
<?php } ?>
<?php $requete = $bdd->query("SELECT * FROM messages where id_expediteur = $iesp and id_destinataire = $dest or id_destinataire = $iesp and id_expediteur = $dest " );
while($resultat =$requete->fetch())
{?>
<table>
<tr>
<ul>
<?php
?>
<?php echo $resultat ['id_expediteur']?>
<?php echo $resultat ['message']?></br>
<?php echo $resultat ['date']?></br>
</ul>
</tr>
<?php }?>
6 réponses
Problème central : un développeur cherche à afficher des échanges privés en alignant l'émetteur à droite et le récepteur à gauche, via PHP et MySQL, et aborder le tri par auteur et la présentation visuelle. Parmi les solutions, l'utilisation d'un IF/ELSE dans la boucle de récupération pour distinguer l'émetteur et le récepteur, l'ORDER BY date DESC et l'ajout de classes CSS pour l'alignement. D'autres réponses suggèrent de placer le tri côté HTML/CSS et d'éviter les problèmes de syntaxe, tout en recommandant de corriger les fautes SQL et d'utiliser ORDER BY dans la requête. En cas d'évolution, la discussion rappelle aussi de mieux organiser le code et de clarifier le besoin, afin de ne pas confondre l'affichage et l'écriture de requêtes.
-
ModérateurBonjour,
Ta question concerne une requête SQL ???
-
-
Modérateur@ir_1997MySQL c'est le moteur...
Le langage c'est le sql..
Donc quel est le souci exactement ?
Qu'obtiens tu ? -
Contributeur@jordane45bonjour, le soucis est-il d'afficher les messages en deux colonnes ?
-
@jordane45J’ai fais une requête select from
Des messages
Maina j’aimerais
Afficher
Les messages
De l’expéditeur droit et ceux du destinataire à gauche en fonction du date time comme pour messager ou WhatsApp
après le fetch
La j’obtiens les messages de l’expéditeur et du destinataire
Mais pas classer de droit à gauche -
@yg_beVoilà comme pour messanger ou WhatsApp
-
-
-
ModérateurTu n'as pas bien lu ce que je t'ai marqué ou alors tu n'as pas compris....
Je t'ai demandé de tester ta requête dans ta bdd ( via phpmyadmin )
Pour être plus précis.. tu prends la requête, tu vas dans phpmyadmin tu ouvres l'onglet SQL, tu y colles la requêtes et tu cliques sur le bouton exécuter.
Là, tu nous en fais une cpature écran...
Bien entendu, tu nous postes également le code de cette requête sur le forum que l'on voit laquelle tu as utilisé
Tu auras, bien entendu, pris en compte mes remarques précédentes et tu y aura ajouté un ORDER BY sur la date... -
@jordane45La je crois
Que je me trompe c’est pas un problème mysql
Mais Plus-tot php while loop
Je m’excuse
C’est pour sa on arrive pas a se comprendre -
Modérateur@ir_1997Si si, on se comprend bien....
Ton premier souci, c'est d'avoir la bonne requête SQL
De là, il sera plus facile de "trouver" le code php adapté.
Donc.. j'attend que tu répondes à mes questions précédentes....
A partir de là, on verra pour t'aiguiller sur le code php à écrire. -
Modérateur@jordane45Pense à nous faire le ORDER BY en fonction de tes besoins.
Actuellement, le message le plus récent apparait en haut... c'est ce que tu veux ?
Et dans ton code PHP .. qu'as tu essayé ?
Car... il te suffit d'un IF/ELSE sur l'id de l'expéditeur pour savoir de qui vient le message ....
Et via ce if, utiliser, par exemple, une classe CSS pour placer le texte à gauche ou à droite ...
Quoi qu'il en soit,
SI tu n'as pas de souci avec la requête... ta question n'a rien à faire dans le forum Bases de données !
Si ta question concerne l'écriture d'un simple IF/ELSE en PHP... il aurait fallut placer ta question dans le forum PHP et, au passage, te former aux fondamentaux du langage... ( le IF c'est quand même l'une des premières instruction qu'on apprend en programmation ! )
Et enfin,; si ta question concerne le fait d'écrire du html/css pour placer ton texte à gauche ou à droite... là .. c'est dans le forum CSS qu'il aurait fallu poster ton message...
Ce n'est pas la première fois que tu postes dans un forum sans réel lien avec ton problème. Il serait temps que tu fasses des efforts.. histoire qu'on reste motivé à te venir en aide. -
Modérateur@jordane45Et tu en es où avec cette discussion : https://forums.commentcamarche.net/forum/affich-36848256-joindre-une-table-article-avec-mutiple-photo-d-une-autre-table-nommee-image ??
Si elle est résolue, faudrait que tu la marques en tant que telle ...
Sinon, à minima, indiquer où tu en es et sur quoi tu bloques...
-
-
voila ce que sa m'affiche
Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\automobile.php on line 56
<?php $bdd = new PDO("mysql:host=127.0.0.1;dbname=espace_membre;charset=utf8", "root", ""); error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); ?> <?php $iesp ="5 " ; $dest ="10" ; ?> <?php $requete = $bdd->query("SELECT * FROM membres where id = $dest "); while($normal =$requete->fetch()) { ?> <?php echo $normal ['pseudo'] ?> <br> <img src="<?php echo $normal ['avatar']?>" weight = "100" height ="100"> <?php } ?> <?php $requete = $bdd->query("SELECT * FROM messages where id_expediteur = $iesp and id_destinataire = $dest or id_destinataire = $iesp and id_expediteur = $dest order by date DESC " ); while($resultat =$requete->fetch()) if ($resultat = $iesp) {?> <table> <tr> <ul> <?php { ?> <div align="center"> <div align="right"></div> <?php echo $resultat ['id_expediteur']?> <?php echo $resultat ['message']?></br> <?php echo $resultat ['date']?></br> <?php } else { ?> <div align="left"> <?php echo $resultat ['id_expediteur']?> <?php echo $resultat ['message']?></br> <?php echo $resultat ['date']?></br> </div> </div> <?php } ?> </ul> </tr> <?php }?> -
ModérateurBon.. histoire de gagner du temps...
voici à quoi devrait ressembler ton code<?php // Affichage des erreurs php ( à placer AU DEBUT de ton code.. AVANT tout le reste ! ) error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); // connexion de la bdd ET activation des erreurs PDO try{ $bdd = new PDO("mysql:host=127.0.0.1;dbname=espace_membre;charset=utf8", "root", ""); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } // initialisation des variables $iesp ="5 " ; $dest ="10" ; // requête pour récupérer les infos du membre $sql = "SELECT * FROM membres where id = :dest"; $datas = array(':dest'=>$dest); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; $normal = $requete->fetch(); // tu n'attends qu'un seul résultat.. donc pas besoin de boucle }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } //requête pour récupérer les messages $sql = "SELECT * FROM messages WHERE (id_expediteur = :iesp and id_destinataire = :dest) or (id_destinataire = :iesp and id_expediteur = :dest) order by date DESC "; $datas = array(':dest'=>$dest, ':iesp'=>$iesp); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; $messages = $requete->fetchAll(); // On stocke le résultat dans un array }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } echo $normal ['pseudo'] ; echo "<img src='".$normal['avatar']."' height='100' width='100'/>"; echo "<br>"; if(!empty($messages)){ echo "<ul>"; foreach($messages as $M){ $idExp = $M['id_expediteur']; $message = htmlspecialchars($M['message']); $date = $M['date']; if ($idExp == $iesp ) { $class = "classpouraligneragauche"; }else{ $class = "classpouraligneradroite"; } echo "<li class='".$class."' data-id='".$idExp."'> <span class='date'>".$date."</span> <span class='message'>".$message."</span> </li>"; } echo "</ul>"; } ?>
Ta question étant posée dans le forum Bases de données... la requête s'y trouve
Tu nous as ensuite demandé pour le code PHP.. désormais c'est chose faite.
Maintenant il te reste le CSS à faire.. mais là.. tu devras chercher par toi même ou ouvrir une nouvelle discussion dans le bon forum pour ça.
-
-
d'accord c'est saisie merci beaucoup
