Любой эффективный способ зациклить данные базы данных для отображения в одной строке для того же поля? - PullRequest
2 голосов
/ 01 ноября 2011

Я работаю над системой бронирования стенда.Клиент может выбрать стенд и день бронирования.

enter image description here

Каждый выбранный флажок будет сохранен в идентификаторе бронирования после нажатия кнопки Резервировать (и т. Д .: 3 флажка = 3 идентификатора бронирования).

Когда я показываю все бронирование, оно отображает весь стенд и день.Если я забронирую один и тот же стенд на 3 дня, он будет отображаться отдельно в 3 ряда.enter image description here

Как я хочу изменить свою кодировку, чтобы я мог отображать одну и ту же будку и соответствующие дни в одной строке, как показано ниже: enter image description here

Вот моя кодировка:

<?php 

     include("dbconfig.php");

     $query4 = "SELECT bookingID,eventinfo.eventTitle,boothAlias,testbook.bstatus,date,day, username FROM eventinfo, testbook WHERE username='$user' AND testbook.eventID = eventinfo.eventID order by date desc";
     //$query4="select * from testbook, eventinfo where username= '$user' and testbook.'$event'==eventinfo.'$event' order by eventID asc";

        $result4 = mysql_query($query4);
        while($row=mysql_fetch_array($result4))
        {
        $booth=stripslashes($row["boothAlias"]);
        $day=stripslashes($row["day"]);
        $event= stripslashes($row["eventTitle"]);
        $date=stripslashes($row["date"]);
        $bstatus=stripslashes($row["bstatus"]);

    if ($bstatus==0){

        echo "<tr class='record'>";
        echo "<td class='reg' width='80'>$booth</td>";
        echo "<td class='reg' width='80'>$day</td>";
        echo "<td class='reg' width='180'>$event</td>";
        echo "<td class='reg' width='150'>$date</td>";
        echo "<td class='reg' width='70'><img src='icon_stop.gif'/></td>";
        echo "<td class='reg' width='30'><a id='$row[bookingID]' style='color:#ff0000;' class='delbutton' href='#'><img src='icon_delete.gif' border='0'></a></td></tr>";
    }else{
        echo "<tr class='record'>";
        echo "<td class='reg' width='80'>$booth</td>";
        echo "<td class='reg' width='80'>$day</td>";
        echo "<td class='reg' width='180'>$event</td>";
        echo "<td class='reg' width='150'>$date</td>";
        echo "<td class='reg' width='70'><img src='icon.approve.gif'/></td>";
        echo "<td class='reg' width='30'><a id='$row[bookingID]' style='color:#ff0000;' class='delbutton' href='#'><img src='icon_delete.gif' border='0'></a></td></tr>";
    }

        }
    ?>

1 Ответ

1 голос
/ 01 ноября 2011

Вашему запросу требуется предложение GROUP BY вместе с агрегатной функцией GROUP_CONCAT():

SELECT 
    bookingID,
    eventinfo.eventTitle,
    boothAlias,
    testbook.bstatus,
    date,
    GROUP_CONCAT(day SEPARATOR ', ') AS day, 
    username 
FROM eventinfo, testbook 
WHERE username='$user' 
    AND testbook.eventID = eventinfo.eventID 
GROUP BY booths, date
ORDER BY date desc

Это не проверено, но следует делать то, что вы хотите. Если вы получили неправильный результат, измените поля, которые вы используете в своем предложении GROUP BY.

В вашем запросе вы используете неявное соединение , которое не так хорошо, как использование явного соединения. Не зная структуры вашей таблицы, я не могу отредактировать запрос в явном соединении, но вы должны найти это и преобразовать его самостоятельно. Это избавит вас от головной боли при больших запросах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...