نمایش نتایج 1 تا 3 از 3

نام تاپیک: مشکل در ترکیب ارایه ها

  1. #1
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    مشکل در ترکیب ارایه ها

    سلام

    دوستان فرض کنید ما 2 جدول post و comment داریم.

    برای جدول post دستور زیر رو نوشتم :

            $sql="SELECT * FROM `tbl_posts` ";        
    $result = $this->connect()->prepare($sql);
    $result->execute();
    $posts= $result->fetchAll(\PDO::FETCH_ASSOC);


    حالا اگر این خروجی رو بصورت جیسون نمایش بدیم
    خروجی زیر رو دارم :

    همچنین اگر برای جدول comment هم همان دستور رو بنویسیم خروجی زیر رو داریم :
    حالا اگر بیام با کوئری زیر جداول رو بهم ارتباط بدم و در دستور بالا این کوئری رو بنویسم :
            $sql="SELECT         
    tbl_posts.post_id , tbl_posts.post_name , tbl_posts.post_content ,
    tbl_comments.comment_id ,tbl_comments.post_id_FK ,tbl_comments.username ,tbl_comments.comment_content
    FROM tbl_posts
    JOIN tbl_comments
    ON tbl_comments.post_id_FK=tbl_posts.post_id";

    خروجی زیر رو خواهیم داشت :
    حالا سوالم اینجاست که
    به چه صورت خروجی را بصورت زیر داشته باشم :

  2. #2
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: مشکل در ترکیب ارایه ها

    اومدم بدین صورت نوشتم و به اون حالتی که میخواستم رسیدم :

           $sql="SELECT post_id_FK FROM tbl_comments GROUP BY post_id_FK";       $result = $this->connect()->prepare($sql); 
    $result->execute();
    $count = $result->rowCount();


    $sql="SELECT * FROM tbl_posts";
    $result = $this->connect()->prepare($sql);
    $result->execute();
    $posts= $result->fetchAll(\PDO::FETCH_ASSOC);



    for($post_id=1; $post_id <= $count; $post_id++){


    $sql="SELECT * FROM tbl_comments WHERE post_id_FK=? ";
    $result = $this->connect()->prepare($sql);
    $result->bindValue(1, $post_id);
    $result->execute();

    $posts[$post_id-1]['comment']= $result->fetchAll(\PDO::FETCH_ASSOC) ;
    }

    return $posts;


    اما دراین حالت مجبورشدم با حلقه چندبار به دیتابیس وصل بشم تا به اون حالت اطلاعات استخراج شوند.
    به نظرتون راه دیگری وجود نداشت ؟ خود sql کوئری نداشت که به اون صورت گروه بندی کنه ؟!

  3. #3
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: مشکل در ترکیب ارایه ها

    همه پست و کامنت ها رو بخون یبار
    بعد تو حلقه بزرا و به هم وصلشون کن نیاز نداری توی حلقه کوئری بنویسیی


    $posts="SELECT * FROM tbl_posts";
    $comments ="SELECT * FROM tbl_comments ";



    foreach($posts as $k=>$post ){

    $posts[$k]['comment'] = [];

    foreach($comments as $comment )
    {
    if($comment['post_id_FK'] == $post['id'])
    {
    $posts[$k]['comment'][] = $comment ;
    }
    }

    }

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •