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

Форум MySQL

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

 

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

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

тема: Каталог продукции
 
 автор: sata   (21.03.2005 в 19:11)   письмо автору
 
 

Извините что буду тут кодом спамить но я можно сказать тока начал познавать пхп. Вопрос в следующем читаю тут вашу книжку попутно эксперементирую с кодом
Каталога продукции но появилась загвоздка в решении которой я зашёл в тупик.
Скрипт добавляющий продукцию в базу mysql/ Суть проблемы заключается в том, что при заполнении формы и нажатии на "добавить" по идее должен добавить в базу,а на практике выводит error "Ошибка при добавлении продукции". Я сижу и ничего непонимаю. Мозги кипят вроде всё правильно а нифига неработает.

<?php 
  
require_once("../config.php");

  if(
$title == ""$titlepage=$title "Добавление ";
  include 
"../util/topadmin.php";  
  if(!isset(
$button)) $button "Добавить";
  if(!isset(
$action)) $action "addprod.php";
  if(!isset(
$showhide)) $showhide "checked";
  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;
  }
?>
<table><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>
<tr><td><p class=zag2>Модель</td><td><input size=61 class=input type=text name=model value='<?php echo $model?>'></td></tr>
<tr><td><p class=zag2>Цена</td><td><input size=61 class=input type=text name=price value='<?php echo $price?>'></td></tr>
<tr>
  <td><p class=zag2>Валюта</td>
  <td>
    <select class=input type=text name=currency>
     <option value='RUR' <?php if($currency == 'RUR') echo "selected"?>>RUR
     <option value='USD' <?php if($currency == 'USD') echo "selected"?>>USD
    </select>
  </td>
</tr>
<tr><td><p class=zag2>Состояние</td><td><input size=61 class=input type=text name=sostoynie value='<?php echo $sostoynie?>'></td></tr>
<tr><td><p class=zag2>Наличие</td><td><input size=61 class=input type=text name=nalichie value='<?php echo $nalichie?>'></td></tr>
<tr><td><p class=zag2>Двигатель</td><td><input size=61 class=input type=text name=dvigatel value='<?php echo $dvigatel?>'></td></tr>
<tr><td><p class=zag2>КПП</td><td><input size=61 class=input type=text name=kpp value='<?php echo $kpp?>'></td></tr>
<tr><td><p class=zag2>Привод</td><td><input size=61 class=input type=text name=privod value='<?php echo $privod?>'></td></tr>
<tr><td><p class=zag2>Информация</td><td><textarea class=input name=info><?php echo $info?></textarea></td></tr>
<tr><td><p class=zag2>Позиция</td><td><input class=input type=text name=pos value='<?php echo $pos?>'></td></tr>
<tr><td><p class=zag2>Отображать</td><td><input type=checkbox name=hide <?php echo $showhide?>></td></tr>
<tr><td></td><td><input class=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>
<?php
  
include "../util/bottomadmin.php";  
?>

Файл addprod.php
<?php
  
require_once("../config.php");
  if(!isset(
$_POST['model'])) links($_POST['id_catalog'], "Отсутствует модель");
  if(
$_POST['hide'] == "on"$showhide 'show';
  else 
$showhide 'hide';
  
$query "INSERT INTO product VALUES (
            NULL,
            '"
.$_POST['model']."',
            '"
.$_POST['price']."',
             '"
.$_POST['model']."',
             '"
.$_POST['price']."',
             '"
.$_POST['currency']."',
            '"
.$_POST['sostoynie']."',
            '"
.$_POST['nalichie']."',
            '"
.$_POST['dvigatel']."',
            '"
.$_POST['kpp']."',
            '"
.$_POST['privod']."',
            '"
.$_POST['info']."',
            '
$showhide',
            "
.$_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();
  }
?>

создание базы

CREATE TABLE 'product' (
  'id_product' int(11) NOT NULL auto_increment,
  'model' text NOT NULL,
  'price' int(10) NOT NULL default '0',
  'currency' enum('RUR','USD') NOT NULL default 'USD',
  'sostoynie' text NOT NULL,
  'nalichie' text NOT NULL,
  'dvigatel' text NOT NULL,
  'kpp' text NOT NULL,
  'privod' text NOT NULL,
  'info' text NOT NULL,
  'hide' enum('show','hide') NOT NULL default 'show',
  'pos' int(11) NOT NULL default '0',
  'id_catalog' int(8) NOT NULL default '0',
  PRIMARY KEY  ('id_product'),
  KEY 'id_catalog' ('id_catalog')
) TYPE=MyISAM;

   
 
 автор: Valeri   (21.03.2005 в 20:18)   письмо автору
 
   для: sata   (21.03.2005 в 19:11)
 

1. пиши не так <?php echo $sostoynie; ?>, а просто <?=$sostoynie?>, гораздо проще читается а и писанины меньше.
2. не понятно зачем ты в форме отправляешь <input type=hidden name=id_product value=<?php echo $_GET['id_product']; ?>> если у тебя она auto_increment, так же к чему все эти value, другое дело если это форма для редактирования записи или если при ошибки возврат на форму и и что бы были видны те данные которые забивались, но что то такого я тут не наблюдаю.
3. что-то ты мне каца напутал с кавычками в функции записи в базу.
конечно каждому свое, но лично я предпочитаю переводить приходящие переменные в такое состояние
$model = $_POST['model'];
и уже в базу заносить '$model', легче искать ошибку в случай чего.
ну и попробуй вывести на экран все переменные которые приходят для базы, вполне возможно что-то теряется.
4. если как пишите вы то вроде не надо ставить одинарные кавычки и последняя переменая пишется так ".$_POST['id_catalog'])";

   
 
 автор: Akira   (21.03.2005 в 20:43)   письмо автору
 
   для: Valeri   (21.03.2005 в 20:18)
 

>1. пиши не так &lt;?php echo $sostoynie; ?&gt;, а просто
>&lt;?=$sostoynie?&gt;, гораздо проще читается а и писанины
>меньше.
Проще? Кому? мне нет =) Я об этом не знал =)) Тут я не согласен =)

   
 
 автор: sata   (21.03.2005 в 21:25)   письмо автору
 
   для: Valeri   (21.03.2005 в 20:18)
 

Cпасибо за ответы я уже сам разобрался с кавычками напутался надо было
И ещё вопросик чего то я непонял с
"<?php echo $sostoynie; ?> <?=$sostoynie?>"
Ну с <?php ?> понятно это ещё с 3 версии счас то можно не писать, а вот
<?=$что_то ?> это чего то новое этого я незнаю куда echo то девается, разве в 5 версии так можно писать на вывод данных. Я конечно человек далёкий от великих программистов но кажись попутка какая то у тебя
Никто невкурсе как зделать проверку на заполненость формы то биш если какая тострока незаполнена при оправке выделял или как то показывал что тута незаполнено а то у меня чё то неработает

 if($_POST['hide'] == "on") $showhide = 'show';
  else $showhide = 'hide';
  $_POST['address'] = str_replace("'","'",$_POST['address']);
  $_POST['sostoynie'] = str_replace("'","'",$_POST['sostoynie']);
  $_POST['nalichie'] = str_replace("'","'",$_POST['nalichie']);
  $_POST['dvigatel'] = str_replace("'","'",$_POST['dvigatel']);
  $_POST['kpp'] = str_replace("'","'",$_POST['kpp']);
  $_POST['privod'] = str_replace("'","'",$_POST['privod']);
  $_POST['info'] = str_replace("'","'",$_POST['info']);
  $query = "INSERT INTO product VALUES (
            NULL,
           '".$_POST['model']."',
           ".$_POST['price'].",
           '".$_POST['currency']."',
           '".$_POST['sostoynie']."',
           '".$_POST['nalichie']."',
           '".$_POST['dvigatel']."',
           '".$_POST['kpp']."',
           '".$_POST['privod']."',
           '".$_POST['info']."',
            '$showhide',
           ".$_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>";

   
 
 автор: cheops   (21.03.2005 в 22:38)   письмо автору
 
   для: sata   (21.03.2005 в 21:25)
 

PHP допускает несколько видов обрамляющих тэгов. <?= ?> эквивалентент по своей форме <?php echo ?> и является сокращённой формой - допустим только один оператор, возвращаемое им значение выводится в окно браузера.
>Никто невкурсе как зделать проверку на заполненость формы
Это требуется сделать на стороне клиента или сервера, т.е. необходимо чтобы данные проверялись без отправки на сервер или уже по прибытию на сервер? В последнем случае следует просто проверить содержимое полученных данных, например при помощи функции empty
<?php
  
if(empty($_POST['model'])) exit("Не заполнено поле model");
?>

   
Rambler's Top100
вверх

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