我正在做PHP课程,需要建立一个CMS系统。 问题:在“管理”面板中,仅显示一行添加的帖子信息:example。 如果我添加更多帖子,则必须显示更多行,例如this。 帮帮我,我找不到错误?
源代码:
view_all_posts.php
<?php
$query = "SELECT * FROM posts";
$select_posts = mysqli_query($connection, $query);
/* check there are records in recordset */
if( mysqli_num_rows( $select_posts ) > 0 ) {
while ($row = mysqli_fetch_assoc($select_posts)) {
$post_id = $row['post_id'];
$post_author = $row['post_author'];
$post_title = $row['post_title'];
$post_category_id = $row['post_category_id'];
$post_status = $row['post_status'];
$post_image = $row['post_image'];
$post_tags = $row['post_tags'];
$post_comment_count = $row['post_comment_count'];
$post_date = $row['post_date'];
}
echo "<tr>";
echo "<td>$post_id</td>";
echo "<td>$post_author</td>";
echo "<td>$post_title</td>";
$query = "SELECT * FROM categories WHERE cat_id = {$post_category_id} ";
$select_categories_id = mysqli_query($connection, $query);
while ($row = mysqli_fetch_assoc($select_categories_id)) {
$cat_id = $row['cat_id'];
$cat_title = $row['cat_title'];
echo "<td>{$cat_title}</td>";
}
echo "<td>$post_status</td>";
echo "<td><img src='../images/$post_image' width='150' height='50'></td>";
echo "<td>$post_tags</td>";
echo "<td>$post_comment_count</td>";
echo "<td>$post_date</td>";
echo "<td><a href='posts.php?source=edit_post&p_id={$post_id}'>Edit</a></td>";
echo "<td><a href='posts.php?delete={$post_id}'>Delete</a></td>";
echo "</tr>";
}
?>
add_post.php
<?php
if(isset($_POST['create_post'])){
$post_title = $_POST['title'];
$post_author = $_POST['author'];
$post_category_id = $_POST['post_category'];
$post_status = $_POST['post_status'];
$post_image = $_FILES['image']['name'];
$post_image_temp = $_FILES['image']['tmp_name'];
$post_tags = $_POST['post_tags'];
$post_content = $_POST['post_content'];
$post_date = date('y-m-d');
move_uploaded_file($post_image_temp, "../images/$post_image" );
$query = "INSERT INTO posts (post_category_id, post_title, post_author, post_date,
post_image, post_content, post_tags, post_status) ";
$query .= "VALUES({$post_category_id}, '{$post_title}', '{$post_author}', now(),
'{$post_image}', '{$post_content}', '{$post_tags}', '{$post_status}' ) ";
$create_post_query = mysqli_query($connection, $query);
confirmQuery($create_post_query);
}
?>
<form action="" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="post_title">Post Title
<input type="text" class="form-control" name="title">
</label>
</div>
<div class="form-group">
<label for=""></label>
<select name="post_category" id="">
<?php
$query = "SELECT * FROM categories";
$select_categories = mysqli_query($connection, $query);
confirmQuery($select_categories);
while($row = mysqli_fetch_assoc($select_categories )) {
$cat_id = $row['cat_id'];
$cat_title = $row['cat_title'];
echo "<option value='$cat_id'>{$cat_title}</option>";
}
?>
</select>
</div>
<div class="form-group">
<label for="title">Post Author
<input type="text" class="form-control" name="author">
</label>
</div>
<div class="form-group">
<label for="post_status">Post Status
<input type="text" class="form-control" name="post_status">
</label>
</div>
<div class="form-group">
<label for="post_image">Post Image
<input type="file" name="image">
</label>
</div>
<div class="form-group">
<label for="post_tags">Post Tags
<input type="text" class="form-control" name="post_tags">
</label>
</div>
<div class="form-group">
<label for="post_content">Post Content
<textarea class="form-control" name="post_content" id="" cols="30" rows="10"></textarea>
</label>
</div>
<div class="form-group">
<input class="btn btn-primary" type="submit" name="create_post" value="Publish Post">
</div>
</form>
答案 0 :(得分:0)
似乎只是一个小错误,您必须在SELECT
的{{1}}循环中移动categories
while
查询。
因为在给定代码中,只有最后一条记录将被传递到下一个$select_posts
循环以获取类别并最终打印到浏览器。
因此,正确的代码应如下所示。
while
答案 1 :(得分:0)
像这样使用:
在循环中打印数据
<?php
$query = "SELECT * FROM posts";
$select_posts = mysqli_query($connection, $query);
/* check there are records in recordset */
if( mysqli_num_rows( $select_posts ) > 0 ) {
while ($row = mysqli_fetch_array($select_posts)) {
$post_id = $row['post_id'];
$post_author = $row['post_author'];
$post_title = $row['post_title'];
$post_category_id = $row['post_category_id'];
$post_status = $row['post_status'];
$post_image = $row['post_image'];
$post_tags = $row['post_tags'];
$post_comment_count = $row['post_comment_count'];
$post_date = $row['post_date'];
echo "<tr>";
echo "<td>$post_id</td>";
echo "<td>$post_author</td>";
echo "<td>$post_title</td>";
$query = "SELECT * FROM categories WHERE cat_id = {$post_category_id} ";
$select_categories_id = mysqli_query($connection, $query);
while ($row = mysqli_fetch_array($select_categories_id)) {
$cat_id = $row['cat_id'];
$cat_title = $row['cat_title'];
echo "<td>{$cat_title}</td>";
} // End of Category Loop
echo "<td>$post_status</td>";
echo "<td><img src='../images/$post_image' width='150' height='50'></td>";
echo "<td>$post_tags</td>";
echo "<td>$post_comment_count</td>";
echo "<td>$post_date</td>";
echo "<td><a href='posts.php?source=edit_post&p_id={$post_id}'>Edit</a></td>";
echo "<td><a href='posts.php?delete={$post_id}'>Delete</a></td>";
echo "</tr>";
} // End of Posts Loop
} // End of IF
?>