Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php/mysql中,如何从同一个表中只获取一次重复值,另一次获取多个重复值_Php_Mysql_Database - Fatal编程技术网

在php/mysql中,如何从同一个表中只获取一次重复值,另一次获取多个重复值

在php/mysql中,如何从同一个表中只获取一次重复值,另一次获取多个重复值,php,mysql,database,Php,Mysql,Database,我有两张桌子,一张是会计,另一张是订票 我想从预订表中获取数据,因为重复数据应该只显示一次,但所有数据都来自所选UId的“开始”字段。按以下格式 日期:2014-12-20 开始:7:00,7:30,8:00,8:30,9:00,9:30 玩家:0 评论:测试预订 $comp_query1=mysql_query("select * from bookings where UId = '$contact_id'"); while($booking=mysql_fetch_array(

我有两张桌子,一张是会计,另一张是订票

我想从预订表中获取数据,因为重复数据应该只显示一次,但所有数据都来自所选UId的“开始”字段。按以下格式

日期:2014-12-20 开始:7:00,7:30,8:00,8:30,9:00,9:30 玩家:0 评论:测试预订

$comp_query1=mysql_query("select * from bookings where UId = '$contact_id'");
    while($booking=mysql_fetch_array($comp_query1))
    {
    ?>
    <tr>
<td><strong>comments : </strong></td>
<td><?php echo $booking['comments']; ?></td>
</tr>
     <tr>
<td><strong>Date : </strong></td>
<td><?php echo $booking['date']; ?></td>
</tr>

<tr>
<td><strong>Players : </strong></td>
<td><?php echo $booking['Players']; ?></td>
</tr>
<tr>
<td><strong>Start : </strong></td>
<td>    <?php echo $booking['start']; ?>


 </td>
</tr>
$comp\u query1=mysql\u查询(“从预订中选择*,其中UId='$contact\u id'”);
而($booking=mysql\u fetch\u数组($comp\u query1))
{
?>
评论:
日期:
玩家:
开始:
这是我的问题,帮帮我。
提前感谢您。

只需使用
键创建一个数组,如果您已经有了它,只需将
数据
附加到您已经存储的值

类似于(翻译成PHP):

然后可以使用正确的值在新数组上循环

select `date` , 
GROUP_CONCAT(
`start` order by `start` asc
) as `start`,

GROUP_CONCAT(
comments order by `start` asc
) as comments,
SUM(`Players`) as `Players`
from bookings 
where UId = '$contact_id'
group by `date`;
这将导致

日期:2014-12-20 开始时间:7:00,7:30,8:00,8:30,9:00,9:30 球员:0 备注:考试预订,考试预订


然后,您可以简单地在每个日期的不同行中循环并显示结果

通过使用内爆函数,我得到了最简单的方法

 <?php 
    $comp_query1=mysql_query("select * from bookings where UId = '$contact_id'");
    $book = array();
    while($booking=mysql_fetch_array($comp_query1))
    {
        $comments = $booking['comments'];
        $date = $booking['date'];
        $players = $booking['Players'];
        $book[] = $booking['start'];
        $comma_separated = implode(' | ', $book);
    }
    ?>
    <tr>
<td><strong>comments : </strong></td>
<td><?php echo $comments; ?></td>
</tr>
     <tr>
<td><strong>Date : </strong></td>
<td><?php echo $date; ?></td>
</tr>

<tr>
<td><strong>Players : </strong></td>
<td><?php echo $players; ?></td>
</tr>
<tr>
<td><strong>Start : </strong></td>
<td>    <?php echo $comma_separated; ?>


 </td>
</tr>

您可以使用GROUP_CONCAT,但我只返回一个有序数组,并使用一个简单的PHP loopWell进行操作。我没有时间为您编写代码,但它确实有效。只需将算法写在纸上就行了。
 <?php 
    $comp_query1=mysql_query("select * from bookings where UId = '$contact_id'");
    $book = array();
    while($booking=mysql_fetch_array($comp_query1))
    {
        $comments = $booking['comments'];
        $date = $booking['date'];
        $players = $booking['Players'];
        $book[] = $booking['start'];
        $comma_separated = implode(' | ', $book);
    }
    ?>
    <tr>
<td><strong>comments : </strong></td>
<td><?php echo $comments; ?></td>
</tr>
     <tr>
<td><strong>Date : </strong></td>
<td><?php echo $date; ?></td>
</tr>

<tr>
<td><strong>Players : </strong></td>
<td><?php echo $players; ?></td>
</tr>
<tr>
<td><strong>Start : </strong></td>
<td>    <?php echo $comma_separated; ?>


 </td>
</tr>