Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Цикл вывода одним запросом в два списка (table)
 
 автор: quest   (25.11.2008 в 11:33)   письмо автору
 
 

Запрос $que предполагает выбор всех значений `nomer`.
Допустим, в ячейке `nomer` может быть значение "1" или "2".
Нижеприведенный код выводит все значения из базы в один список:


<?
if (($que) && (!empty($posts)))           

    {
        echo 
"<table id="1">";          

        while(
$myrow mysql_fetch_array($que))    
            
            {
echo 
"<tr>            
<td>"
.$myrow['nomer']."</td>
<td>"
.$myrow['post]."</td>
</tr>";
                
            }

                echo "</table>";


    }

        else { echo "Ничего не найдено"; }
?>


Подскажите, пожалуйста, как организовать вывод в два списка по значению 1 и по значению 2, чтобы получилось нечто подобное:

<table id="1">
<tr>            
<td>1</td>
<td>пост 123</td>
</tr>
<tr>            
<td>1</td>
<td>пост 4566</td>
</tr>
<tr>            
<td>1</td>
<td>пост 3432</td>
</tr>
</table>

<table id="2">
<tr>            
<td>2</td>
<td>пост 123</td>
</tr>
<tr>            
<td>2</td>
<td>пост 4566</td>
</tr>
</table>


Количество найденых вариантов может быть какое угодно и в табл. 1 и в табл. 2

Какой цикл должен быть? Спасибо!

  Ответить  
 
 автор: elenaki   (25.11.2008 в 11:39)   письмо автору
 
   для: quest   (25.11.2008 в 11:33)
 

а почему не сделать два запроса?

  Ответить  
 
 автор: quest   (25.11.2008 в 11:43)   письмо автору
 
   для: elenaki   (25.11.2008 в 11:39)
 

Хотелось бы одним. На случай, если номеров будет больше.

  Ответить  
 
 автор: Волки   (25.11.2008 в 12:08)   письмо автору
 
   для: quest   (25.11.2008 в 11:33)
 

<?
if ((mysql_num_rows ($que)>0) && (!empty($posts)))
{
    
$str = array();
    while(
$myrow mysql_fetch_array($que))
    { 
        
$str[$myrow['nomer'][] = "<tr><td>".$myrow['nomer'].
            
"</td><td>".$myrow['post']."</td></tr>\n";
    } 

    foreach (
$str as $key=>$value)
    {
        echo 
"<table id='$key'>".implode(" "$value)."</table>\n\n";
    }

else
{
    echo 
"Ничего не найдено";
}
?>

как-то так

  Ответить  
 
 автор: quest   (25.11.2008 в 12:24)   письмо автору
 
   для: Волки   (25.11.2008 в 12:08)
 

$str[$myrow['nomer']][] :)
Спасибо огромное!

  Ответить  
 
 автор: AcidTrash   (25.11.2008 в 12:27)   письмо автору
 
   для: quest   (25.11.2008 в 12:24)
 

А не проще было бы сгруппировать по полю nomer, в самом sql-запросе?
... GROUP BY nomer

  Ответить  
 
 автор: quest   (25.11.2008 в 12:43)   письмо автору
 
   для: AcidTrash   (25.11.2008 в 12:27)
 

В в строках каждой таблицы разное количество выводимых ячеек. В зависимости от номера.

  Ответить  
 
 автор: Ozz99   (25.11.2008 в 13:12)   письмо автору
 
   для: quest   (25.11.2008 в 12:43)
 

Может кто подскажет решение и мне.
Я вывожу двумя запросами, первые 11 в одну таблицу, следующие 11 в другую. Делаю вот так.

<td width="50%" height="450" align="left" valign="top"><?php
$result4 = mysql_query("SELECT * FROM categories ORDER BY id LIMIT 11",$db);

if (!$result4) {echo "<p>Ошибка на странице. Сообщите администратору <br> Код ошибки:</p>";
exit(mysql_error());
}
if (mysql_num_rows($result4) > 0)
{
$myrov4 = mysql_fetch_array($result4);

do {
printf ("<div id='cool'><a href='catig.php?cat=%s'>%s</a></div>", $myrov4["id"], $myrov4["title"] );
}
while ($myrov4 = mysql_fetch_array($result4));

}
else
{echo "<p>Информация не извлечена. Таблица пуста</p>";
exit();
}
?> </td>
<td width="50%" align="left" valign="top"><?php
$result5 = mysql_query("SELECT * FROM categories ORDER BY id DESC LIMIT 11",$db);

if (!$result5) {echo "<p>Ошибка на странице. Сообщите администратору <br> Код ошибки:</p>";
exit(mysql_error());
}
if (mysql_num_rows($result5) > 0)
{
$myrov5 = mysql_fetch_array($result5);

do {
printf ("<div id='cool'><a href='catig.php?cat=%s'>%s</a></div>", $myrov5["id"], $myrov5["title"] );
}
while ($myrov5 = mysql_fetch_array($result5));

}
else
{echo "<p>Информация не извлечена. Таблица пуста</p>";
exit();
}
?> </td>

Может есть вариант как это сделать одним запросом?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования