Установка или снятие флажков и выполнение различных запросов в PHP

Отредактировано:

Итак, у меня есть несколько флажков. Моя цель - вставить значение флажка в MySQL, если оно отмечено, и удалить значение флажка из MySQL, если оно не отмечено. Все работает нормально, кроме удаления значения. PHP не знает, какие флажки «сняты». Есть идеи?

Пока у меня это:

if(isset($_POST['values']))
{
    foreach($_POST['values'] as $checked)
    {
        $query5 = ("
        INSERT INTO ecust_user_contract (fk_contract, fk_cust_user)
        VALUES ('".$checked."','".$username_u."')
        ");
        $result5 = mysqli_query($conn,$query5); 
    }
}
if(!isset($_POST['values']))
{
    foreach($_POST['values'] as $unchecked)
    {
        $query5 = ("
        INSERT INTO ecust_user_contract (fk_contract, fk_cust_user)
        VALUES ('".$unchecked."','".$username_u."')
        ");
        $result5 = mysqli_query($conn,$query5);
    }
}

person marc_s    schedule 23.10.2013    source источник
comment
Понятно. Способ обойти это — запускать запрос на удаление каждый раз для всех записей, а затем вставлять только для отмеченных. Работает быстро, т.к. у меня максимальное количество чекбоксов не больше 10-15.   -  person marc_s    schedule 24.10.2013


Ответы (6)


Предполагая, что вы использовали метод POST для отправки формы, вы можете сделать что-то вроде этого:

html:

<input type="checkbox" name="values[]" value="val1">
<input type="checkbox" name="values[]" value="val2">
<input type="checkbox" name="values[]" value="val3">

php:

if(isset($_POST['values'])) {
 foreach($_POST['values'] as $checked){
 mysqli_query("insert into tablename(value) values($checked)");
  }
 }else{
 // use Delete query
  }
person Joke_Sense10    schedule 23.10.2013
comment
Это структура, которая мне нужна, спасибо. Он отлично работает! Спасибо. - person marc_s; 24.10.2013

Это мой флажок:

<input type='checkbox' name='Event' value='CB1' />

Когда вы обрабатываете форму, чтобы прочитать это, вы делаете:

$event = $_POST['Event'];

это получает значение флажка:

echo $event;

Но убедитесь, что он установлен, иначе вы получите нулевое значение.

Если у вас их несколько, вы можете сделать это:

<input type='checkbox' name='Event[]' value='CB1' />
<input type='checkbox' name='Event[]' value='CB2' />

$event = array_values($_POST['Event']);

И чтобы получить значения для каждого из них, поместите это в цикл for:

for ($val = 0; $val < count($event); $val++)
        {
            //do something
            echo $event[$val];
        }
person NoLiver92    schedule 23.10.2013

Попробуйте этот код:

<input type='checkbox' name='Event[]' value='CB1' />
<input type='checkbox' name='Event[]' value='CB2' />

Используйте несколько флажков с таким массивом в своей форме.

после отправки формы используйте следующее, чтобы проверить, отмечены ли флажки или нет.

<?php
         if(isset($_REQUEST['Event'])) 
         {
                // do what you want for checked the boxes
         }
         else
         {
                // do what you want for not checked any box
         } 
?>

- Спасибо

person Anand Solanki    schedule 23.10.2013

Я полагаю, вы отправляете некоторую html-форму в код на стороне сервера в php. Если ваша html-страница выглядит так:

<input type="checkbox" name="test" value="value1">

После отправки формы вы можете проверить ее с помощью:

isset($_POST['test'])
or
if ($_POST['test'] == 'value1')
person Amit    schedule 23.10.2013
comment
Запустите ваши запросы соответственно. - person Amit; 23.10.2013

Предположим, ваш HTML-код для флажка выглядит следующим образом:

<input type="checkbox" name="abc" value="yes" />

Затем на стороне php:

<?php
    if( isset( $_POST['abc'] ) ) {
        --Connect to your database--
        --write your query for Insertion--
        }
        else {
        --Connect to your database--
        --write your query for Deletion--
        }
    ?>
person JERRY-the chuha    schedule 23.10.2013

Работайте на меня, сохраните значение проверки и снятия отметки в mysql

HTML:

<form method="post" action="jawab25.php">
<input type="hidden" name="check_lista[]" value="<?php echo $r["id"]?>">
<input type="checkbox" name="check_listb[]" value="<?php echo $r["id"]?>">
<input value="Check" type="Submit">

javab25.php :

    foreach($_POST['check_lista'] as $itema){
        $string="update trans set ck='N' where id='$itema'";
        $tampil=mysql_query($string);
    }

    foreach($_POST['check_listb'] as $itemb){
        $string="update trans set ck='Y' where id='$itemb'";
        $tampil=mysql_query($string);
    }
person Apri Ekaputra    schedule 01.07.2014