не могу получить доступ к значению ввода, когда он у меня внутри цикла foreach (используя метод post) - PullRequest
0 голосов
/ 01 ноября 2019

У меня форма содержит один вход (кнопка типа) и одно изображение. когда я нажимаю на кнопку, она должна удалить изображение (отправьте форму и получите значение ввода, которое является идентификатором изображения, используя метод post). Но я не могу получить доступ к значению ввода, когда оно у меня внутри цикла foreach. потому что каждый вход, созданный внутри foreach, имеет одно и то же имя. https://i.imgur.com/ed9Vv9m.png

я попробовал var_dump, и там просто нулевое значение.

это форма внутри вида камеры:

foreach($data['galleries'] as $gallery) :
    ?>
    <div align=center>
    <form action="<?php echo URLROOT; ?>/gelleries/camera" 
   method="post">
    <input type="button" class="button" name="delete" id="abc" 
   value="<?php echo $gallery->galleryId; ?>" onclick="return 
   Deleteqry(<?php echo $gallery->galleryId; ?>);">
    </div>
    </form>
    <?php endforeach; ?>

и это контроллер:

<?php
    class Galleries extends Controller {
     $this->galleryModel = $this->model('Gallery');
   }
    $galleries = $this->galleryModel->hiFive();
    $datashow = [
        'galleries' => $galleries
    ];
    .....
    public function camera(){
     if (isset($_POST['delete']) && !empty($_POST["delete"])){
        $imgid = $_POST["delete"];
      $this->galleryModel->deleteimg($imgid);
      echo "deleted!";
    exit;
 }
 else
    echo "error";
    $this->view('/galleries/camera', $datashow);
 }

и это модель, в которой я выполняю запросы:

<?php
   class Gallery {
   private $db;

   public function __construct(){
    $this->db = new Database;
   }
   .....
      public function deleteimg($id){
       $this->db->query("DELETE FROM galleries WHERE id = :id");
       $this->db->bind(':id', $id);
       if($this->db->execute()){
       return true;
     } else {
      return false;
   }
   }
   }

Событие Deleteqry внутри onclick кнопки - это просто функция, в которой я проверяю, получаю ли я идентификаторизображение, когда я нажимаю на кнопку:

function Deleteqry(id)
{ 
 if(confirm("Are you sure you want to delete this row?")==true)

 window.location="http://localhost:8001/camagru/galleries/camera? 
 &del="+id;
  return false;
 }

1 Ответ

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

Добавьте скрытое поле ввода в блок формы со значением идентификатора галереи, например:

 <form ...>
    <input type="button" class="button" name="delete" value="DELETE NOW">
    <input type="hidden" name="GallID" value="<?php echo $gallery->galleryId;?>" >
 </form> 

И в вашем контроллере прочитайте это значение из скрытого поля:

if (isset($_POST['delete']) && isset($_POST['GallID']) && !empty($_POST["delete"])){
    $imgid = $_POST["GallID"];
    $this->galleryModel->deleteimg($imgid);
    echo "deleted!";
}

Thisработает полностью без JavaScript.

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