Forum Webscript.Ru
Программирование => PHP => Тема начата: alex2008 от 22 Марта 2005, 14:33:05
-
Есть таблица с сообщениями форума, каждая строка имеет уникальный индекс - 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 "
".$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);
//закроем соединение с базой данных
mysql_close($conn);
-
Сделай error репорт, и все сразу станет ясно.
Вот этой строке: $result1 = mysql_query($query1) ;
добавь or die("mysql_error()")
и здесь
$num_results1 = mysql_num_rows ($result1) ;
И ты увидишь свою ошибку.
-
Как вывести ошибки я знаю, выводит
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."\')";
но здесь ошибки нет
-
$dbtable не видна в функции
если бы ты вывел запрос для отладки, - ты бы увидел это
-
Блин, точно, работает, только почему-то выводит одну тему до конца ветвления, а остальное не выводит, буду разбираться. Спасибо
-
[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 Степан ответ на ответ ответа
т.е. одну ветку до последнего сообщения, а остальные нет, где-то нужно поставить цикл не пойму где
-
Наверно вначале функции получив предварительно число тем форума?