所以这是我第一次正确处理 INNER JOIN 语句,我一直在尝试它,不用说它进展不顺利。以下是我的页面代码:
<?php require_once('Connections/reps.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
mysql_select_db($database_reps, $reps);
$query_orders = "SELECT * FROM orders";
$orders = mysql_query($query_orders, $reps) or die(mysql_error());
$row_orders = mysql_fetch_assoc($orders);
$totalRows_orders = mysql_num_rows($orders);
mysql_select_db($database_reps, $reps);
$query_staff = "SELECT * FROM staff";
$staff = mysql_query($query_staff, $reps) or die(mysql_error());
$row_staff = mysql_fetch_assoc($staff);
$totalRows_staff = mysql_num_rows($staff);
mysql_select_db($database_reps, $reps);
$query_products = "SELECT * FROM products";
$products = mysql_query($query_products, $reps) or die(mysql_error());
$row_products = mysql_fetch_assoc($products);
$totalRows_products = mysql_num_rows($products);
mysql_select_db($database_reps, $reps);
$join = "SELECT
orders.ID AS id,
orders.CustomerName AS customerName,
orders.StaffMember AS staffMember,
orders.SalesPrice AS salesPrice,
orders.ListPrice AS listPrice,
orders.AgeOfPayment AS productAge,
orders.Product AS productName,
orders.Quantity AS orderQuantity,
orders.DateOfOrder AS orderDate,
staff.Bonus AS staffBonus,
products.Price AS productPrice
FROM
orders AS orders
INNER JOIN staff AS staff ON orders.StaffMember = staff.StaffName
INNER JOIN products AS products ON orders.Product = products.ProductName
ORDER BY
orderDate ASC";
$joinresult = mysql_query($join);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<?php
require_once("models/config.php");
if (!securePage($_SERVER['PHP_SELF'])){die();}
require_once("models/header.php");
?>
</head>
<body>
<div id='wrapper'>
<div id='top'>
<div id='logo'></div>
</div>
<div id='content'>
<h1></h1>
<h2>Change This</h2>
<div id='left-nav'>
<?php include("left-nav.php"); ?>
</div>
<div id='main'>
<div id ="orderstable">
<table border="1" cellpadding="1" cellspacing="3">
<tr>
<th>Order ID</th>
<th>Customer Name</th>
<th>Product</th>
<th>Quantity</th>
<th>Sales Price (€)</th>
<th>Total Sale (€)</th>
<th>List Price (€)</th>
<th>Price Difference (€)</th>
<th>% Difference</th>
<th>Sold By</th>
<th>Order Date</th>
<th>Age of Payment</th>
<th>Bonus %</th>
<th>Bonus Amount</th>
</tr>
<?php do { ?>
<?php do { ?>
<tr>
<td align="center" valign="middle"><?php echo $row_orders['ID']; ?></td>
<td align="center" valign="middle"><?php echo $row_join['customerName']; ?></td>
<td align="center" valign="middle"><?php echo $row_join['product']; ?></td>
<td align="center" valign="middle"><?php echo $row_orders['Quantity']; ?></td>
<td align="center" valign="middle"><?php echo $row_orders['SalesPrice']; ?></td>
<td align="center" valign="middle"><?php $first_multiply = $row_orders['Quantity'];
$second_multiply = $row_orders['SalesPrice'];
$multiply_total = $first_multiply * $second_multiply;
echo ($multiply_total); ?></td>
<td align="center" valign="middle"><?php echo $row_orders['Price']; ?></td>
<td align="center" valign="middle"><?php $first_number = $row_orders['Price'];
$second_number = $row_orders['SalesPrice'];
$sum_total = $first_number - $second_number;
echo ($sum_total); ?></td>
<td align="center" valign="middle">as</td>
<td align="center" valign="middle"><?php echo $row_join['staffMember']; ?></td>
<td align="center" valign="middle"><?php echo date('d/m/Y', $row_orders['orderDate']); ?></td>
<td align="center" valign="middle"></td>
<td align="center" valign="middle"><?php echo $row_orders['bonus']; ?>%</td>
<td align="center" valign="middle"> </td>
</tr>
<?php } while ($row_orders = mysql_fetch_assoc($orders));?>
<?php } while ($row_join = mysql_fetch_array($join));?>
</table>
</div>
</div>
<div id='bottom'></div>
</div>
</body>
</html><?php
mysql_free_result($orders);
mysql_free_result($staff);
mysql_free_result($products);
?>
我基本上想做的是以下几点:
- 从之前的页面提交订单。数据存储在数据库中的表上并回显。
- 有问题的三个表是员工、订单和产品表
- 我根据 ID 而不是值保存了表单。我已经用谷歌搜索并研究了 INNER JOIN,我尝试了以下方法,但没有成功。
谁能指出我做错了什么的正确方向?