Php 显示基于外键的数据
您不久前发送的代码在我的系统上运行得非常好,因此我还在另一个模块中使用了它,管理员可以在其中查看日期。但是我遇到了问题 在这种情况下,首先添加订单的第一个用户,甚至是具有相同名称和部分的下一个用户,现在都被正确地记录和保存。但是,问题是当记录完成时,它会显示记录的第一个订单的重复值Php 显示基于外键的数据,php,mysql,sql,html-table,Php,Mysql,Sql,Html Table,您不久前发送的代码在我的系统上运行得非常好,因此我还在另一个模块中使用了它,管理员可以在其中查看日期。但是我遇到了问题 在这种情况下,首先添加订单的第一个用户,甚至是具有相同名称和部分的下一个用户,现在都被正确地记录和保存。但是,问题是当记录完成时,它会显示记录的第一个订单的重复值 DATE | NAME | SECTION | PAYABLE | PRODUCT | QUANTITY 10/04/18 | User1 | Section 1
DATE | NAME | SECTION | PAYABLE | PRODUCT | QUANTITY
10/04/18 | User1 | Section 1 | 990 | Magic Mug | 3
| T-shirt | 3
10/04/18 | User1 | Section 1 | 630 | Magic Mug | 3
| Thumbler | 2
10/04/18 | User1 | Section 1 | 990 | Magic Mug | 3
| T-shirt | 3
这是我使用的PHP代码,我只在代码中添加了日期
$last_date = NULL;
$last_name = NULL;
$last_section = NULL;
$last_payable = NULL;
while ($row = mysql_fetch_array($result)) {
$date = "";
$name = "";
$section = "";
$payable = "";
if ($last_name === NULL || $last_date != $row['date'] ||
$last_name != $row['name'] ||
$last_section != $row['section'] ||
$last_payable != $row['payable']) {
$last_date = $row['date'];
$last_name = $row['name'];
$last_section = $row['section'];
$last_payable = $row['payable'];
$date = $row['date'];
$name = $row['name'];
$section = $row['section'];
$payable = $row['payable'];
}
echo '<tr style="text-align:center;">';
echo '<td>'.$date.'</td>';
echo '<td>'.$name.'</td>';
echo '<td>'.$section.'</td>';
echo '<td>'.$payable.'</td>';
echo '<td>'.$row['product'].'</td>';
echo '<td>'.$row['qty'].'</td>';
echo '</tr>';
}
$last_date=NULL;
$last_name=NULL;
$last_section=NULL;
$last_payment=NULL;
while($row=mysql\u fetch\u数组($result)){
$date=“”;
$name=“”;
$section=“”;
$应付=”;
如果($last_name==NULL | |$last_date!=$row['date']||
$last_name!=$row['name']||
$last_section!=$row['section']||
$last_payment!=$row['payment']){
$last_date=$row['date'];
$last_name=$row['name'];
$last_section=$row['section'];
$last_Payment=$row[‘Payment’];
$date=$row['date'];
$name=$row['name'];
$section=$row['section'];
$应付=$行[“应付”];
}
回声';
回显“.$date.”;
回显“.$name.”;
回显“.$section.”;
回音“.$应付”;
回显'.$row['product'].';
回显“.$row['qty']”;
回声';
}
问题不在您的查询中。我检查了问题是否存在于您的逻辑中,您将其放入while循环以打印值。
可能存在多个用户的用户名相同的情况。因此,您可以使用确认
,这对于每个订单都是唯一的
$result = mysql_query("
SELECT reservation.firstname, reservation.lastname, reservation.payable, reservation.floor, reservation.section, orders.product, orders.qty, reservation.date, orders.confirmation
FROM orders
INNER JOIN reservation
ON orders.confirmation = reservation.confirmation
WHERE reservation.date = CURDATE() && reservation.floor = '23rd Floor'
");
$last_confirmation_seen = NULL;
while ($row = mysql_fetch_array($result)) {
$firstname = "";
$lastname = "";
$section = "";
$payable = "";
if ($last_confirmation_seen === NULL || $row['confirmation'] != $last_confirmation_seen) {
$last_confirmation_seen = $row['confirmation'];
$firstname = $row['firstname'];
$lastname = $row['lastname'];
$section = $row['section'];
$payable = $row['payable'];
}
echo '<tr style="text-align:center;">';
echo '<td>'.$firstname.' '.$lastname.'</td>';
echo '<td>'.$section.'</td>';
echo '<td>'.$payable.'</td>';
echo '<td>'.$row['product'].'</td>';
echo '<td>'.$row['qty'].'</td>';
echo '</tr>';
}
$result=mysql\u查询(“
选择reservation.firstname、reservation.lastname、reservation.payment、reservation.floor、reservation.section、orders.product、orders.qty、reservation.date、orders.confirmation
从命令
内部联接保留
ON orders.confirmation=reservation.confirmation
其中reservation.date=CURDATE()&&reservation.floor='23th floor'
");
$last\u confirmation\u seen=NULL;
while($row=mysql\u fetch\u数组($result)){
$firstname=“”;
$lastname=“”;
$section=“”;
$应付=”;
if($last_confirmation_seen==NULL | |$row['confirmation']!=$last_confirmation_seen){
$last_confirmation_seen=$row['confirmation'];
$firstname=$row['firstname'];
$lastname=$row['lastname'];
$section=$row['section'];
$应付=$行[“应付”];
}
回声';
回显“.$firstname.”.$lastname.”;
回显“.$section.”;
回音“.$应付”;
回显'.$row['product'].';
回显“.$row['qty']”;
回声';
}
试试这个,我想这会对您有所帮助。您的预期输出建议,当这三个值中的一个发生变化时,我们应该显示名称、节和应付款值一次。因此,我们可以稍微修改给出的答案,以在迭代结果集时维护这三列的状态
$last_date = NULL;
$last_name = NULL;
$last_section = NULL;
$last_payable = NULL;
while ($row = mysql_fetch_array($result)) {
$date = "";
$name = "";
$section = "";
$payable = "";
if ($last_name === NULL ||
$last_date != $row['date'] ||
$last_name != $row['name'] ||
$last_section != $row['section'] ||
$last_payable != $row['payable']) {
$last_date = $row['date'];
$last_name = $row['name'];
$last_section = $row['section'];
$last_payable = $row['payable'];
$date = $row['date'];
$name = $row['name'];
$section = $row['section'];
$payable = $row['payable'];
}
echo '<tr style="text-align:center;">';
echo '<td>'.$date.'</td>';
echo '<td>'.$name.'</td>';
echo '<td>'.$section.'</td>';
echo '<td>'.$payable.'</td>';
echo '<td>'.$row['product'].'</td>';
echo '<td>'.$row['qty'].'</td>';
echo '</tr>';
}
$last_date=NULL;
$last_name=NULL;
$last_section=NULL;
$last_payment=NULL;
while($row=mysql\u fetch\u数组($result)){
$date=“”;
$name=“”;
$section=“”;
$应付=”;
如果($last_name===NULL||
$last_date!=$row['date']||
$last_name!=$row['name']||
$last_section!=$row['section']||
$last_payment!=$row['payment']){
$last_date=$row['date'];
$last_name=$row['name'];
$last_section=$row['section'];
$last_Payment=$row[‘Payment’];
$date=$row['date'];
$name=$row['name'];
$section=$row['section'];
$应付=$行[“应付”];
}
回声';
回显“.$date.”;
回显“.$name.”;
回显“.$section.”;
回音“.$应付”;
回显'.$row['product'].';
回显“.$row['qty']”;
回声';
}
Duplicate:预期输出表中可能重复的列/数据名与PHP代码不一致。我将要求你修正你的问题,以便一切都一致。Sir@TimBiegeleisen PHP代码现在已经修改。代码仍然与表不同步。嗨,Sir@Tim。我使用了这个代码,它再次完美地工作。然而,在我的一个模块中使用它时遇到了一个问题,该模块有一个附加列。我把问题贴出来了。希望这次你能再次帮助我。谢谢。问题仍然存在,先生@Tim。添加的第一个数据是重复的。您的预期输出意味着只要日期、名称、节或应付款列中的一个列具有新值,新组就会开始。我的回答应该包括这一点。我无法调整我的答案,因为我看不到任何应该失败的数据。您的答案现在起作用了,先生@Tim。我不知道刚才这个系统是怎么回事。非常感谢。嗨,先生@Tim有没有办法只获取从现在到过去5天的数据?我应该使用什么查询?非常感谢。