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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите новичку ::-ohmy.gif::

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Множественное добавление в mysql
Kudesnik1987
Отправлено: 19 Августа, 2013 - 14:59:28
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Здраствуйте, уважаемые форумчане - программисты!
Я новичок в 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

Огорчение Помогите пожалуйста Недовольство, огорчение
Прикреплено изображение (Нажмите для увеличения)
1.jpg

(Отредактировано автором: 19 Августа, 2013 - 15:03:20)

 
 Top
Саныч
Отправлено: 19 Августа, 2013 - 15:05:42
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




Признавайтесь, F5 в браузере клацает?
Сделайте редирект на ту же самую страницу сразу после добавления данных в базу.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Kudesnik1987
Отправлено: 19 Августа, 2013 - 15:15:08
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Саныч пишет:
Признавайтесь, 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
 
 Top
Саныч
Отправлено: 19 Августа, 2013 - 15:17:54
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




Заголовки должны отправляться до вывода.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Kudesnik1987
Отправлено: 19 Августа, 2013 - 15:22:35
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Саныч пишет:
Заголовки должны отправляться до вывода.

Сделал через <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";
?>

(Отредактировано автором: 19 Августа, 2013 - 15:30:30)

 
 Top
Kudesnik1987
Отправлено: 19 Августа, 2013 - 15:48:04
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Щас стало "лучше"
Стал стабильно добавлять только 1 копию...
Причем у копии все нули, кроме строки под изображение - он ее копирует . См. принтскрин
(Добавление)
Профиксил, путем дополнительной проверки перед записью данных на не равно 0.
Прикреплено изображение (Нажмите для увеличения)
12.jpg
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB