2014-10-13 5 views
1

Я отобразил флажковые значения (поле ugroup) из таблицы group.now, что я хочу сделать, когда пользователь выбирает несколько флажков и отправляет его, следует вставить в relavent столбец в одной строке. Теперь он вставляет флажки значений. но не в соответствующем столбце. Это мой код. Пожалуйста, помогите мне.Вставьте несколько значений флажков в отдельные столбцы в одной строке

//select ugroup's from group table. 
<?php 
$result = "SELECT id,ugroup FROM group"; 
$res_result = db::getInstance()->query($result); 
?> 

group table

<form action="db_sql/db_add_page.php" method="get"> 
Tittle :<input type="text" size="100" name="tittle" /> 
Description :<textarea cols="80" id="editor1" name="description" rows="10"></textarea> 

//Display ugroups in textboxes and checkboxes 
     <?php 
while($line=$res_result->fetch(PDO::FETCH_ASSOC)) { 
echo '<input type="checkbox" name="group[]" value=" '. $line['ugroup'] .'" />'; 
echo'<input type="text" name="ugroup" disabled="disabled" value=" '. $line['ugroup'] .'" size="7" "/>'; 
echo ' '; 
} 
?><input type="submit" value="Submit"> 
</form> 

db_add_page.php

if(isset($_POST)) 
{ 


$tittle = $_POST['tittle']; 
$description = $_POST['description']; 
$ugroup = $_POST['group']; 
$acc_status = "INSERT INTO add_services (id,tittle,description,g1,g2,g3,g4,g5,g6,g7,g8) 
VALUES(NULL,'".$tittle."','".$description."','".$ugroup[0]."','".$ugroup[1]."','".$ugroup[2]."',' 
".$ugroup[3]."','".$ugroup[4]."','".$ugroup[5]."','".$ugroup[6]."','".$ugroup[7]."')"; 
$rate = db::getInstance()->exec($acc_status); 
if(!$rate){ 
echo '<script type="text/javascript">alert("Update Error !");</script>'; 
}else{ 
header('Location:../add_page.php'); 
echo '<script type="text/javascript">alert("Successfuly Updated User Group !");</script>'; 



} 

} 

я нажимаю на checkbox2, checkbox8 и вставки submit.it к g1 и g2.when я нажмите на флажок 1, checkbox3 его также добавляется к g1 и g2. ниже

add_services table

ответ

2

Изменение линия

echo '<input type="checkbox" name="group[]" value=" '. $line['ugroup'] .'" />'; 

Для

echo '<input type="checkbox" name="group['.$line['id'].']" value=" '. $line['ugroup'] .'" />'; 

И да начальный индекс массива с помощью 1

+0

Это работает fine.thanks Маниша. – Tje

+0

Вы приветствуете :). –

1

Обычно, когда мы используем значение $ _POST в флажках, те, которые не проверяются не будет быть включенным в POST.

[group] => Array 
    (
     [G1] => G1 // those the one you did not picked will not be included 
     [G3] => G3 // so that means your input is jagged 
     [G5] => G5 // you cannot hardcode each index (0 - 7) 
     [G7] => G7 // or they will be undefined (the ones that are missing) 
    ) 

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

Затем вы объединяете эти входы с теми, которые у вас есть по умолчанию, так что взамен вы получите полную структуру вставки вместо зубчатых входов.

Так что в вашей форме, сделать что-то вроде этого:

while($line = $res_result->fetch(PDO::FETCH_ASSOC)) { 
    echo '<input type="checkbox" name="group['.$line['ugroup'].']" value=" '. $line['ugroup'] .'" />'; 
            // assign G1, G2, indices 
    echo'<input type="text" name="ugroup" disabled="disabled" value=" '. $line['ugroup'] .'" size="7" "/>'; 
    echo ' '; 
} 

Тогда на форме обработки:

$default_values = array(); //create a default value 
while($line = $res_result->fetch(PDO::FETCH_ASSOC)) { 
    $default_values[':' . $line['ugroup']] = ''; 
} 

if(isset($_POST)) { // if submitted 
    $ugroup = array(); 
    $temp = $_POST['group']; 
    foreach($temp as $val) { 
     $ugroup[':' . $val] = $val; 
    } 

    $combined_input = array_merge($default_values, $ugroup); // combine them so you have a complete structure 

    $sql = 'INSERT INTO add_services (tittle, description,g1,g2,g3,g4,g5,g6,g7,g8) VALUES (:title, :description, :G1, :G2, :G3, :G4, :G5, :G6, :G7, :G8)'; 

    $acc_status = $db->prepare($sql); 
    $insert = array(':title' => $title, ':description' => $description,); 
    $insert = array_merge($insert, $combined_input); 
    $acc_status->execute($insert); 
} 
Смежные вопросы