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 :: Выгрузка строк в <html...form...select> из бд таблица1, и записать обратно в бд но таблицу2.

 PHP.SU

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


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

> Без описания
skushnoblya
Отправлено: 27 Декабря, 2013 - 13:42:54
Post Id


Новичок


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


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




Имеется База данных
В ней есть две таблицы

CODE (htmlphp):
скопировать код в буфер обмена
  1. |* class *|
  2. |* id *|* class_a *|
  3. |* 1 *|* a *|
  4. |* 2 *|* c *|
  5. |* 3 *|* e *|
  6.  
  7. |* avto *|
  8. |* id *|* marka *|* model *|* class*|
  9. |* 1 *|* bmw *|* z1 *|* a *|
  10. |* 2 *|* bmw *|* m3 *|* b *|
  11. |* 3 *|* mazda *|* 3 *|* e *|


Есть страница html с формой:
CODE (html):
скопировать код в буфер обмена
  1. <form action="insert.php" method="post">
  2. <p>Марка<input type="text" name="marka"></p>
  3. <p>Модель <input type="text" name="model"></p>
  4. Класс<p><? $querys = "SELECT * FROM `class`";
  5. $res = mysql_query($querys) or die ( 'Query failed: ' . mysql_error ( ) );
  6. echo "<select name=class>";
  7. while ( $line = mysql_fetch_array ( $res, MYSQL_ASSOC ) ) {
  8. echo '<option value="' . $line [ 'id' ] . '">' . $line [ 'class_a' ] . "</option>";
  9. }
  10. echo "</select>";
  11. ?></p>
  12. <input type=submit value="отправить">
  13. </form>


После нажатия кнопки отправить, данные попадают в базу данных table "avto" таким образом:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $host='хост';
  3. $database='Базаданных';
  4. $user='Юзер';
  5. $pswd='Пароль';
  6.  
  7. $dbh = mysql_connect($host, $user, $pswd) or die (mysql_error ());
  8. mysql_select_db($database) or die(mysql_error());
  9.  
  10. $querys = "SELECT * FROM `class`";
  11. $res = mysql_query($querys);
  12. while($row = mysql_fetch_array($res))
  13. {
  14. $f=$row['id'];
  15. if ($_POST['marka']!="" and $_POST['model']!="") {
  16. $query = "INSERT INTO `avto` (`marka`, `model`, `forma`) VALUES ('".$_POST['marka']."','".$_POST['model']."','".$f."')";
  17. $result = mysql_query($query) or die (mysql_error ());
  18. }
  19. else {
  20. echo "одно из полей незаполнено";
  21. }
  22. echo "Данные удачно добавленны. Через 2 сек. ";
  23. }
  24. ?>


Задача:
В select "выпадающий список" должно подгружаться информация из таблицы class class_a, после введения в форму инфы и нажатия кнопки, в базу avto должно добавиться все что я ввел и то что я выбрал в выпадающем списке.

В выпадающий список оно подгружает.

Ошибка в моей реализации: после нажатия на клавишу отправить, оно заносит все имеющиеся варианты из выпадающего списка, вместо одного выбранного.

После одного нажатия на отправить получаю:
CODE (htmlphp):
скопировать код в буфер обмена
  1. |* class *|
  2. |* id *|* class_a *|
  3. |* 1 *|* a *|
  4. |* 2 *|* c *|
  5. |* 3 *|* e *|
  6.  
  7. |* avto *|
  8. |* id *|* marka *|* model *|* class*|
  9. |* 1 *|* bmw *|* z1 *|* a *|
  10. |* 2 *|* bmw *|* z1 *|* c *|
  11. |* 3 *|* bmw *|* z1 *|* e *|
  12. |* 4 *|* bmw *|* m3 *|* a *|
  13. |* 5 *|* bmw *|* m3 *|* c *|
  14. |* 6 *|* bmw *|* m3 *|* e *|
  15. |* 7 *|* mazda *|* 3 *|* a *|
  16. |* 8 *|* mazda *|* 3 *|* c *|
  17. |* 9 *|* mazda *|* 3 *|* e *|
 
 Top
eai
Отправлено: 27 Декабря, 2013 - 13:54:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. $querys = "SELECT * FROM `class`";
  2. $res = mysql_query($querys);
  3. while($row = mysql_fetch_array($res))
  4. {


Зачем этот цикл, выже на форме редактируете одну запись, значит и встака должна быть одна.


Я вижу что надо как то так


CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP
  2. $host='хост';
  3. $database='Базаданных';
  4. $user='Юзер';
  5. $pswd='Пароль';
  6.  
  7. $dbh = mysql_connect($host, $user, $pswd) or die (mysql_error ());
  8. mysql_select_db($database) or die(mysql_error());
  9.  
  10. if ($_POST['marka']!="" and $_POST['model']!="") {
  11. $query = "INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('".$_POST['marka']."','".$_POST['model']."','".$_POST['class']."')";
  12. $result = mysql_query($query) or die (mysql_error ());
  13. ?>
  14.  

(Отредактировано автором: 27 Декабря, 2013 - 13:56:57)

 
 Top
skushnoblya
Отправлено: 27 Декабря, 2013 - 14:10:03
Post Id


Новичок


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


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




[quote=eai][/quote]Сделал как Вы сказали, теперь добавляет не зависимо от выбранного в списке всегда только 0.

[code=htmlphp][/code] |* class *|
|* id *|* class_a *|
|* 1 *|* a *|
|* 2 *|* c *|
|* 3 *|* e *|

|* avto *|
|* id *|* marka *|* model *|* class*|
|* 1 *|* bmw *|* z1 *|* 0 *|
|* 2 *|* bmw *|* m3 *|* 0 *|
|* 3 *|* mazda *|* 3 *|* 0 *|
 
 Top
eai
Отправлено: 27 Декабря, 2013 - 14:13:42
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




var_dump($_POST) что показывает

И вот это <select name=class> лучше делать вот так вот <select name='class'>
И вообще хорошая практика такие идентификторы не использовать, лучше carclass

(Отредактировано автором: 27 Декабря, 2013 - 14:15:19)

 
 Top
skushnoblya
Отправлено: 27 Декабря, 2013 - 14:18:25
Post Id


Новичок


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


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




eai пишет:
var_dump($_POST) что показывает


PHP:
скопировать код в буфер обмена
  1. $query = "INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('".$_POST['marka']."','".$_POST['model']."','".$_POST['class']."')";
  2. var_dump($_POST);
  3. $result = mysql_query($query) or die (mysql_error ());


CODE (htmlphp):
скопировать код в буфер обмена
  1. array(3) { ["model"]=> string(9) "999999999" ["marka"]=> string(10) "9999999999" ["class"]=> string(1) "9" }
 
 Top
eai
Отправлено: 27 Декабря, 2013 - 14:25:02
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




Судя по дампу данные приходят верно.
А какого типа CLASS? Если целое то запрос так надо делать

PHP:
скопировать код в буфер обмена
  1. $query = "INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('".$_POST['marka']."','".$_POST['model']."',".$_POST['class'].")";


ну и var_dump($query); тоже не помешает
 
 Top
skushnoblya
Отправлено: 27 Декабря, 2013 - 14:27:17
Post Id


Новичок


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


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




[quote=eai]CLASS[/quote] INT 11символов. сейчас попробую
(Добавление)
[quote=eai][/quote]Не помогло. Все так же
 
 Top
eai
Отправлено: 27 Декабря, 2013 - 14:55:47
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




skushnoblya пишет:
eai пишет:
CLASS
INT 11символов. сейчас попробую
(Добавление)
eai пишет:
Не помогло. Все так же


ну и var_dump($query); тоже не помешает
 
 Top
KingStar
Отправлено: 27 Декабря, 2013 - 14:56:33
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


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




eai пишет:
А какого типа CLASS? Если целое то запрос так надо делать


абсолютно не имеет значения как заносить число, в ковычках или без

eai, что-то ты лепишь не то, судя по

CODE (htmlphp):
скопировать код в буфер обмена
  1. |* avto *|
  2. |* id *|* marka *|* model *|* class*|
  3. |* 1 *|* bmw *|* z1 *|* a *|
  4. |* 2 *|* bmw *|* m3 *|* b *|
  5. |* 3 *|* mazda *|* 3 *|* e *|


class у тя никак не может быть типа int, конечно можно занести и число в это поле, но выкладывай весь код, иначе это гадание на кофейной гуще Хм

(Отредактировано автором: 27 Декабря, 2013 - 15:05:14)



-----
То что программа работает, не означает что она написана правильно!
 
 Top
eai
Отправлено: 27 Декабря, 2013 - 15:06:36
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




[quote=KingStar]
eai пишет:

eai, что-то ты лепишь не то, судя по


Ты не ошибся часом дорогой ?
 
 Top
skushnoblya
Отправлено: 27 Декабря, 2013 - 15:07:25
Post Id


Новичок


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


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




[quote=KingStar][/quote]

index.html
CODE (htmlphp):
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <!--HTML 5-->
  3. <html lang="ru">
  4.  
  5. <head>
  6.     <meta charset="utf-8">
  7.     <title>Пример страницы</title>
  8.     <link rel="stylesheet" href="style.css">
  9. </head>
  10.  
  11. <body>
  12.                             <article>
  13.                                 <h1>Пост</h1>
  14.                                 <div>
  15.                                 <?php
  16.                                $host='localhost';
  17.                                $database='car';
  18.                                $user='adm';
  19.                                $pswd='111111';
  20.  
  21.                                $dbh = mysql_connect($host, $user, $pswd) or die("Не могу соединиться с MySQL.");
  22.                                mysql_select_db($database) or die("Не могу подключиться к базе.");
  23.                                /*Выбираю из таблицы форму*/
  24.                                ?>
  25.                                 <form action="insert.php" method="post">
  26.                                     <p>Марка<input type="text" name="marka"></p>
  27.                                     <p>Модель <input type="text" name="model"></p>
  28.                                     Класс<p>
  29.                                     <? $querys = "SELECT * FROM `class`";
  30.                                    $res = mysql_query($querys) or die ( 'Query failed: ' . mysql_error ( ) );
  31.                                    echo "<select name=class>";
  32.                                    while ( $line = mysql_fetch_array ( $res, MYSQL_ASSOC ) ) {
  33.                                        echo '<option value="' . $line [ 'id' ] . '">' . $line [ 'class_a' ] . "</option>";
  34.                                    }
  35.                                    echo "</select>";
  36.                                    ?></p>
  37.                                     <input type=submit value="отправить">
  38.                                 </form>
  39.                             </div>
  40.                         </article>
  41. </body>
  42.  
  43. </html>


insert.php
CODE (htmlphp):
скопировать код в буфер обмена
  1. <!DOCTYPE html>
  2. <!--HTML 5-->
  3. <html lang="ru">
  4.  
  5. <head>
  6.     <meta charset="utf-8">
  7.     <title>Пример страницы</title>
  8.     <link rel="stylesheet" href="style.css">
  9. </head>
  10.  
  11. <body>
  12. <?php
  13.    $host='localhost';
  14.    $database='car';
  15.    $user='adm';
  16.    $pswd='111111';
  17.  
  18.    $dbh = mysql_connect($host, $user, $pswd) or die (mysql_error ());
  19. mysql_select_db($database) or die(mysql_error());
  20.  
  21. if ($_POST['marka']!="" and $_POST['model']!="") {
  22.    $query = "INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('".$_POST['marka']."','".$_POST['model']."',".$_POST['class'].")";
  23. var_dump($query);
  24. $result = mysql_query($query) or die (mysql_error ());
  25.  
  26. echo "Данные удачно добавленны. Через 2 сек. ";
  27. }
  28. else {
  29. echo "одно из полей незаполнено";
  30. }
  31.            ?>
  32. </body>
  33.  
  34. </html>


var dump
CODE (htmlphp):
скопировать код в буфер обмена
  1.  string(67) "INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('077','8',2)" Данные удачно добавленны. Через 2 сек.
 
 Top
eai
Отправлено: 27 Декабря, 2013 - 15:11:07
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




А вот теперь берем этот запрос, и пробуем его выполнить

CODE (htmlphp):
скопировать код в буфер обмена
  1. INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('077','8',2)
 
 Top
skushnoblya
Отправлено: 27 Декабря, 2013 - 15:15:25
Post Id


Новичок


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


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




[quote=eai][/quote]Так добавляет как нужно.
 
 Top
eai
Отправлено: 27 Декабря, 2013 - 15:16:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




skushnoblya пишет:
eai пишет:
Так добавляет как нужно.


ну тогда твоем компьютере сидит хитрый китаец и троллит тебя Улыбка))
 
 Top
KingStar
Отправлено: 27 Декабря, 2013 - 15:18:09
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


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




eai да, сори )) это было ТС сообщение Радость


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB