В моем последнем посте кто-то помог мне показать мои исследуемые посты, и это было очень полезно. Но я хочу показать это по-другому.
Когда я показываю свою ленту новостей или сообщения в профиле и достигаю конца, загружается больше сообщений. С моим предыдущим кодом он просто загрузил их все, и это проблема, потому что, если будет тысяча сообщений, они все будут загружены одновременно, и я не хочу этой проблемы. Поэтому я хочу настроить его таким образом, чтобы загружать больше сообщений, когда я доберусь до сути. Это работает для моей ленты новостей и сообщений профиля, но не для исследуемых сообщений. Это сразу дает мне инструкцию 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 $time_message
$delete_button
</div>
<div id='post_body'>
$body
<br>
$imageDiv
<br>
<br>
</div>
<div class='newsfeedPostOptions'>
Comments($comments_check_num)
<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";
}