Массив создается следующим образом:
<input type="checkbox" name="transport[]" value="0">Taxi
<input type="checkbox" name="transport[]" value="1">Bus
<input type="checkbox" name="transport[]" value="2">Train
Хотя этот флажок установлен только в том случае, если он истинен (если он отмечен), поэтому будут пропущены только отмеченные флажки.
Теперь япытаясь сделать так, чтобы проверяемые флажки (проверяемые) вставляли строку в таблицу transports
, а флажки, которые не проверялись (не передавались), удалялись.И если он уже вставлен, он ничего не должен делать.
Итак:
- Проверьте, вставлен ли он уже до
- Вставьте новую строку в транспорт для флажковпередано
- Удалить строки для флажков, которые не прошли
Я попытался сделать это:
$transport = $_POST["transport"]; // variable receiving
for($u=0; $u<3; $u++){ // taxi, bus and train (3)
if($u == $transport[$u]){
$alreadyExists = $connect->prepare("SELECT id FROM transport WHERE xID=:xID AND transport=:t");
$alreadyExists->bindValue(":t", $u);
$alreadyExists->bindValue(":xID", $cID);
$alreadyExists->execute();
$alreadyExists = $alreadyExists->rowCount();
if($alreadyExists == 0){ // if it doesnt exists, insert into
$updateTransport = "INSERT INTO transport (xID, transport) VALUES (:id, :t)";
$updateTransport = $connect->prepare($updateTransport);
$updateTransport->bindValue(":id", $cID);
$updateTransport->bindValue(":t", $u);
$updateTransport->execute();
}
}else{ // delete row as it is not checked
$updateTransport = "DELETE FROM transport WHERE xID=:id AND transport=:t";
$updateTransport = $connect->prepare($updateTransport);
$updateTransport->bindValue(":id", $cID);
$updateTransport->bindValue(":t", $u);
$updateTransport->execute();
}
}
Но это не будет работать должным образом, я получаю неопределенное смещение 2, 1 Не могу понять, почему
Что я сделал не так?Как я могу заставить его работать должным образом?