2017-06-08 1 views
0

Je suis en train de créer un système de post-commentaire, avec php-mysqli simple, aussi simple qu'il est, il ne semble pas me donner le résultat de la façon que je veux savoir:socialmedia système de commentaires d'état

--- MESSAGE pOST ----
commentaires ----- -----

Voici le code je:

<?php 
session_start(); 
include_once('php_includes/db_conx.php'); 
$user=$_SESSION['user']; 

$o =mysqli_query($db_conx, "SELECT post.id,post.post,post.date,post_comments.poster,post_comments.comment,post_comments.date FROM post LEFT JOIN post_comments ON post.id=post_comments.post_id AND post.username='$user' ORDER BY post.date"); 

while($r=mysqli_fetch_array($o,MYSQLI_ASSOC)){ 
    $status= $r['post']; 
    $date=$r['date']; 
    $com=$r['comment']; 
    $pid=$r['id']; 
    $poster=$r['poster']; 
    if(count($pid) > 1){ 

    } 

    echo $status.'|'.$pid.'|'.$date.'<br>'.$poster.':'.$com.'<hr>'; 

} 

?> 

Il semble dupliquer le poste pour chaque commentaire pour même message.

Je ne suis pas sûr de donner un sens, mais j'apprécierai une réponse.

Répondre

0

D'abord, ajoutez l'ID de publication à ORDER BY de votre requête. Cela garantira que votre message et tous ses commentaires apparaissent ensemble, et seulement une fois. (Je vous recommande d'ajouter post_comments.date ainsi que vos commentaires apparaîtront dans l'ordre, mais ce ne sera pas nécessaire pour obtenir le travail de groupe.)

... ORDER BY post.date, post.id, post_comments.date 

ensuite garder une trace de l'ID de poste que vous allez. Echo les informations de publication uniquement lorsque l'identifiant de publication change.

$id = null; // initialize to null 

while ($r = mysqli_fetch_array($o, MYSQLI_ASSOC)) { 

    $pid = $r['id']; 
    $status = $r['post']; 
    $date = $r['date']; 
    $com = $r['comment']; 
    $poster = $r['poster']; 

    if ($pid !== $id) { 
     echo $status.'|'.$pid.'|'.$date.'<br>'; // new post, so echo post info here 
     $id = $pid;        // $id becomes new post id 
    } 
    if ($com) { 
     echo $poster.':'.$com.'<br>';    // echo comment if present 
    } 
} 

Une autre chose qui va probablement causer des ennuis que vous avez sélectionné à la fois post.date et post_comments.date dans votre requête, donc je ne suis pas sûr que l'on sera en $r['date']. Ce serait une bonne idée d'alias au moins une de ces colonnes pour les désambiguïser.