背景:所以,我一直在关注如何在Youtube上使用PHP和MySQL构建自己的简单博客/ CMS。 CMS允许您添加类别,添加帖子,查看类别列表以及删除和编辑帖子。这些文件由index.php文件,edit_post.php,add_post.php等组成。此外,还有一个包含所有功能的blog.php文件。还有config和init文件。该数据库有两个表,帖子和类别。博客很难看,但一切正常,除了:
问题:在编辑帖子时,帖子的内容会移到帖子标题,cat_id会替换为数字0,内容会被替换为数字1.我只能通过在phpmyadmin中查看数据库来查看此信息。至于index.php页面,帖子就会消失。我还得到了这两个错误:“未定义的变量:第69行的C:\ xampp \ htdocs \ blogg \ resources \ func \ _blogg.php中的帖子”和“C:\ xampp \ htdocs \中为foreach()提供的无效参数”第40行的blogg \ index.php。
代码:我知道代码使用过时的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>
答案 0 :(得分:1)
哦,伙计......我很抱歉花时间。我现在发现了这个问题。在edit_post之后($ _ GET [&#39; id&#39;]我使用了一个点而不是一个逗号。更改后,一切正常。小事......