PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
skushnoblya
Отправлено: 27 Декабря, 2013 - 13:42:54
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
Имеется База данных
В ней есть две таблицы
CODE (
htmlphp ):
скопировать код в буфер обмена
|* class *|
|* id *|* class_a *|
|* 1 *|* a *|
|* 2 *|* c *|
|* 3 *|* e *|
|* avto *|
|* id *|* marka *|* model *|* class*|
|* 1 *|* bmw *|* z1 *|* a *|
|* 2 *|* bmw *|* m3 *|* b *|
|* 3 *|* mazda *|* 3 *|* e *|
Есть страница html с формой:
CODE (
html ):
скопировать код в буфер обмена
<form action = "insert.php" method = "post" >
<p > Марка<input type = "text" name = "marka" ></ p >
<p > Модель <input type = "text" name = "model" ></ p >
Класс<p ><? $querys = "SELECT * FROM `class`" ;
$res = mysql_query( $querys) or die ( 'Query failed: ' . mysql_error ( ) ) ;
echo "<select name=class> ";
while ( $line = mysql_fetch_array ( $res, MYSQL_ASSOC ) ) {
echo '<option value = "' . $line [ 'id' ] . '" > ' . $line [ 'class_a' ] . "</ option > ";
}
echo "</ select > ";
?></ p >
<input type = submit value = "отправить" >
</ form >
После нажатия кнопки отправить, данные попадают в базу данных table "avto" таким образом:
PHP:
скопировать код в буфер обмена
<?PHP
$host = 'хост' ;
$database = 'Базаданных' ;
$user = 'Юзер' ;
$pswd = 'Пароль' ;
$querys = "SELECT * FROM `class`" ;
{
$f = $row [ 'id' ] ;
if ( $_POST [ 'marka' ] != "" and $_POST [ 'model' ] != "" ) {
$query = "INSERT INTO `avto` (`marka`, `model`, `forma`) VALUES ('" . $_POST [ 'marka' ] . "','" . $_POST [ 'model' ] . "','" . $f . "')" ;
}
else {
echo "одно из полей незаполнено" ;
}
echo "Данные удачно добавленны. Через 2 сек. " ;
}
?>
Задача:
В select "выпадающий список" должно подгружаться информация из таблицы class class_a, после введения в форму инфы и нажатия кнопки, в базу avto должно добавиться все что я ввел и то что я выбрал в выпадающем списке.
В выпадающий список оно подгружает.
Ошибка в моей реализации: после нажатия на клавишу отправить, оно заносит все имеющиеся варианты из выпадающего списка, вместо одного выбранного.
После одного нажатия на отправить получаю:
CODE (
htmlphp ):
скопировать код в буфер обмена
|* class *|
|* id *|* class_a *|
|* 1 *|* a *|
|* 2 *|* c *|
|* 3 *|* e *|
|* avto *|
|* id *|* marka *|* model *|* class*|
|* 1 *|* bmw *|* z1 *|* a *|
|* 2 *|* bmw *|* z1 *|* c *|
|* 3 *|* bmw *|* z1 *|* e *|
|* 4 *|* bmw *|* m3 *|* a *|
|* 5 *|* bmw *|* m3 *|* c *|
|* 6 *|* bmw *|* m3 *|* e *|
|* 7 *|* mazda *|* 3 *|* a *|
|* 8 *|* mazda *|* 3 *|* c *|
|* 9 *|* mazda *|* 3 *|* e *|
eai
Отправлено: 27 Декабря, 2013 - 13:54:03
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009
Откуда: Петроград
Помог: 10 раз(а)
Зачем этот цикл, выже на форме редактируете одну запись, значит и встака должна быть одна.
Я вижу что надо как то так
CODE (
htmlphp ):
скопировать код в буфер обмена
<? PHP
$host = 'хост' ;
$database = 'Базаданных' ;
$user = 'Юзер' ;
$pswd = 'Пароль' ;
if ( $_POST [ 'marka' ] != "" and $_POST [ 'model' ] != "" ) {
$query = "INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('" . $_POST [ 'marka' ] . "','" . $_POST [ 'model' ] . "','" . $_POST [ 'class' ] . "')" ;
?>
(Отредактировано автором: 27 Декабря, 2013 - 13:56:57)
eai
Отправлено: 27 Декабря, 2013 - 14:13:42
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009
Откуда: Петроград
Помог: 10 раз(а)
var_dump($_POST) что показывает
И вот это <select name=class> лучше делать вот так вот <select name='class'>
И вообще хорошая практика такие идентификторы не использовать, лучше carclass
(Отредактировано автором: 27 Декабря, 2013 - 14:15:19)
skushnoblya
Отправлено: 27 Декабря, 2013 - 14:18:25
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
eai пишет: var_dump($_POST) что показывает
PHP:
скопировать код в буфер обмена
$query = "INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('" . $_POST [ 'marka' ] . "','" . $_POST [ 'model' ] . "','" . $_POST [ 'class' ] . "')" ;
eai
Отправлено: 27 Декабря, 2013 - 14:25:02
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009
Откуда: Петроград
Помог: 10 раз(а)
Судя по дампу данные приходят верно.
А какого типа CLASS? Если целое то запрос так надо делать
PHP:
скопировать код в буфер обмена
$query = "INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('" . $_POST [ 'marka' ] . "','" . $_POST [ 'model' ] . "'," . $_POST [ 'class' ] . ")" ;
ну и var_dump($query); тоже не помешает
eai
Отправлено: 27 Декабря, 2013 - 14:55:47
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009
Откуда: Петроград
Помог: 10 раз(а)
skushnoblya пишет: INT 11символов. сейчас попробую
(Добавление)
Не помогло. Все так же
ну и var_dump($query); тоже не помешает
KingStar
Отправлено: 27 Декабря, 2013 - 14:56:33
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011
Откуда: Беларусь
Помог: 69 раз(а)
eai пишет: А какого типа CLASS? Если целое то запрос так надо делать
абсолютно не имеет значения как заносить число, в ковычках или без
eai , что-то ты лепишь не то, судя по
CODE (
htmlphp ):
скопировать код в буфер обмена
|* avto *|
|* id *|* marka *|* model *|* class*|
|* 1 *|* bmw *|* z1 *|* a *|
|* 2 *|* bmw *|* m3 *|* b *|
|* 3 *|* mazda *|* 3 *|* e *|
class у тя никак не может быть типа int, конечно можно занести и число в это поле, но выкладывай весь код, иначе это гадание на кофейной гуще (Отредактировано автором: 27 Декабря, 2013 - 15:05:14)
-----То что программа работает, не означает что она написана правильно!
eai
Отправлено: 27 Декабря, 2013 - 15:06:36
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009
Откуда: Петроград
Помог: 10 раз(а)
[quote=KingStar]
eai пишет:
eai , что-то ты лепишь не то, судя по
Ты не ошибся часом дорогой ?
skushnoblya
Отправлено: 27 Декабря, 2013 - 15:07:25
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
[quote=KingStar][/quote]
index.html
CODE (
htmlphp ):
скопировать код в буфер обмена
<!DOCTYPE html>
<!-- HTML 5 -->
< html lang= "ru" >
< head>
< meta charset= "utf-8" >
< title> Пример страницы</ title>
< link rel= "stylesheet" href= "style.css" >
</ head>
< body>
< article>
< h1> Пост</ h1>
< div>
<? php
$host = 'localhost' ;
$database = 'car' ;
$user = 'adm' ;
$pswd = '111111' ;
$dbh = mysql_connect ( $host , $user , $pswd ) or die ( "Не могу соединиться с MySQL." ) ; /*Выбираю из таблицы форму*/
?>
< form action= "insert.php" method= "post" >
< p> Марка< input type= "text" name= "marka" ></ p>
< p> Модель < input type= "text" name= "model" ></ p>
Класс< p>
<? $querys = "SELECT * FROM `class`" ;
echo "<select name=class>" ;
echo '<option value="' . $line [ 'id' ] . '">' . $line [ 'class_a' ] . "</option>" ;
}
echo "</select>" ;
?> </ p>
< input type= submit value= "отправить" >
</ form>
</ div>
</ article>
</ body>
</ html>
insert.php
CODE (
htmlphp ):
скопировать код в буфер обмена
<!DOCTYPE html>
<!-- HTML 5 -->
< html lang= "ru" >
< head>
< meta charset= "utf-8" >
< title> Пример страницы</ title>
< link rel= "stylesheet" href= "style.css" >
</ head>
< body>
<? php
$host = 'localhost' ;
$database = 'car' ;
$user = 'adm' ;
$pswd = '111111' ;
if ( $_POST [ 'marka' ] != "" and $_POST [ 'model' ] != "" ) {
$query = "INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('" . $_POST [ 'marka' ] . "','" . $_POST [ 'model' ] . "'," . $_POST [ 'class' ] . ")" ;
echo "Данные удачно добавленны. Через 2 сек. " ;
}
else {
echo "одно из полей незаполнено" ;
}
?>
</ body>
</ html>
var dump
CODE (
htmlphp ):
скопировать код в буфер обмена
string( 67 ) "INSERT INTO `avto` (`marka`, `model`, `class`) VALUES ('077','8',2)" Данные удачно добавленны. Через 2 сек.
Поиск в теме | Версия для печати
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB