I code an edit page for my blog, but not all data from database are displayed. Just 3 / 7 = title, point, publish. Option, seo, perex and content are not. Pic is irrelevant because there is no option to upload yet. Here is my code:
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>
Why is that? How can I fix it? Thank you for your help.
Par ex. output of var_dump($page); => array(10) { ["id"]=> string(3) "148" ["title"]=> string(7) "Testing" ["seo"]=> string(9) "seo words" ["pic"]=> string(0) "" ["perex"]=> string(38) "Testing is needed before going online." ["content"]=> string(637) "The whole comes here. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Everything except this editing page work just fine. " ["datum"]=> string(19) "2022-04-08 20:59:15" ["pointa"]=> string(25) "the main point comes here" ["kateg"]=> string(17) "zasadneschopnosti" ["publish"]=> string(1) "1" }
It looks perfectly fine.
find_page_by_iddoing? I'd bet it's only returningtitle,point, andpublish. And what ish()doing when echoing$page['seo']?var_dump($page); die();after$page = find_page_by_id($id);? Can you prove to use thatarticlehas those columns?$pageis an array and has all of those keys? Per the example I put together at 3v4l.org/rE9pr it works just fine as long as$pageis an associative array with the expected keys. Are you inspecting the HTML to confirm if the inputs'valueparameter is empty, or are you just viewing the rendered page? Please edit your question to include an example of a full var_dump of the$pagesvariable.