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

Форум PHP

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

 

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

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

тема: Проблема с обработчиком.
 
 автор: Antik_   (26.04.2007 в 03:55)   письмо автору
 
 

Написал форму и обработчик, при добавлении идёт ошибка и данные естественно не пишуться в таблицу.
Вот форма

 if(!isset($button)) $button = "Добавить";
  if(!isset($action)) $action = "addprod.php";
   if(!isset($pos))
  {
    $query = "SELECT MAX(pos) FROM product
              WHERE id_catalog=".$_GET['id_parent'];
    $num = mysql_query($query);
    if($num) $pos = mysql_result($num,0) + 1;
  }
?>
<script language="JavaScript" type="text/javascript" src="http://work.5rubley.ru/editor/wysiwyg.js">
</script>
<table border="1"><tr><td>
<p class=boxmenu><a class=menu href="index.php?id_catalog=<? echo $id_catalog?>&id_parent=<? echo $id_parent ?>">Вернуться в администрирование каталога</a></p>
</td></tr></table>

<form action=<?php echo $action?> method=post>
<table border="1">
<tr>
  <td><p class=zag2>Тип</td>
  <td>
    <select class=input type=text name=tip>
     <option value='tip' <?php if($tip == 'tip'   ) echo "selected"?>>Тип объявления
     <option value='serch' <?php if($tip == 'serch') echo "selected"?>>Поиск работы
     <option value='pred_rab' <?php if($tip == 'pred_rab'    ) echo "selected"?>>Предложение работы
     <option value='bay' <?php if($tip == 'bay'     ) echo "selected"?>>Куплю
     <option value='sel' <?php if($tip == 'sel'     ) echo "selected"?>>Продам
      <option value='yslygi' <?php if($tip == 'yslygi' ) echo "selected"?>>Автозаводский
     </select>
  </td>
</tr>
<tr><td><p class=zag2>Заголовок</td><td><input size=61 class=input type=text name=note value='<?php echo $note?>'></td></tr>
  <td><p class=zag2></td>
  <td>

  </td>
</tr>
<tr><td><p class=zag2>цена</td><td><input size=61 class=input type=text name=tcen value='<?php echo $tcen?>'> <select class=input type=text name=cena>
     <option value='tvcen' <?php if($cena=='tvcen') echo "selected"?>>Фиксированная
     <option value='torg' <?php if($cena=='torg') echo "selected"?>>Торг
     <option value='max' <?php if($cena=='max') echo "selected"?>>Максимальная
     <option value='min' <?php if($cena=='min') echo "selected"?>>Минимальная
         </select></td></tr>
<tr><td><p class=zag2>ИМЯ</td><td><input size=61 class=input type=text name=name value='<?php echo $name?>'></td></tr>
<tr><td><p class=zag2>email</td><td><input size=61 class=input type=text name=email value='<?php echo $email?>'></td></tr>
<tr><td><p class=zag2>Телефон</td><td><input size=61 class=input type=text name=tel value='<?php echo $tel?>'></td></tr>
<tr><td><p class=zag2>Страна</td><td><input size=61 class=input name=strana value='<?php echo $strana?>'></td></tr>
<tr><td><tr><td><p class=zag2>Город</td><td><input class=input type=text name=gorod value='<?php echo $gorod?>'></td></tr>
<tr><td><p class=zag2>Позиция</td><td><input class=input type=text name=pos value='<?php echo $pos?>'></td></tr>
<tr><td><tr><td><p class=zag2>Сообщение</td><td><textarea class=input type=text id=text name=post><?php echo $post?></textarea>
<script language="javascript1.2">
  generate_wysiwyg('text');
</script>
</td></tr>

<tr><td></td><td><input class=button id=button type=submit value=<?php echo $button?>></td></tr>
<input type=hidden name=id_catalog value=<?php echo $_GET['id_catalog']; ?>>
<input type=hidden name=id_product value=<?php echo $_GET['id_product']; ?>>
</table>
</form>


Вот обработчик.
  if(!isset($_POST['name'])) links($_POST['id_catalog'], "Не указанно имя)");
  if(!isset($_POST['email'])) links($_POST['id_catalog'], "Не указан email");
  if(!isset($_POST['tel'])) links($_POST['id_catalog'], "Не указан телефон");
  if(!isset($_POST['strana'])) links($_POST['id_catalog'], "Не введена страна");
  if(!isset($_POST['gorod'])) links($_POST['id_catalog'], "Не введена общая цена");
  if(!isset($_POST['note'])) links($_POST['id_catalog'], "Не введен заголовок");


  // Заменяем одинарные кавычки
  $_POST['note'] = str_replace("'","`",$_POST['note']);
  $_POST['name'] = str_replace("'","`",$_POST['name']);
   $_POST['email'] = str_replace("'","`",$_POST['email']);
  $_POST['tel'] = str_replace("'","`",$_POST['tel']);
    $_POST['strana'] = str_replace("'","`",$_POST['strana']);
  $_POST['gorod'] = str_replace("'","`",$_POST['gorod']);


  $query = "INSERT INTO obiev VALUES (
            NULL,
            '".$_POST['post']."',
            '".$_POST['note']."',
            '".$_POST['tips']."',
             '".$_POST['email']."',
            '".$_POST['name']."',
            '".$_POST['tel']."',
            '".$_POST['cena']."',
            '".$_POST['tcen'].",
            '".$_POST['strana']."',
            '".$_POST['gorod']."',
            ".$_POST['pos'].",
            ".$_POST['id_catalog'].")";
  if(mysql_query($query)) {
    echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent=".$_POST['id_catalog']."'>
          </HEAD></HTML>";

  } else puterror("Ошибка при добавлении продукции");
  function links($id_catalog,$msg)
  {
    echo "<p>".$msg."</p>";
    echo "<p><a href=# onClick='history.back()'>Вернуться к правке продукта</a></p>";
    echo "<p><a href=index.php?id_parent=$id_catalog>Администрирование каталога продукции</a></p>";
    exit();
  }


Люди помагите, я уже 2 день сижу.
На всякий случай выдержка из мускула.

  `id_product` int(11) NOT NULL auto_increment,
  `post` tinytext NOT NULL,
  `note` tinytext NOT NULL,
  `tips` enum('tip','serch','bay','sel','yslygi','pred_rab') NOT NULL default 'tip',
  `email` tinytext NOT NULL,
  `name` tinytext NOT NULL,
  `tel` tinytext NOT NULL,
  `cena` enum('tvcen','torg','max','min') NOT NULL default 'tvcen',
  `tcen` tinytext NOT NULL,
  `strana` tinytext NOT NULL,
  `gorod` tinytext NOT NULL,
  `pos` int(11) NOT NULL default '0',
  `id_catalog` int(8) NOT NULL default '0',
  PRIMARY KEY  (`id_product`),
  KEY `id_catalog` (`id_catalog`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

   
 
 автор: Trianon   (26.04.2007 в 10:01)   письмо автору
 
   для: Antik_   (26.04.2007 в 03:55)
 

поставьте временно вместо puterror("Ошибка при добавлении продукции");


puterror("Ошибка при добавлении продукции"."<br>Запрос:<pre>\r\n$query\r\n".mysql_error()."</pre>"); 

   
 
 автор: zerocool   (26.04.2007 в 10:18)   письмо автору
 
   для: Antik_   (26.04.2007 в 03:55)
 

А если попробывать так:

$query = "INSERT INTO obiev(post,note,tips,email,name,tel,cena,tcen,strana,gorod,pos,id_catalog) VALUES (
            '".$_POST['post']."',
            '".$_POST['note']."',
            '".$_POST['tips']."',
            '".$_POST['email']."',
            '".$_POST['name']."',
            '".$_POST['tel']."',
            '".$_POST['cena']."',
            '".$_POST['tcen'].",
            '".$_POST['strana']."',
            '".$_POST['gorod']."',
            ".$_POST['pos'].",
            ".$_POST['id_catalog'].")";

   
 
 автор: Antik_   (26.04.2007 в 10:36)   письмо автору
 
   для: zerocool   (26.04.2007 в 10:18)
 

Попробывал всё вместе.Но не понел ошибки всеравно.
Вот то что вывело

Ошибка при добавлении продукции
Запрос:

INSERT INTO obiev(post,note,tips,email,name,tel,cena,tcen,strana,gorod,pos,id_catalog) VALUES (
            'qwer',
            '4',
            'serch',
            'hamerland@mail.ru',
            '5',
            '7',
            'torg',
            '4,
            '4',
            '4',
            10,
            3)
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 '4',
            '4',
            10,
            3)' at line 

   
 
 автор: Trianon   (26.04.2007 в 10:38)   письмо автору
 
   для: Antik_   (26.04.2007 в 10:36)
 

У Вас после второй четверки апостроф не закрыт.

Не надо пробовать всё вместе. Вы не коктейль мешаете и не салат "оливье".

   
 
 автор: Antik_   (26.04.2007 в 10:46)   письмо автору
 
   для: Trianon   (26.04.2007 в 10:38)
 

Пасиба заработало.
гм следом вопрос.
Есть страница, в ней

$query = "SELECT * FROM artpage";
        if($pgs = mysql_query($query))
        {
          while(list($id_page,$part)=mysql_fetch_array($pgs, MYSQL_NUM))
          {
            echo "<li><a href=index.php?id_page=$id_page>$part</a></li>&nbsp;&nbsp;<a href=deletart.php?id_page=$id_page>удалить</a>
            <a href=editpartform.php?id_page=$id_page>Изменить</a>";
          }
        } else puterror("Ошибка при обращении к блоку статей");

Удоление происходит нормально но вот редактирование нет.
Почему то $id_page пропускаеться

 if(empty($_POST['name'])) links("Введите название раздела.");

  $name = str_replace("'","`",$_POST['name']);

  $query = "UPDATE artpage SET
                        name='$name'

            WHERE id_artpage=$id_page";
  if(mysql_query($query))
  {
    // В случае успешного добавления переходим на главную страницу
    // системы администрирования
    echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
          </HEAD></HTML>";
  }
  else puterror("Ошибка при добавлении продукции"."<br>Запрос:<pre>\r\n$query\r\n".mysql_error()."</pre>");




Выводит вот такую бяку.

UPDATE artpage SET
                        name='н'

            WHERE id_artpage=
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 4


   
 
 автор: Trianon   (26.04.2007 в 10:50)   письмо автору
 
   для: Antik_   (26.04.2007 в 10:46)
 

Вы нигде не присваиваете переменной $id_page никакого значения. Поэтому и пропускается.

   
 
 автор: Antik_   (26.04.2007 в 11:03)   письмо автору
 
   для: Trianon   (26.04.2007 в 10:50)
 

НО при удолении ведь тоже тогда не должно присваиваться, а удоляет же.Тогда вопрос, как её присвоить...

   
 
 автор: Trianon   (26.04.2007 в 11:08)   письмо автору
 
   для: Antik_   (26.04.2007 в 11:03)
 

Это не аргумент. Вероятно у Вас включен register_globals. Выключите - пропадет и удаление.
Чтобы ответить на вопрос, нужно смотреть код, который выводит форму редактирования и ссылки удаления. Кстати, код удаления Вы не привели. Какой был смысл на него ссылаться?

   
 
 автор: zerocool   (26.04.2007 в 11:09)   письмо автору
 
   для: Antik_   (26.04.2007 в 11:03)
 

А приведите код удаления и сам скрипт который открывается при клике на ссылку ИЗМЕНИТЬ

   
 
 автор: Antik_   (26.04.2007 в 11:11)   письмо автору
 
   для: zerocool   (26.04.2007 в 11:09)
 

Код удаления

  $query = "DELETE FROM artpage WHERE id_artpage=$id_page";
  if(mysql_query($query))
  {

    echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
          </HEAD></HTML>";
  } else puterror("Ошибка при удолении");

Код редактирование

  require_once("../config.php");
  if(!isset($_GET['button'])) $_GET['button'] = "Изменить";
  if(!isset($_GET['title'])) $_GET['title'] = "Изменение раздела.";
  if(!isset($_GET['action'])) $_GET['action'] = "editart.php";


?>
<p><a class=menu href="javascript: history.back()">Назад</a></p>

<form action=<?php echo $_GET['action']; ?> method=post>
  <table>
    <tr>
        <td width="110"><p class=zag2>Название</td>
        <td><input class=input type="text" name="name" size="40" maxlength="140" value="<?php echo $_GET['name']; ?>"></td>
    </tr>
    <tr>
        <td></td>
        <td><input class=button type="submit" value=<?php echo $_GET['button']; ?>></td>
    </tr>
  </table>
</form>


Обработчик

   if(empty($_POST['name'])) links("Введите название раздела.");

  $name = str_replace("'","`",$_POST['name']);

  $query = "UPDATE artpage SET name='$name' WHERE id_artpage=$id_page";
  if(mysql_query($query))
  {
    // В случае успешного добавления переходим на главную страницу
    // системы администрирования
    echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
          </HEAD></HTML>";
  }
  else puterror("Ошибка при добавлении продукции"."<br>Запрос:<pre>\r\n$query\r\n".mysql_error()."</pre>");

   
 
 автор: zerocool   (26.04.2007 в 11:18)   письмо автору
 
   для: Antik_   (26.04.2007 в 11:11)
 

А где у вас в форме редактирования записана переменная $id_page ?
Наверно в форму надо добавить

<input type=hidden name=id_page value="<?php echo $_GET['id_page']; ?>">
И в обработчике :

$query = "UPDATE artpage SET name='$name' WHERE id_artpage='$_POST[id_page]'"; 

   
 
 автор: Antik_   (26.04.2007 в 11:23)   письмо автору
 
   для: zerocool   (26.04.2007 в 11:18)
 

ПАсиба с меня Пиво, при встрече)))
Вообще то приводил

$query = "SELECT * FROM artpage"; 
        if($pgs = mysql_query($query)) 
        { 
          while(list($id_page,$part)=mysql_fetch_array($pgs, MYSQL_NUM)) 
          { 
            echo "<li><a href=index.php?id_page=$id_page>$part</a></li>&nbsp;&nbsp;<a href=deletart.php?id_page=$id_page>удалить</a> 
            <a href=editpartform.php?id_page=$id_page>Изменить</a>"; 
          } 
        } else puterror("Ошибка при обращении к блоку статей"); 

   
 
 автор: Trianon   (26.04.2007 в 11:21)   письмо автору
 
   для: Antik_   (26.04.2007 в 11:11)
 

Из этого кода неясно, какую именно artpage Вы собираетесь менять.
В форму этот параметр не передается вообще.

Код, который строит ссылки на удаление, тоже не виден.

   
Rambler's Top100
вверх

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