2015-11-19 45 views
0

考虑到我使用的是php和MySql,我在我的数据库中有2个表名为:表A和表B.我使用一个php页面来填充它们和另一个php页面diplay他们。 表A包含每行可打开模式弹出窗口的可单击按钮。 我想要做的就是在表格B中显示相应行的一些信息。表关系问题 - 从第二张表收集信息

这就是我的意思是: - ROW1表A的按钮显示ROW1表B中 的信息 - ROW2表A的按钮将显示2行表B中的信息

我坚持到了这种地步的各按钮表A显示了整个表B,我无法弄清楚如何关联这些行。有小费吗?

我不明白我该如何关联该行的每个按钮不同的“动作”。

----附加信息:----

  • index.php页面diplays表B中
  • 每当一个新行插入时,按钮被创建。
  • 每次我按一下按钮,一个模式显示表A的一行称为

----- UPDATE 2 ------ 表B可以是cosider表的一个扩展A

表A有此列: ID |名称|邮件|数字|设备|价格|付款|状态

表B包含此列: id |设备|模型|问题|状态|优先| BUTTON1 | BUTTON2

Button1的 - >更改状态和变化反映在表A中

BUTTON2 - >应收集表A的respecive一行信息 名称|邮件|数字|价格|付款

----- UPDATE 3 ------

在表B:

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

在表A中:

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

数据库中的表格不包含按钮 – Strawberry

+0

通过php页面显示表格。谢谢你注意到mysql表中没有明确的问题 – gigi

+0

行没有(人类可以识别的)固有的'顺序'。您需要某种密钥才能将它们联系起来 – Strawberry

回答

1

表A需要具有主键来唯一标识每一行。点击一个按钮应该在表B上调用一个where子句的查询,该子句与表A中的行匹配PK值。(这就是外键的工作方式。)

在PHP中,您可以使PK值成为按钮的一部分名称。从被点击的按钮的名称中提取键值,并将其传递到表B上的查询中。(这对于准备语句查询非常有用。)

下面是一个例子,由Douglas &道格拉斯使用movies数据库从的PostgreSQL 2/E

<!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应该有一个FK,你解释的第二部分听起来有点复杂,我必须尝试收集更多的信息, – gigi

+0

正是如此。你不需要显式地声明一个外键约束(并且MySQL的FK实施可能会有问题);表列之间存在对应关系的事实是外键的定义。在支持它们的数据库上声明一个外键约束只是意味着dbms会为你做更多的工作。 (您可能已经意识到这一点,但未来的读者可能不会。) –

+0

您能否澄清或给我更多有关第二部分的细节? – gigi