我在数据库中有一个名为'transactions'的表 . 我想列出这个表中的值 . 结果应以HTML表格格式显示 . 结果表中的行应按金额分组 . “transactions”表中有一个名为“amount”的列 .
这是我的代码:
$s1 = DB::table('transactions')
->select(DB::raw("GROUP_CONCAT(selected_seats SEPARATOR '') as selected_seats"),'userid','amount','show_id')
->where("show_id","=",$s)
->groupBy('userid')
->groupBy('amount')
->orderBy('userid','ASC')
->orderBy('amount', 'DESC')
->get();
我正在通过循环从$ s1变量中检索值 .
以下是输出:
我想要这样的结果:
请点击上面给出的链接 . 我是这个论坛的新手所以它不允许我在问题中添加图像 . 请帮助 .
这是整个代码:
if($s1 != null)
{
echo "<div class='panel-body'>";
echo "<table class='table table-responsive'>"; $c = 1;
echo "<th>Drama Title</th>";
echo "<th>Show Date</th>";
echo "<th>Seat booked</th>";
echo "<th>Amount</th>";
echo "<th>User</th>";
for($i=0;$i<count($s1);$i++)
{
echo "<tr><td>".$shows1[0]->show_title."</td>";
echo "<td>".$shows[0]->show_date."</td>";
echo "<td>";
echo $s1[$i]->selected_seats;
echo "</td>";
/*echo $s1[$i]->userid."
";
echo $s1[$i]->amount."
";*/
$transactions = DB::table('transactions')->where('userid',$s1[$i]->userid)->where('show_id',$s1[$i]->show_id)->get();
//var_dump($transactions);
$total_amount = 0;
//echo "<pre>Users
"; var_dump($transactions);
foreach ($transactions as $transaction)
{
//echo "userid ".$s1[$i]->userid." "."show id: ".$transaction->show_id." "."
";
// echo "amount: ".$transaction->amount." ";
$amount = $transaction->amount;
$total_amount = $total_amount + $amount; //echo $amount."
";
$c = $c+1;
//echo "no. of seats:".$c;
$users = DB::table('users')->where('id',$s1[$i]->userid)->get();
}
echo "<td>".$total_amount."</td>";
//echo $s1[$i]->userid."
";
//echo "<td>".$users[0]->name."</td>";
//echo "<pre>"; var_dump($users);
echo "</td>";
if(isset($users[0]))
{
//echo "values are set";
echo "<td>".$users[0]->name."</td></tr>";
}
else
{
//echo "null value";
continue;
}
}
/*echo $shows[0]->show_date."
";
echo $shows[0]->show_title;*/
//echo "<pre>"; var_dump($s1);
//echo "<td>".$users[0]->name."</td>";
//echo "</tr>";
echo "</table>";
echo "</div>";
?>
} else {echo“找不到记录”;
}
1 回答
我认为最简单的方法是计算循环中的数量,即打印数据或准备要发送到视图的数据 . 由于您的数据按user_id排序,因此当user_id发生变化时,您总是可以在循环中更改amount变量 . 您可以使用
count(explode($seat_variable))
获取循环的单次运行中的席位数 . 请看下面的示例代码 .$num_seat = 0; $amount = 0; $running_user_id = -1; foreach ($row as $entry) { ... if ($running_user_id != $entry['user_id']) { // check if the same user $running_user_id = $entry['user_id']; $num_seat = 0; $amount = 0; // resetting variable values for seperate user. } $num_seat += count(explode($entry['selected_seats'])); $amount += $entry['amount']; ... }
我假设您在查询中丢失了电子邮件等数据 .
Code update after questioner added his code.