mardi 7 août 2018

Multiple checkbox values will not post to the database

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