Более изощренное отображение сообщений для изучения - PullRequest
0 голосов
/ 13 июля 2020

В моем последнем посте кто-то помог мне показать мои исследуемые посты, и это было очень полезно. Но я хочу показать это по-другому.

Когда я показываю свою ленту новостей или сообщения в профиле и достигаю конца, загружается больше сообщений. С моим предыдущим кодом он просто загрузил их все, и это проблема, потому что, если будет тысяча сообщений, они все будут загружены одновременно, и я не хочу этой проблемы. Поэтому я хочу настроить его таким образом, чтобы загружать больше сообщений, когда я доберусь до сути. Это работает для моей ленты новостей и сообщений профиля, но не для исследуемых сообщений. Это сразу дает мне инструкцию else. это довольно долго, но я предполагаю, что проблема где-то в верхней части метода.

public function loadExplorePosts($data, $limit) {

$page = $data['page']; 
$userLoggedIn = $this->user_obj->getUsername();

if($page == 1) 
    $start = 0;
else 
    $start = ($page - 1) * $limit;

$str = ""; //String to return 

$explore_image = $this->con->prepare('SELECT id, body, added_by, date_added, likes, image FROM posts ORDER BY RAND()');
$explore_image->execute();
// $explore_image->store_result();
//$explore_image->bind_result($id, $body, $added_by, $date_added, $likes, $image);
$explore_image_result = $explore_image->get_result();

    if ($explore_image_result->num_rows > 0) {

    $num_iterations = 0; //Number of results checked (not necasserily posted)
    $count = 1;

    while ($row = $explore_image_result->fetch_assoc()) {

        $id = $row['id'];
        $body = $row['body'];
        $added_by = $row['added_by'];
        $date_time = $row['date_added'];
        $imagePath = $row['image'];

    if ($userLoggedIn != $added_by) {

        //Check if user who posted, has their account closed
        $added_by_obj = new User($this->con, $added_by);
        if($added_by_obj->isClosed()) {
            continue;
        }

        $user_logged_obj = new User($this->con, $userLoggedIn);
        if($user_logged_obj->isFriend($added_by)){

            if($num_iterations++ < $start)
                continue; 

            //Once 10 posts have been loaded, break
            if($count > $limit) {
                break;
            }
            else {
                $count++;
            }

            if($userLoggedIn == $added_by)
                $delete_button = "<button class='delete_button btn-danger' id='post$id'>X</button>";
            else 
                $delete_button = "";

            $user_details_query = $this->con->prepare('SELECT first_name, last_name, profile_pic FROM users WHERE username = ?');
            $user_details_query->bind_param("s", $added_by);
            $user_details_query->execute();
            $user_details_query_result = $user_details_query->get_result();

            while ($row = $user_details_query_result->fetch_assoc()) {

                $first_name = $row['first_name'];
                $last_name = $row['last_name'];
                $profile_pic = $row['profile_pic'];
            }

            ?>
            <script> 
                function toggle<?php echo $id; ?>(event){
                        
                    var target = $(event.target);
                 
                    if (!target.is('a') && !target.is('button')) {
                        var element = document.getElementById("toggleComment<?php echo $id; ?>");
                 
                        if(element.style.display == "block")
                            element.style.display = "none";
                        else
                            element.style.display = "block";
                    }
                                                
                }

            </script>
            <?php

            $comments_check = $this->con->prepare('SELECT * FROM comments WHERE post_id = ?');
            $comments_check->bind_param("i", $id);
            $comments_check->execute();
            $comments_check->store_result();
            $comments_check_num = $comments_check->num_rows;

            //Timeframe
            $date_time_now = date("Y-m-d H:i:s");
            $start_date = new DateTime($date_time); //Time of post
            $end_date = new DateTime($date_time_now); //Current time
            $interval = $start_date->diff($end_date); //Difference between dates 
            if($interval->y >= 1) {
                if($interval->y == 1)
                    $time_message = $interval->y . " yr"; //1 year ago
                else 
                    $time_message = $interval->y . " yrs"; //1+ year ago
            }
            else if ($interval->m >= 1) {
                if($interval->d == 0) {
                    $days = " ago";
                }
                else if($interval->d == 1) {
                    $days = $interval->d . "d";
                }
                else {
                    $days = $interval->d . "ds";
                }

                if($interval->m == 1) {
                    $time_message = $interval->m . "m ". $days;
                }
                else {
                    $time_message = $interval->m . "m ". $days;
                }

            }
            else if($interval->d >= 1) {
                if($interval->d == 1) {
                    $time_message = "Yesterday";
                }
                else {
                    $time_message = $interval->d . " days ago";
                }
            }
            else if($interval->h >= 1) {
                if($interval->h == 1) {
                    $time_message = $interval->h . "hr";
                }
                else {
                    $time_message = $interval->h . "hrs";
                }
            }
            else if($interval->i >= 1) {
                if($interval->i == 1) {
                    $time_message = $interval->i . "min";
                }
                else {
                    $time_message = $interval->i . " mins";
                }
            }
            else {
                if($interval->s < 30) {
                    $time_message = "Just now";
                }
                else {
                    $time_message = $interval->s . "sec";
                }
            }

            if($imagePath != "") {
                $imageDiv = "<div class='postedImage'>
                                <img src='$imagePath'>
                            </div>";
            }
            else {
                $imageDiv = "";
            }

            $str .= "<div class='status_post' onClick='javascript:toggle$id(event)'>
                        <div class='post_profile_pic'>
                            <img src='$profile_pic' width='50'>
                        </div>

                        <div class='posted_by' style='color:#ACACAC;'>
                            <a href='$added_by'> $first_name $last_name </a> $user_to &nbsp;&nbsp;&nbsp;&nbsp;$time_message
                            $delete_button
                        </div>
                        <div id='post_body'>
                            $body
                            <br>
                            $imageDiv
                            <br>
                            <br>
                        </div>

                        <div class='newsfeedPostOptions'>
                            Comments($comments_check_num)&nbsp;&nbsp;&nbsp;
                            <iframe src='like.php?post_id=$id' scrolling='no'></iframe>
                        </div>

                    </div>
                    <div class='post_comment' id='toggleComment$id' style='display:none;'>
                        <iframe src='comment_frame.php?post_id=$id' id='comment_iframe' frameborder='0'></iframe>
                    </div>
                    <hr>";
        }

        ?>
        
        <?php

    }
    } //End while loop

    if($count > $limit) 
        $str .= "<input type='hidden' class='nextPage' value='" . ($page + 1) . "'>
                    <input type='hidden' class='noMorePosts' value='false'>";
    else 
        $str .= "<input type='hidden' class='noMorePosts' value='true'><p style='text-align: centre;' class='noMorePostsText'><center> No more posts to show! </center></p><br><br>";
}

echo $str;
}

EDIT -----------

Я только что пробовал это и появилось эхо if, так что, возможно, я пытаюсь вывести результаты таким образом:

if ($explore_image_result > 0) {
    echo "Found";
} else {

    echo "not";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...