Отображать результаты в нескольких таблицах HTML - PullRequest
1 голос
/ 24 января 2012

Я составляю лист регистрации волонтера для нашего хоккейного клуба.Я отображаю результаты в таблице, используя цикл while.

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

Вот как настроена моя таблица: id, дата, время, игра, name1, name2, name3, name4, name5

Вот запрос на моей главной странице:

<?php
//displays the table
$result = mysql_query("SELECT * FROM namestable ORDER BY date, time ASC");
displayTable($result);
?>

Это моя функция:

<?php
 function displayTable($result){

echo "
<table border='1'>
<tr class='top'>
<th class='date'>Date</th>
<th class='time'>Time</th>
<th class='game'>Game</th>
<th class='name'>Name</th>
<th class='name'>Name</th>
<th class='name'>Name</th>
<th class='name'>Name</th>
<th class='name'>Name</th>
<th class='sign'>Sign Up</th>
</tr>";

while($row = mysql_fetch_array($result))

{
//change the date format here
$fdate = date('M jS, Y l', strtotime($row['date']));
echo "<tr>";
echo "<td class='date'>" . $fdate . "</td>";
echo "<td class='time'>" . $row['time'] . "</td>";
echo "<td class='game'>" . $row['game'] . "</td>";
echo "<td class='nameA'>" . $row['name1'] . "</td>";
echo "<td class='nameB'>" . $row['name2'] . "</td>";
echo "<td class='nameA'>" . $row['name3'] . "</td>";
echo "<td class='nameB'>" . $row['name4'] . "</td>";
echo "<td class='nameA'>" . $row['name5'] . "</td>";
$id = $row['id'];
echo "<td class='sign'>" . "<form name='input' action='process.php' method='POST'>
             <input type='text' name='name' maxlength='25' value='Enter Name'                                                onfocus=\"if(this.value=='Enter Name') this.value='';\"/>
             <input type='hidden' name='id' value='$id'/>
             <input type='submit' value='Sign Up' />
             <input type='submit' name='dname' value='Remove Name' /></form>" .
            "<form name='delete' action='delete.php' method='POST'>
             <input type='hidden' name='id' value='$id'/>";
             if(isset($_SESSION['user_id'])){
             echo "<input type='submit' name='delete' value='Delete Event' /></form>" .
                   "</td>";
             }else{
                echo "</form>" .
                     "</td>";
             }
echo "</tr>";
}
echo "</table>";
echo "<br />";
}
?>

Пользователи могут ввести имя, чтобы зарегистрироваться и удалить свое имя.

Администраторы могут добавлять и удалять события.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 24 января 2012

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

$olddate = '';

while($row = mysql_fetch_array($result))
{
$fdate = date('M jS, Y l', strtotime($row['date']));
if ( $olddate != $fdate ) { // date has changed:
    // end the previous table (if it exists)
    if ( $olddate != '' ) {
        echo "</table>"
    }
    // start the new table. Do something with $fdate here if you like
    echo "
    <h3>$fdate</h3>
    <table border='1'>
    <tr class='top'>
    ...
    </tr>";
    }
// print a row as before.
echo "<tr>";
....
}
// end the last table
echo "</table>";

В основном единственное, что изменилось, это$fdate сохраняется также в $olddate.Когда мы обрабатываем новую строку, если дата изменилась (т.е. $olddate != $fdate), мы создаем новую таблицу.

Для каждой строки в результате mysql мы по-прежнему генерируем строку таблицы, как и раньше (вы можете внести некоторые изменения, например, больше не включать столбец Date).

1 голос
/ 24 января 2012
$getdates = mysql_query("SELECT DISTINCT date FROM namestable ORDER BY date DESC");
$dates = mysql_num_rows($getdate);

if($dates > 0){
    echo "<table width='100%' cellspacing='0' cellpadding='0'>";

    while ($rowdates = mysql_fetch_assoc($getdates)) {

    $date = $rowdates['date'];

    $getevents = mysql_query("SELECT * FROM namestable WHERE date = '$date' ORDER BY time ASC");
    $events = mysql_num_rows($getevents);


        if($events > 0){
        echo "<tr><td>$date</td></tr>";

            while ($rowevents = mysql_fetch_assoc($getevents)) {

            $event_time = $rowevents['time'];
            // all other info you want to pull here

            echo "<tr><td>ROW WITH EVENT INFO HERE</td></tr>";

            } // end event loop
        } // end if events > 0
    echo "</table>";
    } // end if dates > 0
} // end date loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...