PHP循环未正确显示
我需要一些关于循环问题的帮助。对于下面的示例代码,我有两个Mysql表:PHP循环未正确显示,php,loops,Php,Loops,我需要一些关于循环问题的帮助。对于下面的示例代码,我有两个Mysql表: tblDepRatesCats: ID header left_text center_text right_text header_order ------ tblRates_balance: id depratecat MinBalance InterestRate APY suborder tblDepRatesCats.ID=tblRatesBalance.depratecat。对于t
tblDepRatesCats:
ID
header
left_text
center_text
right_text
header_order
------
tblRates_balance:
id
depratecat
MinBalance
InterestRate
APY
suborder
tblDepRatesCats.ID=tblRatesBalance.depratecat
。对于tblDepRatesCats
中的每一行,在tblRates\u balance
中可能有0行或1行或更多行
我试图显示查询这些表的结果,以便它显示每个tblDepRatesCats
数据以及相应的tblRates\u balance
数据,但它显示的是tblDepRatesCats
,因此如果tblDepRatesCats
行有3个tblDepRatesCats
行与其关联,tblDepRatesCats
行重复3次,其中一行为tblDepRatesCats
'
正如您在下面看到的,“超级支票账户”显示了3次,但我希望它只显示一次,在一个标题下列出了最低余额和apy的3个结果
现在支票账户每天的最低余额,以赚取每年APY
百分比收益率1000美元10
Super NOW支票账户每日最低余额以赚取APY年度
百分比收益率%$22222
Super NOW支票账户每日最低余额以赚取APY年度
百分比收益率%$2100 25
Super NOW支票账户每日最低余额以赚取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>");
}
$result=mysql\u query('SELECT tblDepRatesCats.*,tblRates\u balance.*FROM tblDepRatesCats JOIN tblRates\u balance ON tblDepRatesCats.ID=tblRates\u balance.departratecat ORDER BY tblDepRatesCats.header\u ORDER,tblRates\u balance.suborder;');
while($row=mysql\u fetch\u assoc($result))
{
回声(“”);
echo(“$row[“header”]。”
”);
回声(“$row[“left_text”]。”);
回声(“$row[“right_text”]。”);
回声(“”);
//临时添加
回声(“”);
echo(“$row[“MinBalance”]。”);
回声(“”);
echo(“$row[“InterestRate”]。”
”;
回声(“”);
}
只需将不希望每次重复的输出移到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>");
echo(“”);
echo(“$row[“header”]。”
”);
回声(“$row[“left_text”]。”);
回声(“$row[“right_text”]。”);
回声(“”);
回声(“”);
while($row=mysql\u fetch\u assoc($result))
{
//&暂时增加
echo(“$row[“MinBalance”]。”);
回声(“”);
echo(“$row[“InterestRate”]。”
”;
}
回声(“”);
如果我对您的理解正确,那么您需要做的就是转换代码:
$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=mysql\u query('SELECT tblDepRatesCats.*,tblRates\u balance.*FROM tblDepRatesCats JOIN tblRates\u balance ON tblDepRatesCats.ID=tblRates\u balance.departratecat ORDER BY tblDepRatesCats.header\u ORDER,tblRates\u balance.suborder;');
$new_result=array();
while($row=mysql\u fetch\u assoc($result))
{
$new_result[$row[“header”][]=$row;
}
foreach($new\u结果为$new\u行){
回声(“”);
echo(“$new_行[0][“头”]。”
”);
echo(“$new_row[0][“left_text”]。”);
echo(“$new_row[0][“right_text”]。”);
回声(“”);
foreach($新的行作为$行){
//临时添加
回声(“”);
echo(“$row[“MinBalance”]。”);
回声(“”);
echo(“$row[“InterestRate”]。”
”;
回声(“”);
}
//此外,别忘了关上桌子:
回声“;
}
每次循环时,代码都会启动一个新表
编辑以避免警告。尽管找到一种根本不需要调用
$result[0][“xxxxx”]
的方法可能更有意义。也许一个静态变量会更容易,不过您可能需要第二个查询来获取这些值。如果表之间可以有0个链接,这取决于是否使用左连接。使用join only将导致从结果中删除余额表中没有数据的行。您应该停止使用Mysql,它已被折旧。检查MySqli或PDO。在查询结果中,记录重复。你必须检查你的查询我试图移动while循环,但是现在我发现一个错误重复了3次:注意:未定义的变量:第10..11..12行中的行。我需要另一个while循环吗?我需要这样显示结果:现在支票账户最低每日余额以赚取APY年百分比收益率$1000 10超级现在支票账户最低每日余额以赚取APY年百分比收益率%$22222$2100 25$2000 20货币市场账户最低每日余额,以赚取APY年百分比收益率%$3000和这些编辑,抱歉的错误。。。希望我一直都能得到它们,抱歉,我想我没有很好地解释我自己。我一直在尝试编辑我的答案,但网站一直在切断我的连接。对于我的测试,结果现在应该显示支票帐户,下面有一行。Super现在应该显示3行。货币市场应该显示一排。