@vaseknaleypivasek

Как сделать что бы открывалось модальное окно и в него выводились данные из БД?

Как сделать что бы этой кнопкой получалось id строки из БД
Изменить документ
и открывалось окно с данными по этому id
<?php 

  $db = new PDO("mysql:host=localhost;dbname=testiro","root","");
 
  $info = [];

  if ($query = $db->query("SELECT * FROM bibloteka")) {
    $info = $query->fetchAll(PDO::FETCH_ASSOC);
  } else {
    print_r($db->errorInfo());
  }

?>
<?php
    $host = 'localhost';  
    $user = 'root';   
    $pass = '';
    $db_name = 'testiro';   
    $link = mysqli_connect($host, $user, $pass, $db_name); 
    if (isset($_POST["name"])) {
      if (isset($_GET['ID'])) {
          $sql = mysqli_query($link, "UPDATE `bibloteka` SET 
          `name` = '{$_POST['name']}',
          `basis` = '{$_POST['basis']}',
          `responsible` = '{$_POST['responsible']}',
          `actionDate` = '{$_POST['actionDate']}',
          `reviewPeriod` = '{$_POST['reviewPeriod']}',
          `addedBy` = '{$_POST['addedBy']}',
          `documentType` = '{$_POST['documentType']}',
          `currentDate` = '{$_POST['currentDate']}',
          `is_active` = '{$_POST['is_active']}',
          `is_base` = '{$_POST['is_base']}',
          `documentName` = '{$_POST['documentName']}',
          `is_paper` = '{$_POST['is_paper']}'
           WHERE `id`={$_GET['ID']}");
      } else {}
    }
    if (isset($_GET['ID'])) {
      $sql = mysqli_query($link, "SELECT `id`, `basis`, `responsible`, `actionDate`, `reviewPeriod`, `addedBy`, `documentType`, `currentDate`, `is_active`, `is_base`, `name`, `documentName`, `is_paper` FROM `bibloteka` WHERE `id`={$_GET['ID']}");
      $product = mysqli_fetch_array($sql);
      
    }
    if (isset($_GET['del_id'])) { //проверяем, есть ли переменная
      //удаляем строку из таблицы
      $sql = mysqli_query($link, "DELETE FROM `bibloteka` WHERE `id` = {$_GET['del_id']}");
      if ($sql) {
      }
        else {
        echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
      }
    }
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document List</title>
    <link rel="stylesheet" href="css/librarystyle.css">
	
	


</head>
<body>

<header>
    
   
    <div class="">
       
       <div class="actions">
        <h1>Библиотека</h1>
        <button onclick="manageLists()">Перечень</button>
		   <!-- <button onclick="openModal()">Загрузить документ</button>-->

       
    </div>
    </div>
</header>







<main>

     <table class="">
            <tr>
                <th>№ документа</th>
				<th></th>
        <th>Опции</th>
                <th>Наименование документа</th>
                <th>Дата ввода в действие</th>
                <th>Срок (лет)</th>
				<th>Бумажная версия</th>
				<th>СП, ответственное за актуализацию</th>
				<th>Действует на сегодня</th>
				<th>Тип документа</th>
				<th>Основной/связанный</th>
				<th>Кто добавил</th>
				<th>Когда добавил</th>
            </tr>
			
          <?php foreach ($info as $data): ?>
            <tr >
                
            <td><?= $data['id']?></td>
				
				  <td><a href="<?= $data['name'];?>" target="_blank">Открыть</a></td>

        <th>
        <div class="dropdown">
          <button class="dropbtn">Опции</button>
          <div class="dropdown-content">
            <a href="#">Добавить в перечень</a>
             <button onclick="openModal1()">Изменить документ</button>
            <a href="?del_id=<?= $data['id'];?>">Удалить</a>
          </div>
        </div>
        </th>

        <td><?= $data['documentName'];?></td>
        <td><?= $data['actionDate'];?></td>
        <td><?= $data['reviewPeriod'];?></td>
				<td><p><input type="checkbox" name="" value=" "<?= $data['is_paper'];?> ></p></td>
				<td><?= $data['responsible'];?></td>
				<td><p><input type="checkbox" name=" " value=" "<?= $data['is_active'];?> ></p></td>
				<td><?= $data['documentType'];?></td>
				<td><p><input type="checkbox" name=" " value=" "<?= $data['is_base'];?> ></p></td>
				<td><?= $data['addedBy'];?></td>
				<td><?= $data['currentDate'];?></td>
				
            </tr>
           
          <?php endforeach; ?>  
			<tr>
           
        </table>
</main>






<div id="myModal1" class="modal1"  onclick="closeModal1(event)">
  <div class="modal-content">
  
  <div class="form-container">
  <form action="" method="post" enctype="multipart/form-data">
    <label for="pdfFile">1. Имя файла</label>
    <input type="text" name="name" value="<?= isset($_GET['ID']) ? $product['name'] : ''; ?>">
    <label for="documentName">2. Наименование документа в библиотеке:</label>
    <input type="text" name="documentName" value="<?= isset($_GET['ID']) ? $product['documentName'] : ''; ?>">
    <label for="basis">3. Основание для размещения:</label>
    <input type="text" name="basis"  value="<?= isset($_GET['ID']) ? $product['basis'] : ''; ?>">
    <label for="responsible">4. ответственное за актуализацию:</label>
    <input type="text" name="responsible"  value="<?= isset($_GET['ID']) ? $product['responsible'] : ''; ?>"> 
    <label for="actionDate">5. Дата ввода действие:</label>
    <input type="text" name="actionDate"  value="<?= isset($_GET['ID']) ? $product['actionDate'] : ''; ?>"> 
    <label for="reviewPeriod">6. Срок до пересмотра </label>
    <input type="text" name="reviewPeriod"  value="<?= isset($_GET['ID']) ? $product['reviewPeriod'] : ''; ?>">
    <label for="documentType">7. Тип документа:</label>
    <select id="documentType" name="documentType" value="<?= isset($_GET['ID']) ? $product['documentType'] : ''; ?>">
      <option value="Внешний">Внешний</option>
      <option value="Внутренний">Внутренний</option>
    </select>
    <label for="addedBy">8. Кто добавил (изменил)</label>
    <input type="text" name="addedBy"  value="<?= isset($_GET['ID']) ? $product['addedBy'] : ''; ?>">
    <div class="checkbox-group">
    <label><p>Требуется бумажная версия<input type="checkbox" name="is_paper" value="checked" <?= isset($_GET['ID']) ? $product['is_paper'] : ''; ?>>  </p></label>
    <label><p>Действует на сегодня<input type="checkbox" name="is_active" value="checked" <?= isset($_GET['ID']) ? $product['is_active'] : ''; ?>>  </p></label>
    <label><p>Основной<input type="checkbox" name="is_base"  value="checked" <?= isset($_GET['ID']) ? $product['is_base'] : ''; ?>> </p></label>
    </div>
    <label for="currentDate">10. Когда добавил </label>  
    <input type="text" id="currentDate" name="currentDate" value="<?php echo date('Y-m-d H:i:s'); ?>" readonly>
      <input type="submit"  value="OK">
  </form>
</div>
  </div>
</div>

всю голову сломал как это сделать подскажите пожалуйста.
  • Вопрос задан
  • 286 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Damik996
А в js что?
Ответ написан
vhood
@vhood
Не забывайте отмечать решения
Нужно с помощью JS посылать AJAX запрос на PHP скрипт.

Далее 2 варианта:

1) PHP скрипт возвращает данные (например, в формате JSON), JS заполняет поля модального окна этими данными и отображает его

2) PHP скрипт возвращает HTML уже готового модального окна, JS только подставляет его в родительский элемент

Пример запроса:

async function openModal(id = 0){
    if(!id){
       return;
    }

    const response = await fetch(`library.php?id=${id}`);
    const responseText = await response.text();

   // Дальше делайте манипуляции с модальным окном и полученными данными
}
Ответ написан
ZhenyaMak
@ZhenyaMak
Писать качественный софт? Пфф, это не для меня.
1. Сверстать модал окно
2. Распарить данные из сервера
3. Средствами php|js вывести их в текст окна
:)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы