[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывести строку один раз
Agrail
Имеется следующая проблема.Есть БД с 4 колонками - ID, Avtor, Nazvanie, Text.
Нужно вывести содержимое БД, но так, чтобы автор каждого стихотворения выводился один раз перед всеми своими стихотворениями:

Автор Пушкин
Стихи
Стихи
Стихи
....
Автор Тургенев
Стихи
Стихи
Стихи
...
и.т.д.

Я решил эту задачу следующим образом:

$avti = mysql_query("SELECT Avtor FROM Stihi WHERE ID > 0");
$avty = mysql_query("SELECT Avtor FROM Stihi WHERE ID > 1");
$q = mysql_query("SELECT * FROM Stihi");

for ($i=0, $y=0, $z=0;$i<mysql_num_rows($avti),$y<mysql_num_rows($avty), $y<mysql_num_rows($q);$i++,$y++,$z++)
{
$f = mysql_fetch_array($q);
$chet1 = mysql_fetch_array($avti);
$chet2 = mysql_fetch_array($avty);
if ($chet1[Avtor]!==$chet2[Avtor])
{echo "<h2>$f[Avtor]</h2>";}
echo "<h3>$f[Nazvanie]</h3>";
echo "<p><pre> $f[Text_S]</pre> </p>";
}

Но в результате имеем следующее:


Стихи
Стихи
Автор Пушкин.
Стихи
...

Стихи
Стихи
Автор Тургенев
Стихи
...
и.т.д.

В общем рабтает, но вверх ногами.
Не могли бы вы мне помочь?



Спустя 21 минута, 41 секунда (3.04.2011 - 15:29) inpost написал(а):
$avti = mysql_query("SELECT Avtor FROM Stihi");
while($row = mysql_fetch_assoc($avti))
{
if(!isset($i) || $i != $row['author'])
{
echo $row['author'];
$i = $row['author'];
}
echo $row['stih'];
}

Спустя 2 минуты, 10 секунд (3.04.2011 - 15:31) neadekvat написал(а):
Немножко дополню код inpost'a

$avti = mysql_query("SELECT * FROM Stihi ORDER BY Avtor");
$cur_auth = null;
while($row = mysql_fetch_assoc($avti))
{
if ($cur_auth != $row['Avtor']) {
echo $row['Avtor'];
$cur_auth = $row['Avtor'];
}

echo $row['stih'];
}

Спустя 59 секунд (3.04.2011 - 15:32) Snus написал(а):
$query = "SELECT * FROM `Stihi` ORDER BY `Avtor`, `Nazvanie`";
$sql = mysql_query($query) or die(mysql_error());
$lsta = '';
while ( $row = mysql_fetch_assoc($sql) ){
if($row['Avtor'] != $lsta) echo '<h2>'.$row['Avtor'].'</h2>';
echo '<h3>'.$row['Nazvanie'].'</h3>';
echo '<p><pre> '.$row['Text_S'].'</pre> </p>';
$lsta = $row['Avtor'];
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.