сохранить чекбоксы

Gibiskus

Новичок
у меня есть в базе поле "cheked", сохраняю через кнопку(там апдейт $_POST['chek']) :
PHP:
    function edit_content() { //cоздать ссылки на страницы которые уже есть в базе 
    $tpl=""; 
    $sql = mysql_query('SELECT * FROM content');// выводим поля, ссылки и чекбокс
    while($record = mysql_fetch_array($sql)) {
      // не пашет так как хотелось бы  if($record['cheked']==1){ $cheked = "Checked"; } 
      // не пашет так как хотелось бы  if($record['cheked']==0){ $cheked = "noChecked";}
    
        $tpl .= '<tr><td>'.$record['pageid'].': '.$record['pagetittle'].'</td><td>
        <input type="checkbox" name="chek" value="'.$record['pageid'].'" '.$cheked.'/>
</td>';
 
    }
    
return $tpl;
}//edit_content()
мое наболевшее - как сохранить значения чекбоксов?
 

Ярослав

Новичок
1. Использовать $checked = 'checked="checked"'
2. Использовать <input type="hidden" для сохранения статуса, когда чекбокс - не checked
 

Gibiskus

Новичок
спасибо, по разному пробовал но у меня так и не получилось, проблема с теми что не отмечены. Мне подсказали что нужно затереть а потом заново отметить, продолжаю пробовать.... Не затруднит на основе этого кода показать как сохранить измененные пользователем значения чекбоксов в базу данных?
помогите пожалуйста.
PHP:
$tpl="";
    $sql = mysql_query('SELECT * FROM content');// выводим поля, ссылки и чекбокс
    while($record = mysql_fetch_array($sql)) {
        $tpl .= '<tr><td>'.$record['pageid'].': '.$record['pagetittle'].'</td><td>
        <a href="'.$_SERVER['PHP_SELF'].'?action=paste_in_textarea&pageid='.$record['pageid'].'"><img src="collapsed.gif"/></a>
        <a href="'.$_SERVER['PHP_SELF'].'?action=paste_in_textarea&pagedel='.$record['pageid'].'&delete=y"><img src="close.png"/></a>';
        
        if($record['cheked']==1)
        $tpl .= '<input type="checkbox" name="chek['.$record['pageid'].']" value="1" checked></td>';
        else 
        $tpl .= '<input type="checkbox" name="chek['.$record['pageid'].']" value="0" ></td>';
    }
    
    if(isset($_POST['save'])) {
       //  if(isset($_POST['chek'])) {
       //  ??????
       //  mysql_query ("UPDATE content SET cheked=1 where pageid='".$SESSION['id']."';");
       //  mysql_query ("UPDATE content SET cheked=0 where pageid='".$SESSION['id']."';");
       //  }

        $sql= mysql_query ("UPDATE content SET pagecontent = '".$_POST['mess']."', pagetittle = '".$_POST['tittle']."',
        pagediscription = '".$_POST['discription']."', pagekeywords = '".$_POST['keywords']."' WHERE pageid='".$_SESSION['id']."';");
    }
    $html = '';
    if(isset($_GET['pageid'])) {
        $sql = mysql_query("select * FROM content WHERE pageid='".$_GET['pageid']."';"); //вставка контента в текстовую форму
        while($record = mysql_fetch_array($sql)) {
            $content = $record['pagecontent'];
            $title = $record['pagetittle'];
            $discription = $record['pagediscription'];
            $keywords = $record['pagekeywords'];
        }
    }
    else {
    $content="";
    $title ="";
    $discription ="";
    $keywords ="";
    $_GET['pageid']=0;
    }
    

    $_SESSION['id'] = $_GET['pageid'];
 

shelestov

я тут часто
Во первых, как уже говорил Ярослав, правильней все же так:
PHP:
$tpl .= '<input type="hidden" name="chek['.$record['pageid'].']" value="0" />'.
'<input type="checkbox" name="chek['.$record['pageid'].']" value="1"<?php if ($record['cheked']==1): ?> checked="checked"<?php endif; ?>></td>';
Если чекбокс не будет выбран серверу передастся значение 0 для этого элемента, если будет выбран, значение 1, т.к. чекбокс перезапишет value поля hidden.

Сохранение:
Работаем с $_POST['chek'] как с массивом.
PHP:
if (!empty($_POST['chek'])) {
    foreach ($_POST['chek'] as $page_id => $value) {
        if ((int)$page_id > 0) {
            mysql_query ("UPDATE content SET cheked=".(int)$value." where pageid='".(int)."';");
        }
    }
}
Надеюсь я правильно понял вашу задачу :)
 

Gibiskus

Новичок
спасибо! Вы правильно поняли, - и суть идеи кажется я теперь понял в какой то мере.
с $page_id заменил на $_SESSION['id'] - заработало как нужно было.
PHP:
if (!empty($_POST['chek'])) {
            foreach ($_POST['chek'] as $_SESSION['id'] => $value) {
                if ($_SESSION['id'] > 0) {
                    mysql_query ("UPDATE content SET cheked=".(int)$value." where pageid='".(int)$_SESSION['id']."';"); 
                   
                }
            }
        }
еще раз спасибо и низкий Вам поклон!
 
Сверху