0

背景:それで、私はYoutubeでPHPとMySQLを使用して独自の簡単なブログ/CMSを構築する方法についてこのチュートリアルに従ってきました。CMSを使用すると、カテゴリの追加、投稿の追加、カテゴリリストの表示、投稿の削除と編集を行うことができます。ファイルは、index.phpファイル、edit_post.php、add_post.phpなどで構成されます。また、すべての関数を含むblog.phpファイルがあります。そして、configファイルとinitファイルがあります。データベースには、投稿とカテゴリの2つのテーブルがあります。ブログは地獄のように醜いですが、以下を除いてすべてが機能します:

問題:投稿を編集すると、投稿のコンテンツが投稿のタイトルに移動し、cat_idが番号0に置き換えられ、コンテンツが番号1に置き換えられます。この情報を確認するには、phpmyadminでデータベースを表示する必要があります。index.phpページに関しては、投稿は単に消えます。また、次の2つのエラーが発生します:「未定義の変数:C:\ xampp \ htdocs \ blogg \ resources \ func \ blogg.phpの69行目の投稿」と「C:\ xampp \ htdocs \のforeach()に無効な引数が指定されましたblogg\index.phpの40行目"。

コード:コードが古いmysql関数を使用していることは知っています。後で作業します。ここでは問題ではありません。とにかく、ここにコードがあります。ここでの助けに本当に感謝しています。

すべての関数を含むファイルから:

function edit_post($id, $title, $contents, $category) {
    $id         = (int) $id;
    $title      = mysql_real_escape_string($title);
    $contents       = mysql_real_escape_string($contents);
    $category       = (int) $category;

    mysql_query(" UPDATE `posts` SET
                    `cat_id`    = {$category},
                    `title`     = '{$title}',
                    `contents`  = '{$contents}'
                 WHERE `id` = {$id}");
}

edit_post.phpファイル全体:

    <?php
include_once('resources/init.php');

$post = get_posts($_GET['id']);

if ( isset($_POST['title'], $_POST['contents'], $_POST['category']) ) {
    $errors = array();

    $title      = trim($_POST['title']);
    $contents   = trim($_POST['contents']);

    if ( empty ($title) ) {
        $errors[] = 'Skriv in titel';
    }

    if ( empty ($contents) ) {
        $errors[] = 'Skriv in text';
    }

    if ( ! category_exists('id', $_POST['category']) ) {
        $errors[] = 'Kategorin finns inte';
    }

    if ( strlen($title) > 255) {
        $errors[] = 'Titeln får inte vara längre än 255 tecken';
    }

    if ( empty($errors) ) {
        edit_post($_GET['id']. $title, $contents, $_POST['category']);

        header("Location: index.php?id={$post[0]['post_id']}");
        die();
    }
}

?>


<!DOCTYPE html>

<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

    <style>
    label { display: block; }
    </style>

    <title> Edit a Post </title>
</head>

<body>
    <h1> Edit a Post </h1>

    <?php

    if ( isset($errors) && ! empty($errors) ) {
        echo '<ul><li>', implode('</li><li>', $errors), '</li></ul>';
    }
    ?>

    <form action="" method="post">
        <div>
            <label for="title"> Title </label>
            <input type="text" name="title" value="<?php echo $post[0]['title']; ?>">
        </div>
        <div>
            <label for="contents"> Contents </label>
            <textarea name="contents" rows="15" cols="50"><?php echo $post[0]['contents']; ?></textarea>
        </div>
        <div>
            <label for="category"> Category </label>
            <select name="category">
                <?php
                foreach ( get_categories() as $category ) {
                    $selected = ($category['name'] == $post[0]['name']) ? ' selected' : '';
                    ?>
                    <option value="<?php echo $category['id']; ?>" <?php echo $selected; ?>> <?php echo $category['name']; ?> </option>
                    <?php
                }
                ?>
            </select>
        </div>
        <div>
            <input type="submit" value="Edit Post">
        </div>
    </form>
</body>
</html>
4

1 に答える 1

1

おやおや…お時間を割いてごめんなさい。私は今問題を発見しました。edit_post($ _ GET ['id']の後、コンマの代わりにドットを使用しました。それを変更した後は、すべてが正常に機能します。小さなこと...

于 2012-11-18T18:23:28.210 に答える