Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите новичку ::-ohmy.gif::
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Помогите новичку ::-ohmy.gif::

Страниц (1): [1]
 

1. Kudesnik1987 - 19 Августа, 2013 - 14:59:28 - перейти к сообщению
Здраствуйте, уважаемые форумчане - программисты!
Я новичок в php , только учусь, и вот встала проблема, причина которой мне не понятна Недовольство, огорчение
Очень прошу Вашей помощи, дорогие друзья.

Проблема вот в чем.
1) Я сделал форму для добавления изделий . Форма содержит окно добавление картинки
2) Форма ссылается POSTом в обработчик
3) Обработчик проверяем введенные данные, и добавляет данные в базу данных.
4) ?!?! При проверке самой базы данных в ней оказываються несколько копий данных! Причем, копий может быть от 2х до 15.

В чем проблема?
В коде? В данных? в обработчике? Вместо 1 запроса браузер отправляет 2-15?

Высылаю коды :
1) Форма

PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2.  
  3. <html>
  4. <head>
  5. <link rel="stylesheet" href="style.css" type="text/css"/>
  6. <title>Форма добавления</title>
  7. </head>
  8.  
  9. <div id="forma">
  10. <?
  11. echo "<form action='add.php' method='post' enctype='multipart/form-data'  name='form'>";
  12. echo "Артикул "."<input name='article' type='text' style='width:80px' >"."&nbsp";
  13. echo "Вес "."<input name='weight' type='text' style='width:80px'>"."&nbsp";
  14. echo "<select name='type' style='width:150px' > ";
  15. echo "<OPTION value=1>Обручальное кольцо</OPTION>";
  16. echo "<OPTION value=2>Женское кольцо</OPTION>";
  17. echo "<OPTION value=3>Мужской перстень</OPTION>";
  18. echo "<OPTION value=4>Кулоны</OPTION>";
  19. echo "</select>";
  20. echo "<br>";
  21. echo "<br>";
  22. echo "<input type='file' name='userfile' accept='image/jpeg,image/png,image/gif' style='width:233px'>"."&nbsp"."&nbsp";
  23. echo "<INPUT TYPE='submit' VALUE='Добавить изделие в базу' style='width:200px'><br><br>";
  24.  
  25. ?>
  26. </div>
  27. <body>
  28. </body>
  29. </html>
  30.  

2) Обработчик
PHP:
скопировать код в буфер обмена
  1. <?
  2. /* Блок кода проверки введенные данных */
  3. if (!isset($_POST['article']) or !isset($_POST['weight']) or !isset($_POST['type']))
  4.         {
  5.         echo "Не введены данные в одно или несколько окон " ;
  6.         }
  7.         else
  8.         {
  9.         if (isset($_POST['article']) and $_POST['article']!=="" )
  10.         {
  11.         echo "Переменная существует,она равна:"."&nbsp".$_POST['article']."<br>" ;
  12.         }
  13.         else
  14.         {
  15.         echo "<FONT color='red'>Переменная не введена<br></font>";
  16.         }
  17.        
  18.        
  19.         if (isset($_POST['weight']) and $_POST['weight']!=="" )
  20.         {
  21.         echo "Переменная существует,она равна:"."&nbsp".$_POST['weight']."<br>" ;
  22.         }
  23.         else
  24.         {
  25.         echo "<FONT color='weight'>Переменная не введена<br></font>";
  26.         }
  27.  
  28.  
  29.         if (isset($_POST['type']) and $_POST['type']!=="" )
  30.         {
  31.         echo "Переменная существует,она равна:"."&nbsp".$_POST['type']."<br>" ;
  32.         }
  33.         else
  34.         {
  35.         echo "<FONT color='red'>Переменная не введена<br></font>";
  36.         }
  37.         }
  38.  
  39.  
  40. $article=$_POST['article'];
  41. $weight=$_POST['weight'];
  42. $type=$_POST['type'];
  43. $userfile=$_POST['userfile'];
  44.  
  45.  
  46.  
  47. $uploaddir = 'images/';
  48. $apend=date('YmdHis').rand(100,1000).'.jpg';
  49. $uploadfile="$uploaddir$apend";
  50.  
  51. if($_FILES['userfile']['size'] != 0 and $_FILES['userfile']['size']<=10240000)
  52. {
  53. if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
  54.         {
  55.         $size = getimagesize($uploadfile);
  56.                 if ($size[0] < 6001 && $size[1]<5001)
  57.                 {
  58.                         echo "Файл загружен.";
  59.                 }
  60.                 else
  61.                 {
  62.                 echo "Размер пикселей превышает допустимые нормы (ширина не более - 6000 пикселей, высота не более 5000)";
  63.                 unlink($uploadfile);
  64.                 }
  65.                 }
  66.         else {echo "Файл не загружен, вернитель и попробуйте еще раз";
  67.         }
  68. }
  69. else
  70. {
  71. echo "Размер файла не должен превышать 1000Кб";
  72. }
  73.  
  74.  
  75. ?>
  76. <?
  77.  
  78. $db=mysql_connect("localhost","gevork","1");
  79. $d=mysql_select_db("proba",$db);
  80. $result = mysql_query("INSERT INTO izdelia (article,weight,type,image) VALUES ('1','2','3','4')");[i]Сюда я уже даже вписал обычные данные,вместо переменных, которые обрабатываються - все равно лажа выходит[/i]
  81. if ($result=='true') echo "<br>"."Dobavil!";
  82.  
  83. ?>
  84.  


ну и в приложении принтскрин данных mysql

Огорчение Помогите пожалуйста Недовольство, огорчение
2. Саныч - 19 Августа, 2013 - 15:05:42 - перейти к сообщению
Признавайтесь, F5 в браузере клацает?
Сделайте редирект на ту же самую страницу сразу после добавления данных в базу.
3. Kudesnik1987 - 19 Августа, 2013 - 15:15:08 - перейти к сообщению
Саныч пишет:
Признавайтесь, F5 в браузере клацает?
Сделайте редирект на ту же самую страницу сразу после добавления данных в базу.

Да я вот тоже думал, что браузер отправляет по многу раз, но вроде как нет...

Эм...а как редирект делать?
Гугл говорит
header("Location: http://123.com/");
но прога пишет
Warning: Cannot modify header information - headers already sent by (output started at R:\home\localhost\www\php\juw\add.php:8) in R:\home\localhost\www\php\juw\add.php on line 104
4. Саныч - 19 Августа, 2013 - 15:17:54 - перейти к сообщению
Заголовки должны отправляться до вывода.
5. Kudesnik1987 - 19 Августа, 2013 - 15:22:35 - перейти к сообщению
Саныч пишет:
Заголовки должны отправляться до вывода.

Сделал через <meta http-equiv="Refresh" content="2;URL= forma.php" />
Таж фигня Недовольство, огорчение Создал 2 штуки
Огорчение Огорчение Огорчение
С кодом то все нормально?


Балин, создал вообще один файл с вот таким простым кодом - результат такой же - добавил 8 данных.
Похоже проблема в базе. Что делать?
<?
$db=mysql_connect("localhost","gevork","1");
$d=mysql_select_db("proba",$db);
$result = mysql_query("INSERT INTO izdelia (article,weight,type,image) VALUES ('1','2','3','4')");
if ($result==true) echo "dobavil";
?>
6. Kudesnik1987 - 19 Августа, 2013 - 15:48:04 - перейти к сообщению
Щас стало "лучше"
Стал стабильно добавлять только 1 копию...
Причем у копии все нули, кроме строки под изображение - он ее копирует . См. принтскрин
(Добавление)
Профиксил, путем дополнительной проверки перед записью данных на не равно 0.

 

Powered by ExBB FM 1.0 RC1