I am attempting to create a form which allows users to add pages to a custom menus for their website using checkboxes whose value is equal to a page id which currently exists within the database. However, when I submit the form, the menu_id field in the pages table is not being updated. Does anyone have any ideas?
HTML
<fieldset>
<h3>Pages</h3>
<div class="elements">
<div id="container">
<div class="selectpage" id="page1">
<h4>Pages Availabe</h4>
{foreach from=$pages item=p}
<div class="selectPage"><input type="checkbox" name="pages[]" id="{$p.id}" class="pages" value="{$p.id}">{$p.name}</div>
{/foreach}
</div>
<div class="selectPage" id="page2">
<h4>Selected Pages</h4>
{foreach from=$selectedPages item=s}
<div class="pageSelection"><input type="checkbox" name="selectedPages[]" id="{$s.id}" class="pages" value="{$s.id}" checked>{$s.page_name}</div>
{/foreach}
</div>
</div>
</div>
</fieldset>
<div class="action-menu">
<dl>
<dt id="heading">Action Menu</dt>
<dd><a href="#" id="save_link"><span>Save</span></a></dd>
<dd><input type="submit" value="submit" name="submitted" style="display: none;"></dd>
<dd><a href="/website-set-up/{$script_url}/" id="cancel_link"><span>Cancel</span></a></dd>
</dl>
</div>
valid.class.php
class valid {
var $formData = array();
var $hasErrors = false;
function isAnArray($data, $ref) {
if (is_array($data)){
$this->formData[$ref] = $data;
}
}
}
PHP - menus.php
if ($_POST){
$form = new valid();
$form->isAnArray($_POST['selectedPages'], 'Selected Pages');
if ($form->hasErrors){
$objSmarty->assign('errors', $form->DisplayErrors());
}
if ($siteConfig['url_string'][2] == 'edit') {
$selectedPagesQuery = "SELECT * FROM db.pages WHERE menu_id='" . $db->esc($siteConfig['url_string'][3]) . "'";
if ($selectedPages = $db->SelectDBContext($selectedPagesQuery, $siteConfig['administration']['shop_id'])) {
$objSmarty->assign('selectedPages', $selectedPages);
$objSmarty->assign('action', 'edit');
}
if ($_POST) {
if ($form->hasErrors) {
$objSmarty->assign('selectedPages', $_POST);
} else {
if(!empty($_POST['selectedPages'])) {
foreach ($db->esc($form->formData['Selected Pages']) as $pageID) {
$selectedPages = "UPDATE db.pages SET menu_id = '" . $db->esc($siteConfig['url_string'][3]) . "' WHERE id = '$pageID'";
$db->EditDBContext($selectedPages, $siteConfig['administration']['shop_id']);
}
}
header('Location: /set-up/' . $script_url . '/');
exit();
}
Aucun commentaire:
Enregistrer un commentaire