Я не могу получить значения флажков - PullRequest
0 голосов
/ 05 декабря 2011

Я получил это, и я понятия не имею, что мне здесь не хватает:

<?php
    //Some validation for the SUBMIT form
    if(isset($_POST['submit'])&&$_POST['submit']=='add'){
        $_POST = array_map("mysql_real_escape_string", $_POST); //This little fella is responsible for the mess ¬¬
        $campus_string = $_POST['campus']; //To get a checkboxes Array
        ....
        print_r($campus_string); //to see if I am getting the checkboxes when submitting
    }
?>

....

//Now inside <body> of the HTML
<form action="" method="post" name="filosofal">
    //A little loop to create the checkboxes from a DB
    foreach($campi as $keyCampi => $valueCampi){
        echo '<tr>
                  <td>
                  <input type="checkbox" id="campus[]" name="campus[]" value="'.$value['Id'].','.$valueCampi['Id'].'" />'.$valueCampi['Nombre'].'<br />
                  </td>
              </tr>';
    }
</form>

Но print_r ничего не показывает, массив не сохраняется при отправке через POST.Надеюсь, вы можете помочь мне точно определить, куда я это прикручиваю.

РЕДАКТИРОВАТЬ: Решено

Ну, я наконец-то понял это, это отчасти смущает.

В моемкод, который я использую:

$_POST = array_map("mysql_real_escape_string", $_POST);

, чтобы избежать некоторых конфликтов кодирования (например, имен с 'на них), безопасности и т. д.

Я прокомментировал строку, и она теперь работает (не сделал)не могу добавить эту часть, поскольку я не знал о ее актуальности по этому вопросу), никаких изменений не нужно было делать.

Не знаю, почему мне понадобилось пять дней, чтобы найти эту мелочь там, но сейчасготово.В любом случае, спасибо всем.

Ответы [ 3 ]

0 голосов
/ 05 декабря 2011

Вообще говоря, я вижу, что флажок включен или выключен.Поэтому, на мой взгляд, имя флажка является значением.Например:

    <input type="checkbox" name="single"> Single?

Если этот флажок установлен (значение = "вкл"), то ответ - да.Если он не отмечен (значение = «выключено» или нет значения), то ответ - нет.Поэтому мой PHP-код выглядит примерно так:

    if ($_POST['single'] == 'on')
       $single = true;
    else
       $single = false;

По сути, на мой взгляд, «значение» флажка никогда не должно устанавливаться.Это мое особое предпочтение, и это хорошо сработало для меня.Это может не соответствовать вашим потребностям.

Удачи.

0 голосов
/ 05 декабря 2011

Попробуйте сбросить данные поста:

echo "<pre>";
print_r($_POST);
//if you check the radio then it will be listed in your $_POST dump
//add action to your form

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<?php
foreach($campi as $keyCampi => $valueCampi){ 
?>
<tr>
    <td>
    <input type="checkbox" id="campus[]" name="campus[]" value="<?php echo $valueCampi['Id'].','.$valueCampi['Id']; ?>" /><?php echo $valueCampi['Nombre'].'<br />
                  </td>
              </tr>';
    <? php } ?>
</form>
0 голосов
/ 05 декабря 2011

Попробуйте добавить

<input type="hidden" name="submit" value="add" />

В вашу форму, в настоящий момент ваше заявление if будет возвращать false ...

...