PHP: обработка моего переданного массива, вставка и удаление - PullRequest
0 голосов
/ 21 июня 2011

Массив создается следующим образом:

<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 Не могу понять, почему

Что я сделал не так?Как я могу заставить его работать должным образом?

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

вы должны сделать что-то вроде:

<input type="checkbox" name="transport[tax]" value="1">Taxi
<input type="checkbox" name="transport[bus]" value="1">Bus
<input type="checkbox" name="transport[train]" value="1">Train

и

$toDelete = array('taxi'=>true,'bus'=>true,'train'=>true);  
foreach($_POST['transport'] as $k=>$v) {
  //> Insert $k

  $toDelete[$k]  = false;
}

foreach($toDelete as $k=>$v) {
   if ($v===true) {
    //> delete $k here
   }
}
0 голосов
/ 21 июня 2011

Убедитесь, что смещение определено.

if(isset($transport[$u]) && ($u == $transport[$u])){

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...