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

<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.php変更しますwhile()get_posts()

while ($row = mysql_fetch_assoc($posts)) {
            $rows[] = 配列(
                    'id' => $row['id'],
                    'タイトル' => $row['タイトル'],
                    'プレビュー' => $row['プレビュー'],
                    'ユーザー' => $row['ユーザー'],
                    'date' => $row['date'],
                    '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 に答える
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 に答える