Я пытаюсь создать механизм сортировки / заказа для сообщений на моем веб-сайте, сортируя их по самым новым или самым популярным. У меня есть элемент HTML <select>
на моей главной странице. php, который срабатывает через jQuery onChange
, чтобы сохранить выбранное значение параметров в переменной. Затем он запускает запрос GET к фиду файлов. php со значением выбранной опции. Теперь это ничего не показывает. Ошибка: Notice: Undefined index: order
в файле фида. php.
<select id="order">
<option value="published">Newest</option>
<option value="votes">Hottest</option>
</select>
jQuery, который проверяет изменение и затем сохраняет выбранное значение #order
childs в переменной selected
.
$('#order').change(function() {
var selected = $(this).children("option:selected").val();
$.ajax({
type: 'GET',
data: {order: selected},
url: '../../php/includes/posts/feed.php'
});
});
Тогда у меня есть скрипт PHP (feed. php), который выводит сообщения с while-l oop (не включенным в этот вопрос.) While-l oop работает как надо в противном случае. Я хотел бы изменить порядок таблицы SQL асинхронно.
$order = $_GET['order'];
if(isset($order)) {
$sql = "SELECT * FROM posts ORDER BY '$order' DESC LIMIT 0, 5";
$results = $conn->query($sql);
// The php script continues but it works as it should without the code above of course.
Возможно, это связано с тем, что $ order не сохраняется перед использованием в ленте. php?
РЕДАКТИРОВАТЬ:
Это весь код для фида. php Теперь я изменил код для bth feed. php и мой jQuery скрипт, чтобы включить изменения, которые были даны
if(isset($order)) {
$order = $_GET['order'];
$sql = "SELECT * FROM posts ORDER BY `$order` DESC LIMIT 0, 5";
$results = $conn->query($sql);
if ($results->num_rows > 0) {
while($row = $results->fetch_assoc()) {
$postID = $row['postID'];
$author = $row['author'];
//$img = $row['fileName'];
$published = strtotime($row['published']);
echo '
<div class="post">
<div class="post__head">
<div>
<h6>'.$row['title'].'</h6>
<p> <i class="far fa-user"></i> '.$author.'</p>
<p> <i class="far fa-clock"></i> '.date("j.n.Y - H:i:s", $published).'</p>
</div>
<div class="post__votes">
<p>'.$row['votes'].' Votes</p>
<i data-id="'.$postID.'" class="fas fa-arrow-up -upvote"></i>
<i data-id="'.$postID.'" class="fas fa-arrow-down -downvote"></i>
</div>
</div>
<div class="post__body">
<div class="post__img">
</div>
<p>'.$row['message'].'</p>
<div class="post__comments">
<p>Comments</p>';
$sqlComments = "SELECT * FROM comments WHERE comments.postID = $postID"; // Loop through all comments for a given post
$resultsComments = $conn->query($sqlComments);
if($resultsComments->num_rows > 0){
while($row = $resultsComments->fetch_assoc()) {
echo $row['comment'] . '<br>';
}
} else {
echo 'No comments yet...';
}
echo'
</div>
</div>
<div class="post__footer">';
if(isset($_SESSION["loggedin"])) {
$role = $_SESSION['role'];
if($role == 'admin' || $role == 'editor' || $author == $_SESSION['username']) { # Edit posts only if logged in and as a either admin, editor or as the user who created the post
echo '
<button type="button" class="post__editBtn" data-id="'.$postID.'">Edit <i class="fas fa-pencil-alt"></i></button>
<button type="button" class="post__commentBtn" data-id="'.$postID.'">Comments <i class="fas fa-comments"></i></button>';
}
if($role == 'admin' || $author == $_SESSION['username']) { # Delete posts only if logged in as a admin or the author of the post
echo'
<form method="post">
<input type="hidden" value="'.$postID.'" name="post__deleteHidden">
<button name="post__deleteBtn">Delete <i class="far fa-trash-alt"></i></button>
</form>';
}
}
echo'</div>
</div>';
}
echo '
<div class="overlay-edit">
<p>Editing </p>
<form method="post" action="../../php/includes/posts/editPost.php" class="post__edit">
<input type="text" name="postTitle" placeholder="Edit title">
<textarea name="postMsg" maxlength="255" placeholder="Edit message"></textarea>
<button type="submit">Edit Post</button>
<button type="button" class="post__edit-close">Close</button>
<input type="hidden" name="post__editHidden" value="">
</form>
</div>';
echo'
<div class="overlay-comment">
<form method="post" action="../../../php/includes/posts/createComment.php" class="post__comment">
<textarea name="comment" maxlength="255" placeholder="Comment"></textarea>
<button type="submit">Submit comment</button>
<button type="button" class="post__comment-close">Close</button>
<input type="hidden" name="post__commentHidden" value="">
</form>
</div>';
if(isset($_POST['post__deleteBtn'])) { # Delete a post
$conn->query("DELETE * FROM posts WHERE postID = ".$_POST['post__deleteHidden']."");
}
} else {
echo '<p>No posts to show...</p>';
}
}
$conn->close();
?>