Категории
[FAQ] Часто задаваемые вопросы и ответы
Проблемы и решения
Ошибки и исправления
Общие вопросы
Расширения
Установка и обновление
Модули
Шаблоны
Локализация интерфейса
Коммерческие предложения
Учимся бизнесу
Бизнес книги
Поисковая оптимизация (SEO)
Магазины на ShopOS
Хостинг для ShopOS
Предложения и пожелания
Курилка
|
Мой движок
Решил ВНЕЗАПНО написать движочек для сервиса, с защитой пока не разбирался, сейчас лиж бы пока работало. В общем суть, тестировал на своем хостинге, все ок, залил на другой хостинг, и вот там-то вылезли траблы. в общем суть, есть 3 страницы, одна из основной админки, вторая - редактирования, 3 - удаления.
Их коды соответственно: <? session_start (); if (!$_SESSION['admin']) die ( Запрещено ); @$ok=$HTTP_POST_VARS; require_once("../connect.php"); $sql1="SELECT * FROM `main`"; $r1=mysql_query($sql1); $k=1; for($i=0;$i<mysql_num_rows($r1);$i++) { $a1=mysql_fetch_array($r1); @$templates=$a1; @$menu=$a1; @$content=$a1; @$page=$a1; @$pageclass=$a1; @$link=$a1; } $sql2="SELECT * FROM `news`"; $r2=mysql_query($sql2); if(isset($ok)) { @$title=$HTTP_POST_VARS; @$about=$HTTP_POST_VARS; @$art=$HTTP_POST_VARS; @$date=$HTTP_POST_VARS; @$url=$HTTP_POST_VARS; @$pict=$HTTP_POST_VARS; @$pict2=$HTTP_POST_VARS; @$pict3=$HTTP_POST_VARS; for($i=0;$i<mysql_num_rows($r2);$i++) $a2=mysql_fetch_array($r2); $id=$a2+1; $add="INSERT INTO `news`(`id`,`title`,`pict`,`pict2`,`pict3`,`about`,`art`,`date`,`url`) VALUES('".$id."','".$title."','".$pict."','".$pict2."','".$pict3."','".$about."','".$art."','".$date."','".$url."')"; $r5=mysql_query($add); echo "<script type=\"text/javascript\">alert(\"Сообщение добавлено\");</script> \n" ."<META http-equiv=\"refresh\" content=\"0; url=admin_main.php\">"; exit; } $sql2="SELECT * FROM `news` ORDER BY `date` DESC"; $r2=mysql_query($sql2); for($i=0;$i<mysql_num_rows($r2);$i++) { $a2=mysql_fetch_array($r2); @$content.="<table border=0 cellpadding=5> <tr><td><center><font size=+1>".$a2."</font></center></td></tr> <tr><td><img align=left hspace=4 vspace=4 src=/images/".$a2.">".$a2."</td></tr> <tr><td><a href=../art.php?id=".$a2."><center>Читать полностью</center></a></td></tr> <tr><td align=right>".$a2."</td></tr> <tr><td><a href=admin_edit.php?id=".$a2.">Редактировать</a>    <a href=admin_del.php?id=".$a2.">Удалить</a></td></tr> </table></center><br><hr width=50%><br>"; } $content.="<center><br><font size=+1>Добавить новую запись</font><br><br></b> <form action=admin_main.php method=post> <table border=0 width=30%><tr><td align=right valign=top>Заголовок:</td> <td><textarea name=title rows=1 cols=100></textarea></td></tr> <tr><td align=right valign=top>Краткое описание:</td> <td><textarea name=about rows=4 cols=100></textarea></td></tr> <tr><td align=right valign=top>Текст:</td> <td><textarea name=art rows=40 cols=100></textarea></td></tr> <tr><td align=right valign=top>Дата:</td> <td><input type=text name=date></td></tr> <tr><td align=right valign=top>Источник:</td> <td><input type=text name=url size=100></td></tr> <tr><td align=right valign=top>Мини-картинка:</td> <td><input type=text name=pict size=100></td></tr> <tr><td align=right valign=top>Картинка2:</td> <td><input type=text name=pict2 size=100></td></tr> <tr><td align=right valign=top>Картинка3:</td> <td><input type=text name=pict3 size=100></td></tr></table> <br><input type=submit name=ok style=width:100px></form></center"; require_once("../template.php"); $template=$templates; if($pageclass=="doc") $pageclass="sdoc"; else if($pageclass=="docs") $pageclass="sdocs"; require_once("../Templates/".$template."/index.php"); ?>
<? session_start (); if (!$_SESSION['admin']) die ( Запрещено ); require_once("../connect.php"); $sql1="SELECT * FROM `main`"; $r1=mysql_query($sql1); $k=1; for($i=0;$i<mysql_num_rows($r1);$i++) { $a1=mysql_fetch_array($r1); @$templates=$a1; @$menu=$a1; @$content=$a1; @$page=$a1; @$pageclass=$a1; @$link=$a1; } @$ok=$HTTP_POST_VARS; $sql2="SELECT * FROM `news`"; $r2=mysql_query($sql2); if (isset($ok)) { @$id=$HTTP_POST_VARS; @$title=$HTTP_POST_VARS; @$pict=$HTTP_POST_VARS; @$pict2=$HTTP_POST_VARS; @$pict3=$HTTP_POST_VARS; @$about=$HTTP_POST_VARS; @$art=$HTTP_POST_VARS; @$date=$HTTP_POST_VARS; @$url=$HTTP_POST_VARS; $sql5="UPDATE `news` SET `title`='".$title."', `pict`='".$pict."', `pict2`='".$pict2."', `pict3`='".$pict3."', `about`='".$about."', `art`='".$art."',`date`='".$date."', `url`='".$url."' WHERE `id` =".$id; $r5=mysql_query($sql5); echo "<script type=\"text/javascript\">alert(\"Запись отредактирована\");</script> \n" ."<META http-equiv=\"refresh\" content=\"0; url=admin_main.php\">"; } else { @$id=$HTTP_GET_VARS; $sql6="SELECT * FROM `news` WHERE `id`=".$id; $r6=mysql_query($sql6); $a=mysql_fetch_array($r6); $content.="<center><form action=admin_edit.php method=post> <table><tr><td align= right valign=top><input type=hidden name=id value=".$id."> Заголовок:</td> <td><textarea name=title rows=1 cols=100>".$a."</textarea></td></tr> <tr><td align= right valign=top>Краткое описание:</td> <td><textarea name=about rows=4 cols=100>".$a."</textarea></td></tr> <tr><td align= right valign=top>Текст:</td> <td><textarea name=art rows=40 cols=100>".$a."</textarea></td></tr> <tr><td align= right valign=top>Дата:</td> <td><input type=text name=date value=".$a."></td></tr> <tr><td align= right valign=top>Источник:</td> <td><input type=text name=url size=100 value=".$a."></td></tr> <tr><td align= right valign=top>Картинка:</td> <td><input type=text name=pict size=100 value=".$a."></td></tr> <tr><td align= right valign=top>Картинка2:</td> <td><input type=text name=pict2 size=100 value=".$a."></td></tr> <tr><td align= right valign=top>Картинка3:</td> <td><input type=text name=pict3 size=100 value=".$a."></td></tr></table> <br><input type=submit name=ok style=width:100px></form></center"; } require_once("../template.php"); $template=$templates; if($pageclass=="doc") $pageclass="sdoc"; else if($pageclass=="docs") $pageclass="sdocs"; require_once("../Templates/Wheemplay/index.php"); ?>
<? session_start (); if (!$_SESSION['admin']) die ( Запрещено ); require_once("../connect.php"); $id=$HTTP_GET_VARS; $sql2="SELECT * FROM `news`"; $r2=mysql_query($sql2); $sql3="DELETE FROM `news` WHERE `id`=".$id; $r3=mysql_query($sql3); echo "<script type=\"text/javascript\">alert(\"Запись удалена\");</script> \n" ."<META http-equiv=\"refresh\" content=\"0; url=admin_main.php\">"; ?>
ошибка следующая:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /*blablabla*/admin_edit.php on line 48 Погуглил на эту тему, собака перед переменной не помогает, проверка на существование таблиц делал, все ок, на главной же выводятся новости. И так всегда, при редактировании, удалении по айди, даже новость нельзя добавить, есть какая-нибудь профилактика, что можно сделать?
собака тут причем да еще и перед переменно? ее вообще лучше не использовать. файлы хотя бы описали. привели коды не понятно откуда
Если вы видете сообщение об ошибке Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in - это означает, что вы не обработали возможные ошибки обработки SQL-запроса, такая ошибка возникла и функциия mysql_query() вернула false вместо дескриптора результирующей таблицы. Далее скрипт передаёт false функции mysql_fetch_array(), на что она естественно огрызается. Следует обработать возможные ошибки для всех функций mysql_query(). источник _http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=49315&page=30
1) файл admin_main.php - главная страница админки, показывает новости, и ссылки на редактирование или удаление, внизу есть так же форма добавления новости 2) admin_edit.php редактирует новость по заданному айди 3) admin_del.php удаляет новость по заданному айли
На счет ошибки понял, посмотрим
Посмотрел по ссылке, если честно, то не понял, как обработать
В обещем понял че там и как, вывело это:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /admin_edit.php on line 48 Error - 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 '' at line 1 SELECT * FROM `news` WHERE `id`=
Не понимаю, что ему в этом не нравится $sql6="SELECT * FROM `news` WHERE `id`=".$id; - возвращает как бы ложь, но почему?
сделай там echo 'Это ID '.$_GET['id'];
и посмотри, получает ли id вообще
у тебя в запросе видно, что ID пусто - SELECT * FROM `news` WHERE `id`=ТУТ ДОЛЖЕН БЫТЬ ID
да и вместо HTTP_GET_VARS можно $_GET вместо HTTP_POST_VARS просто $_POST
у меня запрос проходит нормально $id = $_GET['id']; $sql6 = mysql_query('SELECT * FROM news WHERE id='.$id.''); $a=mysql_fetch_array($sql6 );
с ковычками попутал, айди приходит, но, когда я нажимаю на ссылку редактирования, после выполнения поля все-равно остаются пустыми версия mysql 5.1.x, раньше все ок работало на 5.0.x. вывод ошибок нечего не дает, нет ни единой ошибки
В обещем понял че там и как, вывело это: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /admin_edit.php on line 48 Error - 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 '' at line 1 SELECT * FROM `news` WHERE `id`=
Не понимаю, что ему в этом не нравится $sql6="SELECT * FROM `news` WHERE `id`=".$id; - возвращает как бы ложь, но почему?
да не в запросе дело.
видимо между строчками
$sql = mysql_query(запрос); и
$a=mysql_fetch_array($sql );
у вас где то очищается переменная $sql
трудно в вашем коде разбираться
зачем например использовать $HTTP_POST_VARS; если есть $_POST['ok'] и зачем собаками все ошибки глушить
можно же проверять. присланы ли нужные данные например через isset
вот такой код
for($i=0;$i<mysql_num_rows($r1);$i++)
лучше не делать. зачем функцию mysql_num_rows много раз запускать. можно один раз в переменную сохранить кол. значений и уже в цикле использовать переменную, а не функцию
Источник
|