Категории

[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>&nbsp&nbsp&nbsp
              <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 много раз запускать. можно один раз в переменную сохранить кол. значений и уже в цикле использовать переменную, а не функцию


Источник



Copyright ShopOS