2013-08-16 5 views
2

У меня проблема, я не могу обернуть голову.PHP/MySql Группирование HTML-таблицы

У меня есть настройки таблицы MYSQL, похожее на это:

userid   date   rating1  rating2 

1    5/1/2013  5    5 
2    5/1/2013  4    4 
3    5/1/2013  3    3 
2    5/7/2013  5    5 
1    5/7/2013  5    5 
3    5/7/2013  2    2 

У меня есть PHP-код для запроса данных:

$con=mysqli_connect("localhost","root","password","db"); 
$result = mysqli_query($con,"SELECT userid,date,rating1,rating2 FROM db"); 

Но когда я пытаюсь и вывод таблицы с помощью:

while($row = mysqli_fetch_array($result)) 
    { 
echo '<table>'; 
    echo '<thead>'; 
    echo '<tr>'; 
     echo '<th>UserID</th>'; 
     echo '<th>Date</th>'; 
     echo '<th>First Rating</th>'; 
     echo '<th>Second Rating</th>'; 
      echo '</tr>'; 
    echo '</thead>'; 
    echo '<tbody>'; 
    echo '<tr>'; 
     echo '<td>'.$row['userid'].'</td>'; 
     echo '<td>'.$row['date'].'</td>'; 
     echo '<td>'.$row['rating1'].'</td>'; 
     echo '<td>'.$row['rating2'].'</td>'; 
      echo '</tr>'; 
    echo '</tbody>'; 
echo '</table>'; 
    } 

Он выводит уникальную таблицу для каждой записи. Что мне нужно 1 HTML таблица на UserID Ex:

UserID 1 

Date   First Rating  Second Rating 

5/1/2013  5     5 
5/7/2013  5     5 



UserID 2 

Date   First Rating  Second Rating 

5/1/2013  4     4 
5/7/2013  5     5 



UserID 3 

Date   First Rating  Second Rating 

5/1/2013  3     3 
5/7/2013  2     2 

Я честно застрял ... Заранее спасибо за вашу помощь!

ответ

1
$con=mysqli_connect("localhost","root","password","db"); 
$result = mysqli_query($con,"SELECT userid,date,rating1,rating2 FROM db ORDER BY userid"); 
$id = -1; 

while($row = mysqli_fetch_array($result)) { 
    if ($id != -1 && $id != $row['userid']) { 
     echo '</tbody>'; 
     echo '</table>'; 
    } 

    if ($id != $row['userid']) { 
     echo '<table>'; 
     echo '<thead>'; 
     echo '<tr>'; 
     echo '<th>UserID</th>'; 
     echo '<th>Date</th>'; 
     echo '<th>First Rating</th>'; 
     echo '<th>Second Rating</th>'; 
     echo '</tr>'; 
     echo '</thead>'; 
     echo '<tbody>'; 

     $id = $row['userid']; 
    } 

    echo '<tr>'; 
    echo '<td>'.$row['userid'].'</td>'; 
    echo '<td>'.$row['date'].'</td>'; 
    echo '<td>'.$row['rating1'].'</td>'; 
    echo '<td>'.$row['rating2'].'</td>'; 
    echo '</tr>'; 
} 

echo '</tbody>'; 
echo '</table>'; 
+0

Не будет ли этот цикл на самой первой итерации начинать и заканчивать таблицу независимо от того, имеет ли первый идентификатор больше записей? – stephen

+0

Хорошая точка. Исправлена. – weenoid

+0

Когда я использую ваш код, я по-прежнему получаю уникальную таблицу для каждого (я должен был сделать 1 изменение, но добавил a; к строке $ id! = $ Row ['userid']; Есть ли способ объединить в одну таблицу за уникальный идентификатор пользователя? спасибо за ваше время/помощь! –

0

что-то вроде этого?

echo '<table>'; 
echo '<thead>'; 
echo '<tr>'; 
    echo '<th>UserID</th>'; 
    echo '<th>Date</th>'; 
    echo '<th>First Rating</th>'; 
    echo '<th>Second Rating</th>'; 
echo '</tr>'; 
echo '</thead>'; 
echo '<tbody>'; 

while($row = mysqli_fetch_array($result)) 
{ 
    echo '<tr>'; 
     echo '<td>'.$row['userid'].'</td>'; 
     echo '<td>'.$row['date'].'</td>'; 
     echo '<td>'.$row['rating1'].'</td>'; 
     echo '<td>'.$row['rating2'].'</td>'; 
    echo '</tr>'; 
} 

echo '</tbody>'; 
echo '</table>'; 
+0

Это не будет работать. даст единую таблицу для всех идентификаторов. –

+0

Я неправильно читал ... подумал, что это то, что было желательным. – BWS

0

Вам нужно что-то вроде:

echo '<table>'; 
echo '<thead>'; 
echo '<tr>'; 
    echo '<th>UserID</th>'; 
    echo '<th>Date</th>'; 
    echo '<th>First Rating</th>'; 
    echo '<th>Second Rating</th>'; 
echo '</tr>'; 
echo '</thead>'; 
echo '<tbody>'; 
$old_id = 0; 
while($row = mysqli_fetch_array($result)) 
{ 
    if($old_id != $row['userid']) { 
      echo "<tr><td colspan=3>".$row['userid']."</td>"; 
      $old_id = $row['userid']; 
    } else { 
     echo "<tr>"; 
     echo '<td>'.$row['userid'].'</td>'; 
     echo '<td>'.$row['date'].'</td>'; 
     echo '<td>'.$row['rating1'].'</td>'; 
     echo '<td>'.$row['rating2'].'</td>'; 
    } 
    echo '</tr>'; 
} 

echo '</tbody>'; 
echo '</table>'; 
Смежные вопросы