2016-05-11 2 views
1

Вот мой код, я пытаюсь добавить несколько элементов в базу данных, в этих 5 элементах мой один элемент по умолчанию, когда я проверяю элемент № 3, в элементе базы данных 3 значение сохранить как 0 и первое значение элемента сохранить как 1.PHP Multi Radio Button Array

Это не правильно, я хочу, что когда Пункт 3 проверяется, чем после того, как отправить форму, чем в базе данных Пункт 3 сохранить как 1 еще сохранить значение 0.

Пожалуйста, любой один сказать мне как к этой работе

<?php 

if (isset($_POST['action'])) { 
    $prods = count($_POST['prod']); 

    for ($i = 0; $i < $prods; $i++) { 
     $prod = $_POST['prod'][$i]; 
     $default = (!empty($_POST['is'][$i])) ? 1 : 0; 
     mysql_query("INSERT INTO `items` (`prod`, `is_default`)VALUES('{$prod}', '{$default}')"); 
    } 
} 
?> 

<form action="" method="post"> 
    <input type="hidden" name="action" value="add"> 

    <span>Item Name</span> <span style="padding-left:100px">Is default</span> <br> 

    <input type="text" name="prod[]" value=""> 
    <input type="radio" name="is[]" value="1">Item 1<br> 
    <input type="text" name="prod[]" value=""> 
    <input type="radio" name="is[]" value="1">Item 2<br> 
    <input type="text" name="prod[]" value=""> 
    <input type="radio" name="is[]" value="1">Item 3<br> 
    <input type="text" name="prod[]" value=""> 
    <input type="radio" name="is[]" value="1">Item 4<br> 
    <input type="text" name="prod[]" value=""> 
    <input type="radio" name="is[]" value="1">Item 5<br> 

    <input type="submit" value="Save"> 
</form> 
+1

** ПРЕДУПРЕЖДЕНИЕ **: Если вы только учитесь PHP, пожалуйста, не используйте [ 'mysql_query'] (http://php.net/manual/en/function.mysql-query. php). Это так ужасно и опасно, что он был удален в PHP 7. Замена, такая как [PDO, не трудно учиться] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps -pdo-for-database-access /) и руководство, подобное [PHP The Right Way] (http://www.phptherightway.com/), объясняет лучшие практики. Ваши пользовательские параметры ** не ** [правильно экранированные] (http://bobby-tables.com/php), и есть [SQL-инъекции ошибок] (http://bobby-tables.com/), которые могут быть использованы , – tadman

ответ

1

Прежде всего, измените свой флажок value атрибуты, как это:

value="0", value="1", value="2" и т.д.

А потом во время обработки формы, получить значение $default как это:

$default = (isset($_POST['is'][0]) && $_POST['is'][0] == $i) ? 1 : 0; 

Так что ваш код должен быть таким:

HTML:

<form action="" method="post"> 
    <input type="hidden" name="action" value="add"> 

    <span>Item Name</span> <span style="padding-left:100px">Is default</span> <br> 

    <input type="text" name="prod[]" value=""> 
    <input type="radio" name="is[]" value="0"> Item 1<br> 
    <input type="text" name="prod[]" value=""> 
    <input type="radio" name="is[]" value="1">Item 2<br> 
    <input type="text" name="prod[]" value=""> 
    <input type="radio" name="is[]" value="2">Item 3<br> 
    <input type="text" name="prod[]" value=""> 
    <input type="radio" name="is[]" value="3">Item 4<br> 
    <input type="text" name="prod[]" value=""> 
    <input type="radio" name="is[]" value="4">Item 5<br> 

    <input type="submit" value="Save"> 
</form> 

PHP:

if(isset($_POST['action'])){ 
    $prods = count($_POST['prod']); 

    for($i=0; $i < $prods; $i++){ 
     $prod = $_POST['prod'][$i]; 
     $default = (isset($_POST['is'][0]) && $_POST['is'][0] == $i) ? 1 : 0; 
     $query = "INSERT INTO `items` (`prod`, `is_default`)VALUES('{$prod}', '{$default}')"; 
     if(mysql_query($query)){ 
      // success 
     }else{ 
      // error 
     } 
    } 

} 

Sidenotes:

  • Не используйте mysql_* функции, они являются устаревшими в РНР 5.5 и удаляются полностью в PHP 7.0. Вместо этого используйте mysqli или pdo. And this is why you shouldn't use mysql_* functions.

  • Ваш запрос восприимчив к SQL-инъекции. Всегда подготовьте, свяжите и выполните ваши запросы, чтобы предотвратить любую инъекцию SQL. And this is how you can prevent SQL injection in PHP.