Systeme de messagerie priver [Résolu]

Signaler
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020
-
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020
-
salut tous le monde j'essaye de coder un système de messagerie priver là suis confronter un un problème j'aimerai savoir comment classer les messages de l'expéditeur a droite et ceux du destinataire a gauche
<?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

Messages postés
29888
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020
2 887
Bonjour,

Ta question concerne une requête SQL ???
Messages postés
12788
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 octobre 2020
712 >
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020

cela me semble plutôt un soucis au manque de connaissance html et php.
as-tu déjà fait des exercices plus simples pour afficher des tables html en php?
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020
>
Messages postés
12788
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 octobre 2020

Oui bien sûr , mais les classé de gauche a droite n’est pas le concrètement le vrai soucis

Genre j’aimerais qu’âpres le fetch
que la Requête select fasse la différence entre
Les messages de l’expéditeur et ceux du destinataire
Comme ca je pourrais
Les classer par écho
Dans des balises div
Messages postés
12788
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 octobre 2020
712 >
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020

peut-être ainsi?
SELECT 1, * FROM messages where id_expediteur = $iesp and id_destinataire = $dest  
union
SELECT 2, * FROM messages where  id_destinataire = $iesp and id_expediteur = $dest
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020
>
Messages postés
12788
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
26 octobre 2020

Pardon de n’avoir pas répondu pendant tous ce temps j’étais malade

J’ai deja passé cette étape
Le problème ce pose au niveau de while
Vue que c’est la sa devrait
Séparer les messages de l’expéditeur et destinataire
Si je me trompe pas
Messages postés
29888
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020
2 887 >
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020

Bonjour,

Tu dis avoir passé cette étape... je suppose que tu parles de la requête ?
Tu as donc écris ta requête puis l'as testé DIRECTEMENT dans ta BDD ( via phpmyadmin par exemple) pour t'assurer qu'elle retourne bien les données souhaitées ??? ( sans avoir oublié d'avoir mis un ORDER BY afin de trier par DATE bien entendu ?? )

SI oui, montres nous une capture écran de ce que ça donne....

Si non... ben commence par ça !

Ensuite on verra pour ce qui est du PHP ... mais je ne comprends pas, si tu as bel et bien la bonne requête... sur quoi tu bloques dans ton code PHP ...
Faudra nous montrer ce que tu as essayé de faire ( maintenant que tu as la bonne requête... )
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020

bonjour la voila bdd et ce sa affiche sur la page









J’aimerais les afficher ainsi
Mais j’arrive pas parce le système ne fait pas la différence entre les messages de l’expéditeur et ceux du destinataire


Messages postés
29888
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020
2 887 >
Messages postés
29888
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020

Et 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...
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020
>
Messages postés
29888
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020

d'accord tout est noté j essayerai de suivre les regles

exactement c'est l’écriture if else je sais pas comment utiliser dans la loop while

<?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())
   
  

{?>
  

    <table>
  <tr>
 <ul> 
 <?php
    
  ?>
  <?php echo $resultat ['id_expediteur']?>
  <?php echo $resultat ['message']?></br>
  <?php echo $resultat ['date']?></br>
 
  </ul>
   
  

  
   
 </tr>
 
<?php }?> 


Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020
>
Messages postés
29888
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020

voila comme tu la demander

Messages postés
29888
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020
2 887 >
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020

Il te manque des parenthèses dans ta requête au niveau de tes conditions du where...
Messages postés
29888
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020
2 887 >
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020

Que tu sois dans un while ou non... L'écriture d'une condition if else reste la même...
Donc commence par nous montrer ce que tu as essayé de faire...
et si tu ne sais pas comment écrire un if, tu trouveras sans mal des millions d'exemples sur internet à ce sujet...
Montre-nous que tu fais des efforts dans tes recherches et que tu n'attends pas qu'on te donne du code tout cuit.
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020

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 }?> 


Messages postés
29888
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020
2 887
Bon.. 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.


Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020

daccord mais sinon ils sont toujours pas aligner gauche a droite

Messages postés
29888
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2020
2 887
Tu sais lire ???
Alors relis ce que j'ai marqué dans mon précédent message !!!!!
Messages postés
60
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
26 octobre 2020

d'accord c'est saisie merci beaucoup