|
|
|
| Помогите понять где ошибка?
Из книжки (А. Шкрыль)разбираю пример, но никак не могу понять в чем ошибка.
Сначала запускается файл index.php. Проходит авторизация. Получаю сообщение о том, что авторизация прошла успешно, и выводится табличка стемами форума. Темы выводятся как ссылки. Жму на ссылку. В адресной строке в броузере выводится вроде-бы номер выбранного раздела, а в окне сообщение об ошибке в файле текст, которого приведен ниже. Эту строку я выделил звездочками. Бьюсь уже неделю и не могу понять, что не так. Помогите!!! Поставил еще одну команду echo $_GET['show']; тогда выводится значение topic и потом опять эта ошибка. Сообщение об ошибке, что не хватает знака =. Так я понимаю. Но где?
<?php
//Задаем SQL запрос
$sql="SELECT id, kodofrazdel,name,name_creator,
name_last_answer,date_last_answer FROM TOPIC WHERE
kodofrazdel=".$_GET['numrazdel']." ORDER BY date_last_answer";
//Выполняем его
$data=mysql_query($sql);
// задаем SQL-запрос, который вернет имя выбранного
//пользователем раздела
$sql2="SELECT name FROM TOPIC WHERE id=".$_GET['numrazdel'];
//Выполняем его
$data2=mysql_query($sql2);
//получаем результат-одна запись
$line2=mysql_fetch_row(data2);
//Выводим надпись
echo "<big><b>Список тем для";
echo "раздела:".$line2[0]."</b></big><br><br>;
//Кнопка для создания новой темы
?>
<p align='right'>
** <form action="?show=add_topic&numrazdel=<?php echo $_GET['numrazdel'];?>" method="post">
<input type="submit" value="Создать новую тему">
</form>
</p>
<?php
//Выводим заголовок для таблицы
?>
<tabler border=1 cellpadding=3 width=100%>
<tr>
<td width=60%>
Название темы
</td>
<td width=10%>
<font size=2><Автор</font>
</td>
<td width=30%>
<font size=2><Последнее сообщение (Кто|Дата)</font>
</td>
</tr>
</table>
<?php
//Выводим список всех тем для выбранного раздела
while($line=mysql_fetch_row($data))
{
?>
<tabler border=1 cellpadding=20 width=100%>
<tr>
<td width=60%>
<?php
//Это в виде ссылки, она на index.php
//только с паметром message
echo '<a href="?show=message&numtopic='.$line[0].'">'.$line[2].'</a>';
//Если это админ, то он может редактировать название темы
// и удалять ее
if ($_SESSION['role']=='admin')
{
?>
<form action="?show=edit_topic&numtopic=<? echo $line[0]?>"method="post">
<input type="submit" value="Изменить название">
</form>
<form action="?show=del_topic&numtopic=<? echo $line[0]?>"method="post">
<input type="submit" value="Удалить тему">
</form>
<?php
}//end - if
?>
</td>
<td width=10%>
<?php
//Имя создавшего тему
echo $line[3];
?>
</td>
<td width=10%>
<?php
//Имя последнего ответившего
echo $line[4];
?>
</td>
<td width=20%>
<?php
//Дата последнего ответа
echo $line[5];
?>
</td>
</tr>
</table
<?php
}//end - while
?> | |
|
|
|
|
|
|
|
для: Gagus
(14.10.2006 в 18:57)
| | Вопервых для отображения кода есть специальные теги =)))
Вот код:
<?php
//Задаем SQL запрос
$numrazdel = ($_GET['numrazdel']);
$sql = "SELECT id, kodofrazdel, name,name_creator, name_last_answer, date_last_answer FROM topic WHERE kodofrazdel = '$numrazdel' ORDER BY date_last_answer";
//Выполняем его
$data = mysql_query($sql);
// задаем SQL-запрос, который вернет имя выбранного
//пользователем раздела
$sql2 = "SELECT name FROM topic WHERE id='$numrazdel'";
//Выполняем его
$data2 = mysql_query($sql2);
//получаем результат-одна запись
$line2 = mysql_fetch_row($data2);
//Выводим надпись
echo "<big><b>Список тем для раздела:";
echo $line2[0];
echo "</b></big><br><br>";
//Кнопка для создания новой темы
?>
<p align='right'>
** <form action="?show=add_topic&numrazdel=<?php echo $numrazdel; ?>" method="post">
<input type="submit" value="Создать новую тему">
</form>
</p>
<?php
//Выводим заголовок для таблицы
?>
<table border=1 cellpadding=3 width=100%>
<tr>
<td width=60%>
Название темы
</td>
<td width=10%>
<font size=2>Автор</font>
</td>
<td width=30%>
<font size=2>Последнее сообщение (Кто|Дата)</font>
</td>
</tr>
</table>
<?php
//Выводим список всех тем для выбранного раздела
while($line = mysql_fetch_row($data))
{
?>
<table border=1 cellpadding=20 width=100%>
<tr>
<td width=60%>
<?php
//Это в виде ссылки, она на index.php
//только с паметром message
echo '<a href="?show=message&numtopic='.$line[0].'">'.$line[2].'</a>';
//Если это админ, то он может редактировать название темы
// и удалять ее
if ($_SESSION['role'] == 'admin')
{
?>
<form action="?show=edit_topic&numtopic=<? echo $line[0]; ?>"method="post">
<input type="submit" value="Изменить название">
</form>
<form action="?show=del_topic&numtopic=<? echo $line[0]; ?>"method="post">
<input type="submit" value="Удалить тему">
</form>
<?php
}
//end - if
?>
</td>
<td width=10%>
<?php
//Имя создавшего тему
echo $line[3];
?>
</td>
<td width=10%>
<?php
//Имя последнего ответившего
echo $line[4];
?>
</td>
<td width=20%>
<?php
//Дата последнего ответа
echo $line[5];
?>
</td>
</tr>
</table
<?php
}
//end - while
?>
|
Не обещаю что он 100% будет работать,но я исправил пару тройку сотен ошибок,шутка ;)
Я тоже не мастер коды писать но всё же проверьте работаспособность моего кода =))) | |
|
|
|
|
|
|
|
для: LuxeMate
(15.10.2006 в 01:16)
| | Ну,так код работает или нет???
Если интересно - у вас не правильно был написан код:
; вы в некоторых местах забывали ставить этот знак в php коде
<tabler> вроде таблица пишется как <table>
и зачем мучиться со всеми этими $_POST, $_GET, $_SESSION ???
можно ведь сделать так, $name = ($_GET['name']);
и гарантирую что так вы допустите меньше ошибок...
Кстати уберите в моём коде те самые звёздочки которые вы поставили...
Вроде всё =) | |
|
|
|
|
|
|
|
для: LuxeMate
(15.10.2006 в 13:30)
| | Немного полегчало, т.е. ошибка теперь выдается в другой строке. Привожу топять теперь уже ваш код. Строка с ошибкой помечена звездочками.
<?php
//Задаем SQL запрос
$numrazdel = ($_GET['numrazdel']);
$sql = "SELECT id, kodofrazdel, name,name_creator, name_last_answer, date_last_answer FROM topic WHERE kodofrazdel = '$numrazdel' ORDER BY date_last_answer";
//Выполняем его
$data = mysql_query($sql);
// задаем SQL-запрос, который вернет имя выбранного
//пользователем раздела
$sql2 = "SELECT name FROM topic WHERE id='$numrazdel'";
//Выполняем его
$data2 = mysql_query($sql2);
//получаем результат-одна запись
$line2 = mysql_fetch_row($data2);
//Выводим надпись
echo "<big><b>Список тем для раздела:";
echo $line2[0];
echo "</b></big><br><br>";
//Кнопка для создания новой темы
?>
<p align='right'>
<form action="?show=add_topic&numrazdel=<?php echo $numrazdel; ?>" method="post">
<input type="submit" value="Создать новую тему">
</form>
</p>
<?php
//Выводим заголовок для таблицы
?>
<table border=1 cellpadding=3 width=100%>
<tr>
<td width=60%>
Название темы
</td>
<td width=10%>
<font size=2>Автор</font>
</td>
<td width=30%>
<font size=2>Последнее сообщение (Кто|Дата)</font>
</td>
</tr>
</table>
<?php
//Выводим список всех тем для выбранного раздела
** while($line = mysql_fetch_row($data))
{
?>
<table border=1 cellpadding=20 width=100%>
<tr>
<td width=60%>
<?php
//Это в виде ссылки, она на index.php
//только с паметром message
echo '<a href="?show=message&numtopic='.$line[0].'">'.$line[2].'</a>';
//Если это админ, то он может редактировать название темы
// и удалять ее
if ($_SESSION['role'] == 'admin')
{
?>
<form action="?show=edit_topic&numtopic=<? echo $line[0]; ?>"method="post">
<input type="submit" value="Изменить название">
</form>
<form action="?show=del_topic&numtopic=<? echo $line[0]; ?>"method="post">
<input type="submit" value="Удалить тему">
</form>
<?php
}
//end - if
?>
</td>
<td width=10%>
<?php
//Имя создавшего тему
echo $line[3];
?>
</td>
<td width=10%>
<?php
//Имя последнего ответившего
echo $line[4];
?>
</td>
<td width=20%>
<?php
//Дата последнего ответа
echo $line[5];
?>
</td>
</tr>
</table
<?php
}
//end - while
?>
Сообщение об ошибке следующее:Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\Program Files\Apache Group\Apache2\htdocs\forum1.ru\www\SHOW_MODULE\show_topic.php on line 47
Если можно помогите, пожалуйста. Что-то я совсем уже запутался!!! И большое спасибо, за ответ. | |
|
|
|
|
|
|
|
для: Gagus
(15.10.2006 в 20:50)
| | После блоков вида
<?php
// задаем SQL-запрос, который вернет имя выбранного
//пользователем раздела
$sql2 = "SELECT name FROM topic WHERE id='$numrazdel'";
//Выполняем его
$data2 = mysql_query("Ошибка - ".$sql2."<br>Ваш запрос выглядит следующим образом - ".$sql2);
?>
|
В обязательном порядке проверяйте правильность выполнения SQL-запроса
<?php
if(!$data2) exit(mysql_error());
?>
|
PS Такие здоровые листинги лучше прикреплять к сообщению в виде файла. | |
|
|
|
|
|
|
|
для: cheops
(15.10.2006 в 21:22)
| | Стало лучше. Но все еще плохо!!! | |
|
|
|
|
|
|
|
для: Gagus
(16.10.2006 в 21:22)
| | Откуда у вас берётся переменная $numrazdel (судя по всему она принимает пустое значение)? | |
|
|
|
|
|
|
|
для: cheops
(16.10.2006 в 23:15)
| | Спасибо!!!. Эту ошибку исправил, но есть еще одна проблема!Помогите !!! | |
|
|
|
|
|
|
|
для: Gagus
(18.10.2006 в 14:49)
| | А какой запрос даёт сбой, выведите его в окно бразура, для этого сообщения об ошибках
<?php
exit(mysql_error());
?>
|
исправьте следущим образом
<?php
exit(mysql_error()."<br>".$query);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(18.10.2006 в 23:12)
| | Я как раз и не совсем понимаю какой-запрсос дает сбой.К тому же я так думаю, что у меня вызывается вместо одного файла другой. Нужно удалить сообщение. А в окне форма совсем другая.Что там ввести не понятно. И вот когда заполняю поля в форме и выдается ошибка. Но просто должно быть совсем другая форма , такая же как и при удалении темы форума вместе с сообщениями. Для удаления темы форума все работает нормально. Помогите понять почему это происходит.!! | |
|
|
|