Проблема с выводом из БД

Статус
В этой теме нельзя размещать новые ответы.

fredis69

Постоялец
Регистрация
24 Окт 2008
Сообщения
84
Реакции
2
Здравствуйте!

Такая проблема: Нужно вывести из БД все данные по порядку в группы, по три записи в каждую группу.

Как это реализовать?

Таблица в БД user с полями name и age.
В name заносится имя человека, а в age его возраст.


Должно получится что то вроде такого:
PHP:
//Первая группа
<table>
<tr>
<td>
<p>
Петя - 30 лет.
<br>
Надя - 27 лет.
<br>
Ирина - 40 лет.
</p>
</td>
</tr>
</table>

//Вторая группа
<table>
<tr>
<td>
<p>
Игорь - 25 лет.
<br>
Иван - 38 лет.
<br>
Николай - 20 лет.
</p>
</td>
</tr>
</table>

//и так далее пока не кончатся записи в таблице [B]user[/B]......
 
Вот так надо:

PHP:
$query = "SELECT * FROM user;"

$result = mysql_query($query);

while($row = mysql_fetch_array($result))
{
     echo "<table> <tr><td><p>".$row[name]." - ".$row[age]." лет.<br> </p> </td></tr></table>";
}
 
PHP:
<?php

$result = mysq_query('SELECT * FROM `users`');
$users = array();

while ( $row = mysql_fetch_assoc($result) )
{
    $users[] = $row;
}

foreach ( $users as $k=>$v )
{
    if ( k%3 == 3 )
    {
        echo '<table><tr><td><p>' . $v['name'] . ' - ' . $v['age'] . 'лет.';
    }

    echo $v['name'] . ' - ' . $v['age'] . 'лет.<br />';

    if ( $k%3 == 0 )
    {
        echo '</p></td></tr></table>';
    }
}

?>
как-то вроде так.
 
PHP:
<?php

$result = mysq_query('SELECT * FROM `users`');
$users = array();

while ( $row = mysql_fetch_assoc($result) )
{
    $users[] = $row;
}

foreach ( $users as $k=>$v )
{
    if ( k%3 == 3 )
    {
        echo '<table><tr><td><p>' . $v['name'] . ' - ' . $v['age'] . 'лет.';
    }

    echo $v['name'] . ' - ' . $v['age'] . 'лет.<br />';

    if ( $k%3 == 0 )
    {
        echo '</p></td></tr></table>';
    }
}

?>
как-то вроде так.

Для начала замечу, что k%3 == 3 заведомо ложное условие, т.е. оно никогда не выполнится, какое-бы мы k не подали ;) Ну а $k%3 == 0 выполнется для для всех k, кратных 3м. Так что логики не уловил совсем... К тому же, а зачем массив тут использовать?..
 
Ребята всё неправильно.

Ни чего не работает та как надо.
 
Извиняюсь, недочитал то что надо сделать :ah:

PHP:
$query = "SELECT * FROM user;"

$result = mysql_query($query);

$i = 0;

while($row = mysql_fetch_array($result))
{
    if($i % 3 == 0) 
    {
        echo "<table> <tr>";
        $open = 1;
    }

     echo "<td><p>".$row[name]." - ".$row[age]." лет.<br> </p> </td>";

  if($i % 2 == 0)
  {
       echo "</tr></table>";
       $open = 0;
  }
   
  $i = ($i >= 2) ? 0 : $i++;
}

if($open) echo "</tr></table>";
 
fredis69, попробуй так:
PHP:
$res=mysq_query('SELECT * FROM `users`');
$i=0;
while ($row=mysql_fetch_assoc($res)) {
	if ($i%3==0 && $i) {
		echo '</p></td></tr></table>';
	}
	$i++;
	if ($i%3==1) {
		echo '<table><tr><td><p>';
	}
	echo $row['name'].' - '.$row['age'].' лет.<br/>';
}
if ($i) {
	echo '</p></td></tr></table>';
}
mysql_free_result($res);

ПроФ, у тебя в первой итерации таблица откроется и тут же закроется, т.к. 0%3==0 и 0%2==0, потом две строки выплюнет вне таблицы и одну в таблице и опять закроет.
 
Avadon Большое спасибо всё работает отлично
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху