考虑到我使用 PHP 和 MySql,我的数据库中有 2 个表,名为:表 A 和表 B。 我使用一个 php 页面来填充它们,并使用另一个 php 页面来显示它们。 表 A 的每一行都包含一个可单击的按钮,用于打开模式弹出窗口。 我想做的是在此模式中显示表 B 中相应行的一些信息。
这就是我的意思:
- row1表A的按钮显示row1表B的信息
- row2表A的按钮显示row2表B的信息
我被困在表 A 中的每个按钮都向我显示整个表 B 的地步,并且我无法弄清楚如何关联这些行。有什么建议吗?
我不明白如何为该行的每个按钮关联一个不同的“操作”。
----附加信息:----
- index.php页面显示表B
- 每次插入新行时,都会创建一个按钮。
- 每次单击按钮时,都会出现一个模式,显示表 A 中引用的行。
----- 更新 2 ------ 表B可以被认为是表A的扩展
表 A 有此列:
编号 |名称 |邮件 |数量 |设备|价格|付款|状态
表 B 有此列:
编号 |设备|型号|问题|状态 |优先|按钮1 |按钮2
button1 -> 更改状态并且更改反射(reflect)在表 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";
最佳答案
表 A 需要有一个主键来唯一标识每一行。单击按钮应使用与表 A 中的行中的 PK 值匹配的 where
子句调用表 B 上的查询。(这就是外键的工作原理。)
在 PHP 中,您可以将该 PK 值作为按钮名称的一部分。从单击的按钮的名称中提取键值,并将其传递到表 B 上的查询中。(这对于准备好的语句查询来说是一个很好的用途。)
下面是一个示例,使用 Douglas & Douglas 的 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)
,我没有将其包含在本示例中,但它会生成包含详细信息的弹出窗口从第二个表。
关于php - 表关系问题 - 从第二个表收集信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33816066/