表关系问题 - 从第二个表

时间:2015-11-19 23:09:10

标签: php mysql sql database html-table

考虑到我使用的是PHP和MySql,我的数据库中有2个名为:table A和table B. 我使用一个php页面来填充它们,另一个php页面用于显示它们。 表A包含每行打开模式弹出窗口的可单击按钮。 我想要做的是在这个模态中显示表B中相应行的一些信息。

这就是我的意思:

    row1表A的
  • 按钮显示了row1表B的信息
  • 第2行的
  • 按钮表A显示了第2行表B
  • 的信息

我坚持到表A中的每个按钮向我显示整个表B的点,我无法弄清楚如何关联这些行。有什么提示吗?

我不明白如何将行中的每个按钮关联到另一个"动作"。

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

  • index.php页面diplays表B
  • 每次插入新行时,都会创建一个按钮。
  • 每次我点击按钮,模态都会显示表A的引用行。

-----更新2 ------ 表B可以是cosider表A的扩展

表A有此栏:
id |名字|邮件|号码|设备|价格|付款|状态

表B有此栏:
id |设备|型号|问题|状态|优先| BUTTON1 | BUTTON2

button1 - >更改状态,更改反映在表A

button2 - >应该用信息收集表A的相应行             名字|邮件|号码|价格|付款

-----更新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";

1 个答案:

答案 0 :(得分:1)

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

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

这是一个例子,使用Douglas&amp; amp;的 PostgreSQL 2 / e 中的movies数据库。道格拉斯:

<!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),但它可以生成弹出窗口,其中包含第二个表中的详细信息。