这是一个多部分的问题。我的数据库如下所示:
USERS
-id
-fname
-lname
COMPANIES
-id
-name
-type
PRODUCTS
-id
-product
-restaurant (foreign key to companies id)
-vendor (foreign key to companies id)
-user (foreign key to users id)
-transaction_date
- 这是设置数据库的好方法吗?我正在考虑为餐馆和供应商设置单独的表,但希望它们使用相同的登录页面,而不必担心 UNION 查询,我只需按类型选择它们。他们在登录时会看到不同的信息,所以我有一个 if 语句说 if type = r, show this else show that。最好的办法?
当我想在登录时显示信息时,会出现第二个问题。假设供应商登录,他们将看到与其供应商 ID 匹配的所有记录的列表。但是,由于我的嵌套循环,我看到了太多记录。例如,该表如下所示:
Date--Product--Restaurant--User
我正在使用这个查询:
$sql = mysql_query("SELECT products.*, companies.name, CONCAT_WS(' ', users.fname, users.lname) AS fullname FROM products INNER JOIN companies ON products.vendor = companies.id INNER JOIN users ON products.user = users.id WHERE company='$id' AND companies.type='$type'") or die(mysql_error());
$num=mysql_num_rows($sql);
$sql1 = mysql_query("SELECT products.restaurant, companies.name AS cname FROM products INNER JOIN companies ON products.restaurant = companies.id") or die(mysql_error());
$num1=mysql_num_rows($sql1);
$i = 0;
while ($i < $num) {
$j = 0;
while ($j < $num) {
$d = mysql_result($sql,$i,"transaction_date");
$p = mysql_result($sql,$i,"product");
$r = mysql_result($sql1,$j,"cname");
$u = mysql_result($sql,$i,"fullname");
<td><?php echo $d; ?></td>
<td><?php echo $p; ?></td>
<td><?php echo $r; ?></td>
<td><?php echo $u; ?></td>
$j++; }
$i++; }
$id
并且$type
是登录时会话创建的值。表中当前有 4 条示例记录。它不是只显示 4,而是显示 16,因为 和 的值$num
都是$num1
4 并且$num
循环$num1
了四次。
- 如何解决此问题并仅显示 4 条记录?
谢谢您的帮助。如果您需要对任何部分进行任何澄清,请告诉我。