Intereting Posts

Несколько данных запроса в единую таблицу HTML (PHP, MySQL)

Вот мой текущий код. Я пытаюсь отобразить данные из трех отдельных запросов в одну таблицу с несколькими столбцами. Является ли мое заявление неверным здесь? Он печатает 1 таблицу данных, затем одну за ней, а не рядом с ней в той же строке.

echo "<table border='1'> <tr> <TH COLSPAN=2>July 2010</TH> <TH COLSPAN=2>August 2010</TH> <TH COLSPAN=2>September 2010</TH> </tr> <tr> <th>User</th> <th>Posts</th> <th>User</th> <th>Posts</th> <th>User</th> <th>Posts</th> </tr>"; while (($row = mysql_fetch_assoc($july)) || ($row2 = mysql_fetch_assoc($aug)) || ($row3 = mysql_fetch_assoc($sept))) { echo "<tr>"; echo "<td>" . $row['cUsername'] . "</td>"; echo "<td>" . $row['postCount'] . "</td>"; echo "<td>" . $row2['cUsername'] . "</td>"; echo "<td>" . $row2['postCount'] . "</td>"; echo "<td>" . $row3['cUsername'] . "</td>"; echo "<td>" . $row3['postCount'] . "</td>"; echo "</tr>"; } echo "</table>"; 

Solutions Collecting From Web of "Несколько данных запроса в единую таблицу HTML (PHP, MySQL)"

 $data = array(); while($row = mysql_fetch_assoc($july)) {$data['row'][] = $row;} while($row = mysql_fetch_assoc($aug)) {$data['row2'][] = $row;} while($row = mysql_fetch_assoc($sept)) {$data['row3'][] = $row;} $count = count($data['row']); for($i=0;$i<=$count;$i++) { echo '<tr>'; if(($i % 3) == 1) { echo "<td>" . $data['row3'][$i]['cUsername'] . "</td>"; echo "<td>" . $data['row3'][$i]['postCount'] . "</td>"; }else if(($i % 2) == 1) { echo "<td>" . $data['row2'][$i]['cUsername'] . "</td>"; echo "<td>" . $data['row2'][$i]['postCount'] . "</td>"; }else /*Never try find remainder of 1 as theres always a multiple of 1*/ { echo "<td>" . $data['row'][$i]['cUsername'] . "</td>"; echo "<td>" . $data['row'][$i]['postCount'] . "</td>"; } echo '</tr>'; } 

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

мой код предлагается как непроверенный.

Цикл while принимает предложение OR. Это означает, что если первый возвращает true, он не будет выполнять второй.

Это потребует открытия трех отдельных подключений к MySQL atв, запускающих три запроса, каждый из которых в своем собственном соединении.

Вы должны переписать свой запрос так, как это

 SELECT user_id, ( SELECT COUNT(*) FROM posts p WHERE p.user_id = u.user_id AND p.date >= '2010-06-01' AND p.date < '2010-07-01' ) AS june_count, ( SELECT COUNT(*) FROM posts p WHERE p.user_id = u.user_id AND p.date >= '2010-07-01' AND p.date < '2010-08-01' ) AS july_count, ( SELECT COUNT(*) FROM posts p WHERE p.user_id = u.user_id AND p.date >= '2010-08-01' AND p.date < '2010-09-01' ) AS aug_count FROM users u