2015-11-19 2 views
0

Учитывая, что я использую php и MySql, у меня есть две таблицы в моей базе данных с именем: table A и table B. Я использую php-страницу для заполнения их обоих, а другой php страницу для их использования. Таблица A содержит для каждой строки кнопку с возможностью клика, открывающую модальное всплывающее окно. Что бы я хотел сделать, это показать в этой модальной информации некоторую информацию из таблицы B для соответствующей строки.Проблема с отношениями таблиц - сбор информации из второй таблицы

Это то, что я имею в виду: - кнопка row1 таблицы А показывает информация о row1 таблице B - кнопка row2 таблицы А показывает информацию о row2 таблице B

Я застрял в точку, где каждая кнопка в таблица A покажите мне всю таблицу B, и я не могу понять, как связать эти строки. Какие-нибудь советы?

Я не понимаю, как я могу связать для каждой кнопки строки другое «действие».

---- Дополнительная информация: ----

  • страницы index.php diplays таблица B
  • Каждый раз, когда вставляется новая строка, будет создаваться кнопка.
  • Каждый раз, когда я нажать на кнопку, модальное показывает упомянутую строку таблицы А.

----- ОБНОВЛЕНИЕ 2 ------ Таблица B может быть cosider расширением таблицы A

Таблица A содержит следующие столбцы: ID | имя | почта | номер | устройство | цена | оплата | статус

Таблица B содержит следующую информацию: ID | устройство | модель | проблема | статус | приоритет | BUTTON1 | Button2

button1 -> изменить статус и изменение отражается в таблице А,

button2 -> должны собрать respecive строку таблицы А с информацией именем | почта | номер | цена | оплаты

----- ОБНОВЛЕНИЕ 3 ------

В таблице Б:

$custid = $row['id']; 
<td> <a class='btn btn-primary btn-sm' data-toggle='modal' 
    data-target='#myModal' name='[$custid]' > Info</a></td> 

В таблице А:

$sql = "SELECT name,mail,number,price,paymenttype,faktura,date from TABLE_A"; 
+0

таблицы в базах данных не содержат кнопок – Strawberry

+0

Таблицы размещены на странице php. Спасибо, что неясный вопрос: – gigi

+0

строки в таблицах mysql не имеют (по-человечески различимым) врожденного «порядка». Вам нужен какой-то ключ, чтобы связать их. – Strawberry

ответ

1

Таблица A должен иметь первичный ключ, чтобы однозначно идентифицировать каждую строку. Нажатие кнопки должно вызывать запрос в таблице B с предложением where, соответствующим значению PK, из строки в таблице A. (Это работает с внешними ключами).

В PHP вы можете сделать это значение PK частью кнопки имя. Извлеките значение ключа из имени кнопки, которая была нажата, и передайте ее в запрос в таблице B. (Это было бы превосходным использованием для запроса подготовленного оператора.)

Вот пример, с использованием базы данных movies из PostgreSQL 2/е Дуглас & Дуглас:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<?php 
    require_once("connect_params.php"); 
    $dbh = new PDO($DSN); 

    // Use a prepared statement here if your query takes any parameters 
    $query = "SELECT customer_id, customer_name, phone, balance FROM customers ORDER BY customer_id"; 
    $result = $dbh->query($query); 

    // php.net says this is the only reliable way to force-close a PDO connection 
    $dbh->query('SELECT pg_terminate_backend(pg_backend_pid())'); 
    $dbh = null; 
?> 
<html> 
    <head> 
     <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> 
     <title>Customers</title> 
    </head> 
    <body> 
     <form onsubmit="return false;"> 
      <table style="text-align: left;" border="1" cellpadding="2" cellspacing="0"> 
       <tbody> 
        <tr> 
         <td style="vertical-align: top;"> 
          Customer Name 
         </td> 
         <td style="vertical-align: top;"> 
          Phone 
         </td> 
         <td style="vertical-align: top;"> 
          Current Balance 
         </td> 
         <td style="vertical-align: top;"> 
          Rentals 
         </td> 
        </tr> 

<!-- ********** Here's where we start building the individual rows ********** --> 
<?php 
    foreach ($result as $row) 
    { 
     $custid = $row['customer_id']; 
?> 
        <tr> 
         <td> 
          <?php echo $row['customer_name']; ?> 
         </td> 
         <td> 
          <?php echo $row['phone']; ?> 
         </td> 
         <td> 
          <?php echo $row['balance']; ?> 
         </td> 
         <td> 
          <button name="show_rentals[<?php echo $custid; ?>]" 
           value="<?php echo $custid; ?>" 
           onclick="showDetail(<?php echo $custid; ?>);"> 
           Show 
          </button> 
         </td> 
        </tr> 
<?php 
    } 
?> 
<!-- ********** We're finished building the individual rows ********** --> 

       </tbody> 
      </table> 
     </form> 
     <br> 
    </body> 
</html> 

onclick обработчик этой кнопки вызывает функцию JavaScript showDetail(int custid), которые я не включил в этом образце, но он действует для создания всплывающего окна с данными из второй таблицы.

+0

Итак, таблица Aa должна иметь PK, тогда таблица B shoud имеет FK, вторая часть, которую вы объяснили, немного сложна, я должен попробовать собрать больше информации, – gigi

+0

Точно. Вам не нужно явно объявлять ограничение внешнего ключа (и выполнение MySQL FK может быть проблематичным); тот факт, что соответствие существует между столбцами таблицы, является самым определением внешнего ключа. Объявление ограничения внешнего ключа для базы данных, которая их поддерживает, просто означает, что dbms будут выполнять большую часть работы для вас. (Вы можете это осознать, но будущие читатели могут этого не делать.) –

+0

Не могли бы вы пояснить или подробнее рассказать о второй части? – gigi