2017-01-01 1 views
-2

У меня возникла проблема при хранении нескольких флажков с разными значениями и именем в PHP MYSQLI. Я уже успеваю с одиночным столбцом и строкой, но при хранении 3 столбца он терпит неудачу.Хранение нескольких флажков с разными значениями и именем в PHP MYSQLI

Процесс: когда кто-то выбрать department, position и location с несколькими флажками, он будет хранить в БД по каждой строке и столбце на основе id_user.

Мой стол:

id, id_usr, id_department, id_position, id_location 

Результат я хочу:

1 | 1 | 4 | 2 | 2 

2 | 1 | 1 | 2 | 1 

3 | 1 | 2 | 3 | 4 

4 | 1 | 4 | 2 | 2 

5 | 2 | 1 | 2 | 1 

6 | 2 | 2 | 3 | 4 

Мой код:

<div class="form-group"><label>Department</label><br> 
    <?php 
    $department = "SELECT * FROM loker_department ORDER BY nama_department"; 
    $result = mysqli_query($conn, $department); 
    if (mysqli_num_rows($result) > 0) 
    { 
    while ($data = mysqli_fetch_array($result)) 
    { 
     echo "<input type='checkbox' name='department[]' value='".$data['id_department']."'/> $data[nama_department]<br>"; 
    } 
    }else{echo "No data";} 
    ?> 
</div> 
<div class="form-group"><label>Position</label><br> 
    <?php 
    $position = "SELECT * FROM loker_position ORDER BY nama_position"; 
    $result = mysqli_query($conn, $position); 
    if (mysqli_num_rows($result) > 0) 
    { 
    while ($data = mysqli_fetch_array($result)) 
    { 
     echo "<input type='checkbox' name='position[]' value='".$data['id_position']."'/> $data[nama_position]<br>"; 
    } 
    }else{echo "No data";} 
    ?> 
</div> 
<div class="form-group"><label>Location</label><br> 
    <?php 
    $location = "SELECT * FROM loker_location ORDER BY nama_location"; 
    $result = mysqli_query($conn, $location); 
    if (mysqli_num_rows($result) > 0) 
    { 
    while ($data = mysqli_fetch_array($result)) 
    { 
     echo "<input type='checkbox' name='location[]' value='".$data['id_location']."'/> $data[nama_location]<br>"; 
    } 
    }else{echo "No data";} 
    ?> 
</div> 

$department = $_POST['department']; 
$position = $_POST['position']; 
$location = $_POST['location']; 

foreach($department as $departments && $position as $positions && $location as $locations) 
{ 
    $create = "INSERT INTO loker_user_subsc (id_department,id_position,id_location) VALUES ('$departments','$positions','$locations')"; 
    $result5 = mysqli_query($conn, $create); 
} 

Любая помощь/Soluti будут оценены.

+0

какие ошибки вы получаете от использования http://php.net/manual/en/function.error-reporting. php и http://php.net/manual/en/mysqli.error.php? –

+0

'foreach' принимает все значения из одного массива; вы должны получить сообщение об ошибке. См. Этот вопрос и ответы http://stackoverflow.com/questions/4480803/two-arrays-in-foreach-loop –

+0

@ Ошибка Fred-ii- Parse: ошибка синтаксиса, неожиданный '&&' (T_BOOLEAN_OR), ожидающий ')' в – azmi27

ответ

-1
foreach($department as $departments && $position as $positions && $location as $locations) 
{ 
    $create = "INSERT INTO loker_user_subsc (id_department,id_position,id_location) VALUES ('$departments','$positions','$locations')"; 
    $result5 = mysqli_query($conn, $create); 
} 

После просмотра, я быстро ссылаться php.net foreach documentation и подтвердил свою интуицию, что вы дали параметры неправильные

Ваш Шуд пройти ONE ARRAY ОДНОВРЕМЕННО к каждому элементу и не присоединиться все с AND.

Отдельные массивы, как минимум, использовать различные операторы Foreach, а затем вы можете думать о рефакторинга