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

Форум PHP

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

 

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

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

тема: второй цикл не рабит :-/
 
 автор: Admexture   (03.04.2010 в 15:04)   письмо автору
 
 

Добрый день

Столкнулся с проблемой. Два цикла for$i и for$j. j вложен в i.

Проблема в том, что for$j выводит лишь одну строчку, оставляя нужное количество пустых строк, без значений. Строки извлекаются из базы данных. Использую Pear DB.

Заранее, спасибо!

Для наглядности, привожу код:

include_once ( "dblib.php" );
$db = get_db( );

$query = "Select * from category";
$result = $db->query($query);

$num_results = $result->numRows();

for ($i=0; $i < $num_results; $i++)
{
    $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
    
    echo '<b>'.$row['category'].'</b><br><br>';
    
    
    $result_bus = $db->query("Select * from buscat where category=?", array ($row['idcategory']));
    
    $row_bus = $result_bus->fetchRow(DB_FETCHMODE_ASSOC);
    
    $result_bus_cat = $db->query("Select * from business where idbusiness=?", array ($row_bus['business']));
    
    $num_results_bus = $result_bus->numRows();
    
    $row_bus_cat = $result_bus_cat->fetchRow(DB_FETCHMODE_ASSOC);
    
    for ($j=0; $j < $num_results_bus; $j++)
    {
        echo $row_bus_cat['business'].'<br>';
    }
    echo '<br><br>';
}

  Ответить  
 
 автор: Рома   (03.04.2010 в 15:28)   письмо автору
 
   для: Admexture   (03.04.2010 в 15:04)
 

[$j] или [$i][$j] где? ни одного похожего места не нашел.

  Ответить  
 
 автор: ADmexture   (03.04.2010 в 15:41)   письмо автору
 
   для: Рома   (03.04.2010 в 15:28)
 

Эмм, может я не так сказал :)

Структура:


for ($i=0; $i < ... ; $i++)
      {
          for($j=0; $j<.....; $j++)
             {
                  //выводит только первую строчку из базы, остальные пустые. но количество строчек нужное.
             }
      }


цикл for ($i=0; $i < ... ; $i++) все выводит хорошо, в отличии от for($j=0; $j<.....; $j++)

=)

  Ответить  
 
 автор: Lao   (03.04.2010 в 15:41)   письмо автору
 
   для: Admexture   (03.04.2010 в 15:04)
 

А где сама функция?
numRows()
Покажи её народу.
Быстрей всего в ней ошибка. А другого быть не может.

  Ответить  
 
 автор: ADmexture   (03.04.2010 в 15:42)   письмо автору
 
   для: Lao   (03.04.2010 в 15:41)
 

Эмм, она уже в DB идет =) ее не трогал, честно :D

  Ответить  
 
 автор: ADmexture   (03.04.2010 в 15:44)   письмо автору
 
   для: Lao   (03.04.2010 в 15:41)
 

Да и потом, она же нормально работает для цикла $i =(

  Ответить  
 
 автор: Lao   (03.04.2010 в 15:47)   письмо автору
 
   для: ADmexture   (03.04.2010 в 15:44)
 

Тогда... смените переменную :) Пробывали?

  Ответить  
 
 автор: ADmexture   (03.04.2010 в 15:48)   письмо автору
 
   для: Lao   (03.04.2010 в 15:47)
 

А какой переменной идет речь? :D

  Ответить  
 
 автор: Lao   (03.04.2010 в 15:52)   письмо автору
 
   для: Admexture   (03.04.2010 в 15:04)
 

Судим логически.

 $num_results_bus = $result_bus->numRows();
    
    $row_bus_cat = $result_bus_cat->fetchRow(DB_FETCHMODE_ASSOC);
    
    for ($j=0; $j < $num_results_bus; $j++)
    {
        echo $row_bus_cat['business'].'<br>';
    } 


Если функция numRows() - работает коректно. Тоесть
echo($result_bus->numRows())

Посмотрите. А потом... Гланем :D

  Ответить  
 
 автор: ADmexture   (03.04.2010 в 16:02)   письмо автору
 
   для: Lao   (03.04.2010 в 15:52)
 

Выводит число соответствующее кол. строк. Все с ней нормально) я ж писал, строчки после первой пустые))))

  Ответить  
 
 автор: Lao   (03.04.2010 в 16:06)   письмо автору
 
   для: Admexture   (03.04.2010 в 15:04)
 

Смените подход:

while($rows=mysql_fetch_object($result_bus_cat)) {

echo( $rows->  // что вы там хотите? ...

};

  Ответить  
 
 автор: ADmexture   (03.04.2010 в 16:18)   письмо автору
 
   для: Lao   (03.04.2010 в 16:06)
 

Ладно, спасибо, будем пробовать ;)) :D

  Ответить  
 
 автор: Lao   (03.04.2010 в 16:23)   письмо автору
 
   для: ADmexture   (03.04.2010 в 16:18)
 

И получится. Упехов!!! :))))

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

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