Автор Тема: в чем ошибка (рекурсивные функции)?  (Прочитано 4461 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн alex2008

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Есть таблица с сообщениями форума, каждая строка имеет уникальный индекс  - id и  ссылку на id строки, на которую является ответом - id_m, соответственно если id_m=0 то это основная тема, которая может ветвиться дальше. В данном скрипте я пытаюсь вывести дерево сообщений, правда я еще не учел отступы, но это не столь важно, главное вывести что есть. Трабл: выдается ошибка: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\\www\\forum1.phtml on line 32

Может кто поможет?


$conn 
mysql_connect ($dbhost$database_user_name$database_password)or die ("");
$dbtable=\'forum\';
mysql_select_db ($database_name,$conn);

function print_array($id_stroki)
{
 static $count;
 $count = (isset($count)) ? ++$count : 0;
 if ($count > 10) { echo "Достигнута максимальная глубина погружения!"; $count--; return; }


 $query1  = "select * from ".$dbtable." where (id_m=\'".$id_stroki."\')";
 $result1 = mysql_query($query1) ;
 $num_results1 = mysql_num_rows ($result1) ;

 while($num_results1>0)
     {
     $row1 = mysql_fetch_array($result1);
     $dv=trim(stripslashes($row1["dt"]));
     $dv=substr($dv,6,2)."-".substr($dv,4,2)."-".substr($dv,0,4)."   ".substr($dv,8,2).":".substr($dv,10,2);
     echo "
<font size=\'-1\' color=\'#000000\'>".$dv."</font>&nbsp";
     $pochta=trim(stripslashes($row1["email"]));
     $pochta="<a href=\'mailto:".$pochta."\'>".stripslashes($row1["author"])."</a>";
     echo $pochta."&nbsp";
     echo "<font size=\'-1\' color=\'#000000\'><b>".stripslashes($row1["title"])."</b></font>&nbsp
";
     $num_results1=$num_results1-1;


     print_array(trim(stripslashes($row1["id"])));
     }
 $count--;
}

print_array(0);

//закроем соединение с базой данных
mysql_close($conn);



Оффлайн Lutik

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 184
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.galiongroup.ru
в чем ошибка (рекурсивные функции)?
« Ответ #1 : 22 Марта 2005, 14:59:21 »
Сделай error репорт, и все сразу станет ясно.
Вот этой строке: $result1 = mysql_query($query1) ;

добавь or die("mysql_error()")
и здесь
$num_results1 = mysql_num_rows ($result1) ;
И ты увидишь свою ошибку.
Разум когда-нибудь победит

Оффлайн alex2008

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
в чем ошибка (рекурсивные функции)?
« Ответ #2 : 22 Марта 2005, 15:51:46 »
Как вывести ошибки я знаю, выводит
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near \'where (id_m=\'0\')\' at line 1

т.е в этой строке
$query1  = "select * from ".$dbtable." where (id_m=\'".$id_stroki."\')";

но здесь ошибки нет

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
в чем ошибка (рекурсивные функции)?
« Ответ #3 : 22 Марта 2005, 16:00:18 »
$dbtable не видна в функции
если бы ты вывел запрос для отладки, - ты бы увидел это

Оффлайн alex2008

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
в чем ошибка (рекурсивные функции)?
« Ответ #4 : 22 Марта 2005, 16:04:59 »
Блин, точно, работает, только почему-то выводит одну тему до конца ветвления, а остальное не выводит, буду разбираться. Спасибо

Оффлайн alex2008

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
в чем ошибка (рекурсивные функции)?
« Ответ #5 : 22 Марта 2005, 17:08:23 »
[PHP]
function print_array($id_stroki)
{
 static $count;
 $count = (isset($count)) ? ++$count : 0;

 if ($count > 100) { echo "Äîñòèãíóòà ìàêñèìàëüíàÿ ãëóáèíà ïîãðóæåíèÿ!"; $count--; return; }

 $query1  = "select * from forum where (id_m=\'".$id_stroki."\')";
 $result1 = mysql_query($query1)or die(mysql_error()) ;
 $num_results1 = mysql_num_rows ($result1) or die(mysql_error()) ;

 while($num_results1>0)
     {
     $row1 = mysql_fetch_array($result1);

     $otstup="";
     for ($i = 1; $i <= $count; $i++) {  $otstup=$otstup."          ";  };

     $dv=trim(stripslashes($row1["dt"]));
     $dv=substr($dv,6,2)."-".substr($dv,4,2)."-".substr($dv,0,4)."   ".substr($dv,8,2).":".substr($dv,10,2);
     echo "
".$otstup."¤  ".$dv." ";
     $pochta=trim(stripslashes($row1["email"]));
     $pochta="".stripslashes($row1["author"])."";
     echo $pochta." ";
     echo "".stripslashes($row1["title"])." 
";
     $num_results1=$num_results1-1;


     print_array(trim(stripslashes($row1["id"])));
     }
 $count--;
}

print_array(0);
[PHP]

следующий кусок кода выводит вот это:

¤  16-03-2005 15:45 Алексей Проверка добавления сообщения

          ¤  16-03-2005 16:23 Вован Ответ на тестовое сообщение

                    ¤  16-03-2005 16:32 Санек ответ на ответ на тестовое сообщение

                              ¤  16-03-2005 16:33 Степан ответ на ответ ответа


т.е. одну ветку до последнего сообщения, а остальные нет, где-то нужно поставить цикл не пойму где

Оффлайн Lutik

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 184
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.galiongroup.ru
в чем ошибка (рекурсивные функции)?
« Ответ #6 : 23 Марта 2005, 11:39:22 »
Наверно вначале функции получив предварительно число тем форума?
Разум когда-нибудь победит

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28