У меня две таблицы в моем файле данных, и я показываю их на двух разных php-страницах.
Как я могу отобразить содержимое первой таблицы со страницы, где я показываю вторую таблицу, за строкой.
То, что я хочу достичь: каждая строка второй таблицы имеет кнопку, в которой onclick покажет (выкидывает модальное всплывающее окно) информацию, которая находится в первой таблице.
Таким образом, кнопка row1-table2 покажет мне только информацию row1-table1 и т. Д ….
Я могу реализовать кнопку для каждой строки и всплывающего окна, но я могу отображать только информацию о всей первой таблице, а не о единственной связанной строке.
————- обновление кода
<div class="container"> <div class="row text-center"> <div class="col-md-12 col-sm- hero-feature"> <div class="thumbnail"> <?php include("../includes/connection.php"); if ($link->connect_errno > 0) { die('Unable to connect to database [' . $link->connect_error . ']'); } if (isset($_POST['update'])) { $results = $link>query("UPDATE job SET status='$_POST[status]', priority='$_POST[priority]' WHERE id='$_POST[hidden]'"); $results = $link>query("UPDATE **table2** SET status='$_POST[status]' WHERE id='$_POST[hidden]'");} $sql = "SELECT * from job"; if (!$result = $link->query($sql)) { die('There was an error running the query [' . $link->error . ']'); } echo "…………./* Get field information for all columns */………… " while ($row = $result->fetch_assoc()) { echo "<form action='' method=post>"; echo "<tr class='info'> <input type=hidden name=hidden value=" . $row['id'] . "> <td>" . $row['id'] . "</td> <td>" . $row['device'] . "</td> <td>" . $row['model'] . "</td> <td>" . $row['problem'] . "</td> <td><select class='form-control col-sm-10' id='status' name='status'> <option value=" . $row['status'] . " >" . $row['status'] . "</option> <option value='new'>New</option> <option value='progress'>Progress</option> <option value='wait'>Wait</option> <option value='done'>Done</option> <option value='close'>Close</option> </select></td> <td><select class='form-control col-sm-10' id='priority' name='priority'> <option value=" . $row['priority'] . " >" . $row['priority'] . "</option> <option value='high'>High</option> <option value='medium'>Medium</option> <option value='low'>Low</option> </select></td> <td>" . $row['status'] . "</td> <td>" . $row['priority'] . "</td> **<td> <button type='submit' class='btn btn-primary btn-sm' name='update'>Update</button></td>** **<td> <a class='btn btn-primary btn-sm' data-toggle='modal' datatarget='#myModal'>Info</a></td>** </tr>"; echo "</form>";}echo " </tbody> </table>"; ?> <div class="container"> !-- Trigger the modal with a button --> <!-- Modal --> <div class="modal fade" id="myModal" role="dialog"> <div class="modal-dialog modal-lg"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title">Customer Information</h4> </div> <div class="modal-body"> <?php include("../includes/connection.php"); if ($link->connect_errno > 0) { die('Unable to connect to database [' . $link->connect_error . ']'); } $sql = "SELECT * from **table2**"; if (!$result = $link->query($sql)) { die('There was an error running the query [' . $link->error . ']'); } echo " <table class='table'> <thead><tr>"; /* Get field information for all columns */ while ($finfo = $result->fetch_field()) { echo "<th>" . $finfo->name . "</th>";}echo " </tr></thead><tbody>"; while ($row = $result->fetch_assoc()) { echo "<tr class='info'> <td>" . $row['id'] . "</td> <td>" . $row['name'] . "</td> <td>" . $row['mail'] . "</td> <td>" . $row['number'] . "</td> <td>" . $row['price'] . "</td> <td>" . $row['paymenttype'] . "</td> <td>" . $row['faktura'] . "</td> <td>" . $row['date'] . "</td> </tr>";}echo " </tbody> </table>"; ?> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> </div></div></div></div></div></div></div> <!-- Button trigger modal -->
Из того, что я понимаю, вы хотите иметь отношение «один к одному / многим» между таблицами (в зависимости от того, собираетесь ли вы повторно использовать данные клиента).
в таблице 2 есть новое поле, которое будет содержать идентификаторы из таблицы1, это ваш внешний ключ .
Что такое внешние ключи?
Внешний ключ устанавливает связь или ограничение между двумя таблицами.
теперь я точно не знаю, как вы воспитываете данные, когда вы нажимаете «информация», но если вы запускаете отдельный запрос, когда он нажимается, вы просто передаете идентификатор таблицы1, который хранится в таблице2, в предложении WHERE, подобное этому
SELECT * FROM table1 WHERE custId = ?
где ?
однако вы генерируете свои запросы в PHP (используя параматизированные запросы или генерируете строку aa с переменными PHP).
если вам нужны данные из таблицы 1, загруженные одновременно с таблицей 2, вы должны использовать INNER JOIN
SELECT * FROM table2 AS t2 INNER JOIN table1 AS t1 ON t2.custID = t1.custID
таким образом, для каждой строки в таблице2 она будет иметь строку из таблицы1. это будет работать, только если идентификатор таблицы1 уникален, иначе вы можете получить
ПРИМЕЧАНИЕ. Хорошей практикой является не использование SELECT *
, это хорошо при отладке, но в правильном коде вы хотите, чтобы каждое поле было названо особенно, когда вы делаете соединения, если в 2 таблицах есть поле, которое называется одинаковым