Я пытаюсь зациклиться на моей базе данных пользователей, чтобы показывать каждое имя пользователя в таблице в своей строке. Я могу заставить его показать только одного пользователя, но через это число строк. Код ниже
<?php require_once ('../login/connection.php'); include ('functions.php'); $query = "SELECT * FROM users"; $results=mysql_query($query); $row_count=mysql_num_rows($results); $row_users = mysql_fetch_array($results); echo "<table>"; for ($i=0; $i<$row_count; $i++) { echo "<table><tr><td>".($row_users['email'])."</td></tr>"; } echo "</table>"; ?>
благодаря
mysql_fetch_array извлекает одну строку – вы обычно используете ее в цикле while, чтобы съесть все строки в наборе результатов, например
echo "<table>"; while ($row_users = mysql_fetch_array($results)) { //output a row here echo "<tr><td>".($row_users['email'])."</td></tr>"; } echo "</table>";
Вы выбираете только одну строку:
$row_users = mysql_fetch_array($results);
Вы никогда не вызываете выборку снова, чтобы вы ни на что не зацикливались.
Я предлагаю изменить ваш цикл следующим образом:
echo "<table>"; while ($row = mysql_fetch_array($results)) { echo "<tr><td>".($row['email'])."</td></tr>"; } echo "</table>";
Цикл while будет проходить через результаты и присваивать строку строке $ row, пока не закончится строка. Плюс нет необходимости иметь дело с получением подсчета результатов в этот момент. Это «обычный» способ перебрать результаты из базы данных в php.
В новом MYSQLI я использую это кодирование
$query = "SELECT * FROM users"; $results=mysqli_query($con,$query); $row_count=mysqli_num_rows($results); echo "<table>"; while ($row = mysqli_fetch_array($results)) { echo "<tr><td>".($row['id'])."</td></tr>"; } echo "</table>"; mysqli_query($con,$query); mysqli_close($con);
Ваша проблема в этой строке:
echo "<table><tr><td>".($row_users['email'])."</td></tr>";
Вы снова повторяете <table>
. Удалите это, чтобы ваш код выглядел так:
echo "<table>"; for ($i=0; $i<$row_count; $i++) { echo "<tr><td>".($row_users['email'])."</td></tr>"; } echo "</table>";
Вам не нужно выводить таблицу внутри таблицы так, как вы ее делаете.
$result = mysql_query("SELECT `email` FROM `users`"); $num_emails = mysql_num_rows($result); echo "<table><caption>There are/is $num_emails email(s)</caption>"; while ($row = mysql_fetch_assoc($result)) { echo "<tr><td>{$row['email']}</td></tr>"; } echo '</table>';
Что-то вроде этого должно работать.