цикл по базе данных и показать в таблице - PullRequest
2 голосов
/ 11 мая 2009

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

<?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>";
?>

Спасибо

Ответы [ 5 ]

15 голосов
/ 11 мая 2009

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>";
4 голосов
/ 11 мая 2009

Вы выбираете только один ряд:

$row_users = mysql_fetch_array($results);

Вы никогда больше не вызываете fetch, поэтому вы ничего не просматриваете.

Я бы предложил изменить ваш цикл следующим образом:

echo "<table>";
while ($row = mysql_fetch_array($results)) {
    echo "<tr><td>".($row['email'])."</td></tr>";
}
echo "</table>";

Цикл while будет перебирать результаты и присваивать строку $ row, пока у вас не закончится ряд. Кроме того, нет необходимости иметь дело с подсчетом результатов на этом этапе. Это «обычный» способ зацикливания результатов из БД в php.

3 голосов
/ 22 июня 2017

В новом 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);
0 голосов
/ 11 мая 2009

Вам не нужно выводить таблицу внутри таблицы так, как вы это делаете.

$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>';

Нечто подобное должно работать.

0 голосов
/ 11 мая 2009

Ваша проблема в этой строке:

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>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...