PHP+MySQL:编辑页面不显示数据库中的所有数据



我为博客编写了一个编辑页面,但并没有显示数据库中的所有数据。仅3/7=标题、点、发布。选项,seo,perex和内容不是。图片是无关紧要的,因为还没有上传的选项。这是我的代码:

if(is_post_request()) {
$page = [];
$page['id'] = $id;
$page['title'] = $_POST['title'] ?? '';  
$page['pic'] = $_POST['pic'] ?? '';
$page['perex'] = $_POST['perex'] ?? '';          
$page['option'] = $_POST['option'] ?? '';
$page['seo'] = $_POST['seo'] ?? '';
$page['pointa'] = $_POST['pointa'] ?? '';
$page['content'] = $_POST['content'] ?? '';
$page['publish'] = $_POST['publish'] ?? '';

$result = update_page($page);
if($result === true) {
redirect_to(url_for('/blog/public/clanoktemplate.php?id=' . $id));
} else {
$errors = $result;
}
} else {
$page = find_page_by_id($id);
} 

<form action="<?php echo url_for('/blog/private/edit.php?id=' . h(u($id))); ?>" method="POST">
<h2>Tu môžeš upraviť článok</h2>
<div class="part">
<label for="title">Názov článku:</label><br>
<input type="text" id="title" name="title" value="<?php echo h($page['title']); ?>" required><br>
</div>
<div class="part">
<label for="option">Kategória:</label>
<select type="option" id="option" name="option" value="<?php echo h($page['option']); ?>" required>
<option value="pristup">Prístup</option>
<option value="sebaedukacia" selected>Sebaedukácia</option>
<option value="sebarodicovstvo">Sebarodičovstvo</option>
<option value="zasadneschopnosti">Zásadné schopnosti</option>
<option value="dusevnymajetok">Duševný majetok</option>
<option value="vzdelaniebuducnosti">Vzdelanie budúcnosti</option>
</select><br>
</div>
<div class="part">
<label for="seo" id="seo" name="seo">SEO:</label><br>
<input type="text" id="seo" name="seo" value="<?php echo h($page['seo']); ?>"><br>
</div>
<div class="part">
<label for="pointa" id="pointa" name="pointa">Hlavná myšlienka:</label><br>
<input type="text" id="pointa" name="pointa" value="<?php echo h($page['pointa']); ?>"><br>
</div>
<div class="part">
<label for="perex" id="perex" name="perex">Perex:</label><br>
<textarea id="perex" name="perex" rows="4" value="<?php echo h($page['perex']); ?>" required></textarea><br>
</div>
<button type="button" id="pic" name="pic"> Nahrať obrázok </button><br>
<div class="part">
<label for="content" id="content" name="content">Celý článok:</label><br>
<textarea id="content" name="content" rows="20" value="<?php echo h($page['content']); ?>"required></textarea><br>
</div>
<div class="mini-part" style="padding-bottom: 15px; font-size: 20px; text-align: left; ">
<label for="visible" id="publish" name="publish">Viditeľný:</label>
<input type="hidden" id="publish" name="publish" value="0">
<input type="checkbox" id="publish" name="publish" value="1"<?php if($page['publish'] == "1") { echo " checked"; } ?>><br>
</div>

为什么?我该怎么修?谢谢你的帮助。

Par ex.var_dump的输出($page(=>数组(10({["id"]=>字符串(3("148">["title"]=<字符串(7("测试">["seo"]=>串(9("seo单词"["pic"]=>字符串(0(">["perex"]=>string(38("上线前需要进行测试。"["内容"]=>字符串(637(";所有人都来了。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。Lorem ipsum悲哀坐amet。除了这个编辑页面外,其他一切都很好"["数据"]=>串(19(";2022-04-08 20:59:15";["pointa"]=>串(25(";要点在这里";["kateg"]=>串(17(";zasadneschopnosti";["发布"]=>字符串(1(";1〃}

它看起来非常好。

您错误地使用了textarea。文本区域不使用value=属性。

应该是

<textarea> ...value of data here </textarea>

这样修复你的代码:

<textarea id="perex" name="perex" rows="4" required><?php echo h($page['perex']); ?></textarea><br>

您在选项方面也有类似的问题。同样,select标记没有value属性。每个选项都有一个值属性,提交表单时,该值将设置为所选选项的值。

为了显示该选项,您需要编写与您在数据库中设置的值相匹配的代码,以匹配该选项的值,并且对于与先前值匹配的选项,需要添加";选择";。

通常这是用三元来完成的,所以对于每个选项,你都需要这样的东西:

<option value="pristup" <?php h($page['option']) === 'pristup' ? ' selected' : '' ?>>Prístup</option>

最新更新