[英]PHP loop not displaying properly
我需要一些有关循环问题的帮助。 对于下面的示例代码,我有两个Mysql表:
tblDepRatesCats:
ID
header
left_text
center_text
right_text
header_order
------
tblRates_balance:
id
depratecat
MinBalance
InterestRate
APY
suborder
tblDepRatesCats.ID = tblRatesBalance.depratecat
。 对于每一行tblDepRatesCats
,有可能在0或1或更多行tblRates_balance
。
我正在尝试显示查询这些表的结果,以使其显示每个tblDepRatesCats
数据以及相应的tblRates_balance
数据,但相反,它显示的是tblDepRatesCats
以便如果tblDepRatesCats
行具有tblDepRatesCats
3个tblDepRatesCats
行,则tblDepRatesCats
行被重复一行tblDepRatesCats
'
如您所见,“超级现在的支票帐户”显示3次,但我希望它仅显示一次,并在一个标题下列出3个最小余额和apy结果。
现在支票账户的最低每日余额以赚取APY年利率1000美元10
Super NOW支票账户每天赚取APY的最低日余额百分比,%2222美元2
Super NOW Checking Account获得APY的最低每日余额的年百分比收益率%$ 2100 25
Super NOW Checking Account获得APY的每日最低最低年利率百分比$ 2000 20
货币市场账户赚取APY的最低每日余额年利率百分比$ 3000 30
下面是我的测试代码。 任何帮助将不胜感激。
$result = mysql_query('SELECT tblDepRatesCats.*, tblRates_balance.* FROM tblDepRatesCats JOIN tblRates_balance ON tblDepRatesCats.ID = tblRates_balance.depratecat ORDER BY tblDepRatesCats.header_order, tblRates_balance.suborder;');
while ($row = mysql_fetch_assoc($result))
{
echo ("<table width=\"98%\" border=\"0\" bgcolor:\"#ffffff\"><tr><td>");
echo ("" . $row["header"] . " <br>");
echo ("" . $row["left_text"] . " ");
echo ("" . $row["right_text"] . "");
echo ("</tr></td>");
//   temporarily added
echo ("<tr><td>");
echo ("" . $row["MinBalance"] . "");
echo (" ");
echo ("" . $row["InterestRate"] . " <br><br>");
echo ("</tr></td>");
}
只需将您不想每次重复的输出移到while循环之外...
echo ("<table width=\"98%\" border=\"0\" bgcolor:\"#ffffff\"><tr><td>");
echo ("" . $row["header"] . " <br>");
echo ("" . $row["left_text"] . " ");
echo ("" . $row["right_text"] . "");
echo ("</tr></td>");
echo ("<tr><td>");
while ($row = mysql_fetch_assoc($result))
{
//  temporarily added
echo ("" . $row["MinBalance"] . "");
echo (" ");
echo ("" . $row["InterestRate"] . " <br><br>");
}
echo ("</tr></td>");
如果我理解正确的话,那么您要做的就是转移代码:
$result = mysql_query('SELECT tblDepRatesCats.*, tblRates_balance.* FROM tblDepRatesCats JOIN tblRates_balance ON tblDepRatesCats.ID = tblRates_balance.depratecat ORDER BY tblDepRatesCats.header_order, tblRates_balance.suborder;');
$new_result = array();
while ($row = mysql_fetch_assoc($result))
{
$new_result[$row["header"]][] = $row;
}
foreach($new_result as $new_row){
echo ("<table width=\"98%\" border=\"0\" bgcolor:\"#ffffff\"><tr><td>");
echo ("" . $new_row[0]["header"] . " <br>");
echo ("" . $new_row[0]["left_text"] . " ");
echo ("" . $new_row[0]["right_text"] . "");
echo ("</tr></td>");
foreach($new_row as $row){
//   temporarily added
echo ("<tr><td>");
echo ("" . $row["MinBalance"] . "");
echo(" ");
echo ("" . $row["InterestRate"] . " <br><br>");
echo ("</tr></td>");
}
//also, dont forget to close the table:
echo "</table>";
}
每次循环时,代码创建新表的方式
编辑以避免警告。 尽管找到一种根本不必调用$result[0]["xxxxx"]
的方法可能更有意义。 也许静态变量会更容易,尽管您可能正在寻找第二个查询来获取这些值。 这取决于
如果表之间的链接可以为0,请使用左连接。 仅使用联接将导致余额表中没有数据的行从结果中删除。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.