0

我似乎无法弄清楚如何正确显示从数据库输出 mysql 数据的选择菜单。我想输出博客标题,以便用户可以根据他们在选择菜单中选择的类别将图片上传到所选博客。以下是文件:

形式:

<form action="" method="post" enctype="multipart/form-data">
<p>Choose a file:<br /><input type="file" name="image" /></p>
<p>
Choose an album:<br />
<select name="album_id">
    <?php 
    foreach ($albums as $album){
        echo '<option value="', $album['id'], '">', $album['name'], '</option>';
    }
    ?>
</select><br /><br />
Choose an blog:<br />
<select name="post_id">
    <?php

    foreach ($posts as $post){
        echo '<option value="', $post['id'], '">', $post['title'], '</option>';
    }
    ?>
</select>
</p>
<p><input type="submit" value="Upload" /></p>
</form>

这是posts.php文件:

<?php

//checks if the given post id is in the table
function valid_pid($pid) {
$pid = (int)$pid;

$total = mysql_query("SELECT COUNT(`post_id`) FROM `posts` WHERE `post_id` = {$pid}");
$total = mysql_result($total, 0);

if ($total != 1) {
    return false;
}else{
    return true;
}
}

//gets a summary of all blog posts
function get_posts() {
$sql = "SELECT
            `posts`.`post_id` AS `id`,
            `posts`.`post_title` AS `title`,
            LEFT(`posts`.`post_body`, 512) AS `preview`,
            `posts`.`post_user` AS `user`,
            DATE_FORMAT(`posts`.`post_date`, '%m-%d-%Y %H:%i:%s') AS `date`,
            `comments`.`total_comments`,
            DATE_FORMAT(`comments`.`last_comment`, '%m-%d-%Y %H:%i:%s') AS `last_comment`
        FROM `posts`
        LEFT JOIN(
            SELECT
                `post_id`,
                COUNT(`comment_id`) AS `total_comments`,
                MAX(`comment_date`) AS `last_comment`
            FROM `comments`
            GROUP BY `post_id`
        ) AS `comments`
        ON `posts`.`post_id` = `comments`.`post_id`
        ORDER BY `posts`.`post_date` DESC";

$posts = mysql_query($sql);

 $rows = array();
    while (($row = mysql_fetch_assoc($posts)) !== false) {
            $rows[] = array(
                    'id'                       => $row['id'],
                    'title'                   => $row['title'],
                    'preview'             => $row['preview'],
                    'user'                   => $row['user'],
                    'date'                   => $row['date'],
                    'total_comments' => ($row['total_comments'] === null) ? 0 : $row['total_comments'],
                    'last_comment'     => ($row['last_comment'] === null) ? 'none' : $row['last_comment']
            );
}

return $rows;
}

//gets a single post from the table
function get_post($pid) {
$pid = (int)$pid;

$sql = "SELECT
            `post_title` AS `title`,
            `post_body` AS `body`,
            `post_user` AS `user`,
            `post_date` AS `date`
        FROM `posts`
        WHERE `post_id` = {$pid}";

$post = mysql_query($sql);
$post = mysql_fetch_assoc($post);

$post['comments'] = get_comments($pid);

return $post;
}

//adds a new blog entry
function add_post($name, $title, $body) {
$name = mysql_real_escape_string(htmlentities($name));
$title = mysql_real_escape_string(htmlentities($title));
$body = mysql_real_escape_string(nl2br(htmlentities($body)));

mysql_query("INSERT INTO `posts` (`post_user`, `post_title`, `post_body`, `post_date`) VALUES ('{$name}', '{$title}', '{$body}', NOW())");
}

?>

谢谢你的帮助!

-TechGuy24

4

3 回答 3

0

大家不要紧!很抱歉造成混乱..我把我的 get_posts(); = 在脚本的错误部分发帖。我不得不把它放在一个正在检查其他东西的 if 语句之上。现在完美运行!谢谢!!

于 2012-09-04T20:04:20.827 回答
0
<form action="" method="post" enctype="multipart/form-data">
<p>Choose a file:<br /><input type="file" name="image" /></p>
<p>
Choose an album:<br />
<select name="album_id">
<?php 
foreach ($albums as $album){
    echo '<option value="', $album['id'], '">', $album['name'], '</option>';
}
?>
</select><br /><br />
Choose an blog:<br />
<select name="post_id">
<?php 
$rsPost = mysql_query("YOUR QUERY");
$post=mysql_fetch_assoc("$rsPost");
do { ?>
<option value="<?php echo $post['id'];?>"><?php echo $post['title']; ?></option>
<?php } while ($post = mysql_fetch_assoc($rsPost)); ?>

也许这有帮助!

于 2012-09-04T04:22:57.887 回答
0

尝试将您的<select>块更改为以下内容

<select name="album_id">
    <?php 
    foreach ($albums as $album){
        echo '<option value="'. $album['id'].'">'. $album['name'].'</option>';
    }
    ?>
</select><br /><br />
Choose an blog:<br />
<select name="post_id">
    <?php

    foreach ($posts as $post){
        echo '<option value="'. $post['id']. '">'. $post['title'].'</option>';
    }
    ?>
</select>

在您post.phpwhile()块更改get_posts()为以下

而 ($row = mysql_fetch_assoc($posts)) {
            $行[] = 数组(
                    'id' => $row['id'],
                    'title' => $row['title'],
                    '预览' => $row['预览'],
                    '用户' => $row['用户'],
                    '日期' => $row['日期'],
                    'total_comments' => ($row['total_comments'] === null) ?0 : $row['total_comments'],
                    'last_comment' => ($row['last_comment'] === null) ?'无' : $row['last_comment']
            );
}
于 2012-09-04T04:04:04.010 回答