2015-11-02 3 views
0

Я пытаюсь закодировать такую ​​страницу, как facebook-view_posts_page, где мне нужно показать результат как POST 1..Comment 1 .. Комментарий 2 .. POST 2 .. Комментарий 3Для вывода вывода из mysql с помощью PHP (json encode)

выход моего кода

POST 1 
POST 2 
comment 1 
comment 2 
comment 3 

Как я должен заново написать свой код?

<?php 
include("connect.php"); 

$userID=$_REQUEST['userID']; 

$Query=("select * from tb_post where userID='$userID'"); 
$result=mysql_query($Query); 
$count=mysql_num_rows($result); 


if($count>0) 
{ 
//$post['result']="sucess"; 

$joinQuery=("select * from tb_post where tb_post.userID='$userID'"); 
$joinResult=mysql_query($joinQuery); 


    while($row=mysql_fetch_assoc($joinResult)) 
    { 

     $posts[]=$row; 


      $postid=$row['postID']; 
      $commentQuery=("select tb_comment.commentID,tb_comment.userID ,tb_comment.postID ,tb_comment.comment ,tb_comment.date,signup.userName,signup.image from tb_comment,signup where tb_comment.postID='$postid' and signup.userID=tb_comment.userID"); 
      $commentResult=mysql_query($commentQuery); 
       //$post['posts']=$posts; 

       while($commentrow=mysql_fetch_assoc($commentResult)) 
       { 

       $comments[]=$commentrow; 


       } 
    } 
    $post=array("result"=>"success","posts"=>$posts,"comments"=>$comments); 

} 
else 
{ 
    $post['result']="failed"; 
    $post['error']="no data found"; 
} 
$data='content-type:application/json'; 
$data=json_encode($post); 
echo $data; 


?> 

ответ

0

Я объясню вам подход.

Вы извлекаете и добавляете комментарии в массив без ссылки на прямой ключ к сообщению.

array comments; 
while (comment = fetch comments) { 
    comments[post id][] = comment; 
} 

, показывая:

while (post = fetch posts) { 
    echo post title; 
    foreach (comments[post id] as postComment) { 
    echo postComment; 
    } 
} 

Комментарии должны иметь ссылку на пост в качестве ключа комментариев массива.

В вашем случае, вы уже выборки комментарии правильно, просто измените следующее внутреннее время цикла для:

while($commentrow=mysql_fetch_assoc($commentResult)) { 
    $comments[$commentrow['postID'][]=$commentrow; // Observe postID 
} 

Полностью рабочий код:

<?php 
include("connect.php"); 
$userID=$_REQUEST['userID']; 
$Query=("select * from tb_post where userID='$userID'"); 
$result=mysql_query($Query); 
$count=mysql_num_rows($result); 
if($count>0) { 
    $joinQuery=("select * from tb_post where tb_post.userID='$userID'"); 
    $joinResult=mysql_query($joinQuery); 
    while($row=mysql_fetch_assoc($joinResult)) { 
    $posts[]=$row; 
    $postid=$row['postID']; 
    $commentQuery=("select tb_comment.commentID,tb_comment.userID ,tb_comment.postID , 
     tb_comment.comment ,tb_comment.date,signup.userName,signup.image 
     from tb_comment,signup 
     where tb_comment.postID='$postid' and signup.userID=tb_comment.userID"); 
    $commentResult=mysql_query($commentQuery); 
    while($commentrow=mysql_fetch_assoc($commentResult)) { 
     $comments[$commentrow['postID']][] = $commentrow; 
    } 
    } 
    $post=array("result"=>"success","posts"=>$posts,"comments"=>$comments); 
} 
else { 
    $post['result']="failed"; 
    $post['error']="no data found"; 
} 
$data='content-type:application/json'; 
$data=json_encode($post); 
echo $data; 
?> 

Вы можете печатать сообщения и его комментарии следующие:

<?php 
if (! empty($posts)) { 
    foreach ($posts as $post) { 
    echo $post['post_title_field'] . "<br/>"; 
    if (! empty($comments[$post['postID']])) { 
     foreach ($comments[$post['postID']] as $postComment) { 
     echo postComment . "<br/>"; 
     } 
    } 
    } 
} 
?> 
+0

Вы можете помочь мне с полным кодом? –

0

Спасибо всем за то, что помогли мне. Мой друг придумал другое решение, которое является кодом, который я ищу. И вот код:

<?php 
    include("connect.php"); 
    $sel_post=mysql_query("SELECT * FROM tb_post WHERE userID='".$_REQUEST['userID']."'"); 
    if(mysql_num_rows($sel_post)>0) 
    { 
     while($row=mysql_fetch_assoc($sel_post)) 
     { 
      $sel_post_owner=mysql_query("SELECT name,image FROM signup WHERE userID='".$row['userID']."'"); 
      if(mysql_num_rows($sel_post_owner)>0) 
      { 
       while($row_owner=mysql_fetch_array($sel_post_owner)) 
       { 
        $row['post_owner_name']=$row_owner['name']; 
        $row['post_owner_image']=$row_owner['image']; 
       } 
      } 
      else 
      { 
        $row['post_owner_name']=""; 
        $row['post_owner_image']=""; 
      } 
      $sel_comments=mysql_query("SELECT * FROM tb_comment WHERE postID='".$row['postID']."'"); 
      if(mysql_num_rows($sel_comments)>0) 
      { 
       $comments=array(); 
       while($row_comment=mysql_fetch_assoc($sel_comments)) 
       { 
        $sel_comment_owner=mysql_query("SELECT name,image FROM signup WHERE userID='".$row_comment['userID']."'"); 
        if(mysql_num_rows($sel_post_owner)>0) 
        { 
         while($row_comment_owner=mysql_fetch_array($sel_comment_owner)) 
         { 
          $row_comment['comment_owner_name']=$row_comment_owner['name']; 
          $row_comment['comment_owner_image']=$row_comment_owner['image']; 
         } 
        } 
        else 
        { 
          $row_comment['comment_owner_name']=""; 
          $row_comment['comment_owner_image']=""; 
        } 
        $comments[]=$row_comment; 
       } 
       $row['comments']=$comments; 
      } 
      else 
      { 
       $row['comments']=array(); 
      } 

      $Post[]=$row; 
     } 
     $post=array("result"=>"success","Posts"=>$Post); 
    } 
    else 
    { 
     $post['result']="failed"; 
     $post['error']="no data found"; 
    } 
    $data='content-type:application/json'; 
    $data=json_encode($post); 
    echo $data; 

    ?> 
Смежные вопросы