PHP Массив для строки Многократная форма отправки - PullRequest
0 голосов
/ 02 января 2019
  public function query($sql, $parameters = [])
{
$query = $this->pdo->prepare($sql);
$query->execute($parameters);
var_dump($parameters);
return $query;
 }

public function delete ($id){

$parameters = [':id' => $id];

$this->query('DELETE FROM ' . $this->table . ' WHERE ' . $this- 
>primaryKey . ' = :id', $parameters);

}

<?php
$query = $products->findAll();

if(isset($_POST['delete']))
{
  if (isset($_POST['id']))
 {
    $products->delete([
  ':id' => $_POST['id'],
]);
 }
  else
  {
echo "You did not choose a id.";
 }
}
 ?>

 <form action="" method="POST">
<?php
 foreach($query as $row){
 echo "<label for='product_id'>" . $row['p_name'] . " </label> <input type='checkbox' name='id[]' value = '" . $row['product_id'] . "'>";
}
  ?>
 <input type="submit" name="delete" value="delete">

 </form>

Когда я отправляю эту форму, я получаю ошибку преобразования массива в строку.Я подозреваю, что что-то связано с «именем» для формы, хотя я не могу понять, почему и несколько запутался ..

1 Ответ

0 голосов
/ 02 января 2019

Указание [] в конце параметра имени входа будет указывать браузеру отправлять каждый вход как элемент массива, а не как одну строку.

<input type='checkbox' name='id[]' >

Вы можете увидеть, что в массиве с var_dump($_POST['id']).Если вы ожидали строку, удалите [].В противном случае вам придется перебирать каждое значение и что-то с ним делать.

...