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

Форум PHP

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

 

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

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

тема: Опять ошибка - не хватает знака =
 
 автор: Gagus   (14.10.2006 в 18:57)   письмо автору
 
 

Помогите понять где ошибка?
Из книжки (А. Шкрыль)разбираю пример, но никак не могу понять в чем ошибка.
Сначала запускается файл 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
?>

   
 
 автор: LuxeMate   (15.10.2006 в 01:16)   письмо автору
 
   для: 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 в 13:30)   письмо автору
 
   для: LuxeMate   (15.10.2006 в 01:16)
 

Ну,так код работает или нет???
Если интересно - у вас не правильно был написан код:
; вы в некоторых местах забывали ставить этот знак в php коде
<tabler> вроде таблица пишется как <table>
и зачем мучиться со всеми этими $_POST, $_GET, $_SESSION ???
можно ведь сделать так, $name = ($_GET['name']);
и гарантирую что так вы допустите меньше ошибок...
Кстати уберите в моём коде те самые звёздочки которые вы поставили...
Вроде всё =)

   
 
 автор: Gagus   (15.10.2006 в 20:50)   письмо автору
 
   для: 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
Если можно помогите, пожалуйста. Что-то я совсем уже запутался!!! И большое спасибо, за ответ.

   
 
 автор: cheops   (15.10.2006 в 21:22)   письмо автору
 
   для: 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 Такие здоровые листинги лучше прикреплять к сообщению в виде файла.

   
 
 автор: Gagus   (16.10.2006 в 21:22)   письмо автору
 
   для: cheops   (15.10.2006 в 21:22)
 

Стало лучше. Но все еще плохо!!!

   
 
 автор: cheops   (16.10.2006 в 23:15)   письмо автору
 
   для: Gagus   (16.10.2006 в 21:22)
 

Откуда у вас берётся переменная $numrazdel (судя по всему она принимает пустое значение)?

   
 
 автор: Gagus   (18.10.2006 в 14:49)   письмо автору
 
   для: cheops   (16.10.2006 в 23:15)
 

Спасибо!!!. Эту ошибку исправил, но есть еще одна проблема!Помогите !!!

   
 
 автор: cheops   (18.10.2006 в 23:12)   письмо автору
 
   для: Gagus   (18.10.2006 в 14:49)
 

А какой запрос даёт сбой, выведите его в окно бразура, для этого сообщения об ошибках
<?php
  
exit(mysql_error());
?>

исправьте следущим образом
<?php
  
exit(mysql_error()."<br>".$query);
?>

   
 
 автор: Gagus   (19.10.2006 в 22:10)   письмо автору
 
   для: cheops   (18.10.2006 в 23:12)
 

Я как раз и не совсем понимаю какой-запрсос дает сбой.К тому же я так думаю, что у меня вызывается вместо одного файла другой. Нужно удалить сообщение. А в окне форма совсем другая.Что там ввести не понятно. И вот когда заполняю поля в форме и выдается ошибка. Но просто должно быть совсем другая форма , такая же как и при удалении темы форума вместе с сообщениями. Для удаления темы форума все работает нормально. Помогите понять почему это происходит.!!

   
Rambler's Top100
вверх

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