2015-11-14 2 views
-1

У меня есть 3 флажка, где я могу отправить их в MySQL. Он прекрасно вставляется, но проблема в том, что когда я возвращаюсь к редактированию игры, флажки не проверяются вообще с их правильными значениями (они пусты). Я знаю, что на этом сайте есть много ответов на эту проблему, но я не нашел ни одного из них для работы. Возможно, это что-то, что я делаю неправильно с кодом. Я отправлю его здесь.Как сохранить флажки после отправки формы

ЭТО КРАТКАЯ ВЕРСИЯ МОЕГО КОДА, ПОТОМУ ЧТО ЕГО СЛИШКОМ БОЛЬШОЙ.

if (isset($_GET['add']) || isset($_GET['edit'])) { 

    $checkbox = ((isset($_POST['available_consoles']) && $_POST['available_consoles'] != '') ? sanitize($_POST['available_consoles']) : ''); 

if (isset($_GET['edit'])) { 
    $checkbox = ((isset($_POST['available_consoles']) && $_POST['available_consoles'] != '') ? $_POST['available_consoles'] : $game['available_consoles']); 
} 

if ($_POST) { 
    // Separate ech checkbox value with a SPACE into the database. 
    $checkbox = implode(', ', $_POST['available_consoles']); 

    // DO INSERT HERE 
} 

} 
<!-- Add the Add Form --> 
     <form action="games.php?<?php echo ((isset($_GET['edit'])) ? 'edit='.$edit_id : 'add=1'); ?>" method="post" enctype="multipart/form-data"> 

      <!-------------- AVAILABLE CONSOLES -------------------> 
      <div class="form-group col-md-6"> 
       <label for="checkbox">Available Consoles:&nbsp;</label> 
       <label class="checkbox"> 
        <input type="checkbox" <?php if (in_array('Xbox One', $_POST['available_consoles'])) {echo 'checked';} ?> name="available_consoles[]" value="Xbox One"> 
       </label> 
       <label class="checkbox"> 
        <input type="checkbox" <?php if (in_array('PS4', $_POST['available_consoles'])) {echo 'checked';} ?> name="available_consoles[]" value="PS4"> 
       </label> 
       <label class="checkbox"> 
        <input type="checkbox" <?php if (in_array('PC', $_POST['available_consoles'])) {echo 'checked';} ?> name="available_consoles[]" value="PC"> 
       </label> 
      </div> 
      <div class="form-group pull-right"> 
       <a href="games.php" class="btn btn-default">Cancel</a> 
       <input type="submit" value="<?php echo ((isset($_GET['edit'])) ? 'Edit ' : 'Add '); ?> Game" class="btn btn-success"> 
      </div> 

</form> 

Получение этих сообщение об ошибке рядом с флажком:

Notice: Undefined index: available_consoles in C:\xampp\htdocs\Gamesite\admin\games.php on line 425 

Warning: in_array() expects parameter 2 to be array, null given in C:\xampp\htdocs\Gamesite\admin\games.php on line 425 
name="available_consoles[]" value="Xbox One"> 

Получение его для всех 3-х флажков

+0

Jah

+0

Это не работает. – David

+0

попробуйте это на xbox один: Jah

ответ

0

это то, что вам нужно

<input type="checkbox" <?php if (in_array('Xbox One', $_POST['available_consoles'])) {echo 'checked';} ?>id="checkbox" name="available_consoles[]" value="Xbox One"> 

заменить in_array('Xbox One' с другими консолями имен для каждого входа

Вот простая функция:

function checked($t,$v){ 
    if (in_array("{$t}", $v)) { 
    return 'checked'; 
    } 
} 

использование: <?php echo checked('Xbox One',$con); ?>

это не массив и не было его от $ _POST это было фактически из БД, поэтому я добавил свой код в соответствие с ответом.

+0

Внимание: in_array() ожидает, что параметр 2 будет массивом, null указан в C: \ xampp \ htdocs \ Gamesite \ admin \ games.php в строке 425 > – David

+0

попробовал с @ $ POST, все еще дал мне сообщение об ошибке – David

+0

попробуйте сейчас извините .. я сделал маленькую опечатку – Jah

Смежные вопросы