![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
andro_id |
|
||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Здравствуйте. Я новичок в PHP-программировани. Есть задача:
1. выбор из дроп-даун меню определенного значения, все возможные значения достаются из БД
2. В зависимости от выбранного значения, вставка в страницу соответствующей формы
Сама форма:
Однако, почему-то, добавление значений в базу не происходит, а только исчезает форма. Если убрать условие if (isset($_POST['do'])), тогда данны добавляются и по нажатию кнопки в форме и по выбору значения onchange="this.form.submit();" в первой форме. Вопрос: Как же сделать добавление ТОЛЬКО по нажатию кнопки в форме? Сделать так, чтобы после добавления значений в базу форма не исчезала, а лишь очищалась? Т.е. нужно чтобы формы не было только при первом посещении страницы, а потом висела та форма, которая последний раз была выбрана. База:
Это сообщение отредактировал(а) PARROT - 24.4.2007, 12:00 |
||||||||
|
|||||||||
PARROT |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
andro_id, какие ошибки пишет?
-------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
никаких ошибок. если стоит условие, после нажатия кнопки "Добавить" форма просто сбрасывается и на странице выводится только первый селект. Хотя я ставил проверку того, что передаётся в $_POST, все данные проходят, но мимо базы.
|
|||
|
||||
PARROT |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
Такого не бывает:
-------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Получаю Resource id #5 и никаких ошибок. А как сделать, чтобы форма не пропадала, а оставалась, но чистая? Сейчас после нажатия на кнопку Добавить происходит возврат к первому селекту, а формы нет. Чтобы форма снова появилась, нужно опять выбрать значение. Может тогда будет проще найти проблему?
|
|||
|
||||
PARROT |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
http://www.mysql.ru/docs/man/Retrieving_data.html
Добавлено через 4 минуты и 15 секунд http://www.mysql.ru/docs/man/SELECT.html Добавлено через 6 минут и 33 секунды http://ru.php.net/manual/ru/function.mysql-fetch-array.php http://ru.php.net/manual/ru/function.mysql-fetch-assoc.php -------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Я знаю как происходит выборка из БД. Отбросим пока вопрос с БД. Как сделать, чтобы форма висела всегда, кроме первого захода на страницу?
|
|||
|
||||
PARROT |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
Если Вы обращаетесь по индексу поля, то Вам следует использовать
mysql_fetch_assoc -- Обрабатывает ряд результата запроса и возвращает ассоциативный массив. Добавлено через 5 минут и 10 секунд У Вас форма зависит от выбора из базы. А если из базы ничего не приходит, то и формы не будет. Разберитесь с базой, печатайте запросы и смотрите что за данные к вам приходят.
-------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
После первого выбора значения в селекте я получаю соответсвующую форму. Т.е. переменная уже получена. Можно ли сохранить её и "протащить" через форму для заполнения по второму кругу? Чтобы если в первом селекте ничего не выбиралось, то осталась предыдущая форма. Или в данной реализации это невозможно и нужно придумывать что-то другое?
|
|||
|
||||
PARROT |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
Думаю надо написать план действий, чтобы было понятно.
Добавлено через 2 минуты и 54 секунды По пунктам. -------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Итак, план:
1. Первый заход - видим только первый селект, в котором выбираем тип оборудования --> выбрали(есть переменная $var, по которой) --> получам соответствующую форму 2. Заполняем форму(переменную $var держим в уме) --> жмаем Добавить --> данные ушли в базу(переменную $var держим в уме) 3. Возврат к началу страницы и т.к. переменная $var уже есть, открываем соответствующую форму. Т.е. избавляем пользователя от повторного выбора типа оборудования и вывода соответсвующей формы. Если нужно добавить 100 шт. однотипного оборудования, зачем каждый раз снова выбирать одну и ту же форму? Вот такая задумка. |
|||
|
||||
GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: -1 Всего: 32 |
а после записи в бд редирект делаете?
-------------------- ![]() ![]() |
|||
|
||||
PARROT |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
-------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
andro_id |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Вот тут поподробнее. Редирект не делаю, см. первый пост. Всё заканчивается этим
Как сделать? Это сообщение отредактировал(а) andro_id - 24.4.2007, 13:07 |
||||
|
|||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Эта переменная $var не переносится из формы, которая вставляется инклудом, обратно в родительский php-файл. Т.е. сбой на этом этапе: 2. Заполняем форму(переменную $var держим в уме) --> жмаем Добавить --> данные ушли в базу(а переменная $var пропала) 3. Возврат к началу страницы и переменной $var уже нет --> $form="Форма не выбрана". Как быть? Если точнее: Как же пронести переменные из дочерней формы, обратно в родительский файл? Это сообщение отредактировал(а) andro_id - 24.4.2007, 13:41 |
|||
|
||||
PARROT |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
-------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
А зачем редирект, ведь переход и так происходит?
Добавлено через 5 минут и 15 секунд Так всё-таки, можно пронести переменную, если да, то как? Если нет, "будем искать" ![]() |
|||
|
||||
PARROT |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
Сделать ее глобальной.
Добавлено через 1 минуту и 33 секунды
-------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Не, не получается, видимо придётся решать с помощью JavaScript, в которой я ещё бОльший "0".
![]() |
|||
|
||||
capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 2 Всего: 13 |
Каким образом? Посмотри что передаётся в $_POST так var_dump($_POST); есть ли в массиве переменная "do" ? |
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Да. передаётся.
array(11) { ["action"]=> string(0) "" ["device_model"]=> string(0) "" ["device_serial"]=> string(0) "" ["device_netname"]=> string(0) "" ["device_ip"]=> string(0) "" ["device_mac"]=> string(0) "" ["device_location"]=> string(0) "" ["device_date_receive"]=> string(0) "" ["device_date_spisan"]=> string(0) "" ["device_comment"]=> string(0) "" ["do"]=> string(8) "Добавить" } Это сообщение отредактировал(а) andro_id - 24.4.2007, 17:42 |
|||
|
||||
capitan |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 2 Всего: 13 |
Попробуй так :
И делай проверку не if (isset($_POST['do'])) , a
|
||||
|
|||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Неа, не хочет. А если условие убрать вообще, тогда добавляется и по кнопке и по селекту. Я уже башку сломал
![]() |
|||
|
||||
capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 2 Всего: 13 |
сделай так:
Выведутся данные? |
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Нет.
Вот массив:
|
|||
|
||||
capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 2 Всего: 13 |
А вообще, эти куски кода в одном файле находятся?
|
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Вот-вот.
Этот код идёт в дочернем файле с формой worcstation.php, которая подключается из родительского файла index.php. Если перенести его в самое начало родительского файла, тогда всё работает правильно. Т.е. всё, что сидит в var_dump($_POST) попадает в родительский файл и добавляется в базу. |
|||
|
||||
capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 2 Всего: 13 |
Так с этого и нужно было начинать.
Выложи ещё раз код, пофайлово. |
|||
|
||||
andro_id |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
index.php
workstation.php
Вот. |
||||
|
|||||
capitan |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 2 Всего: 13 |
в файле workstation.php у формы пропиши action
и я бы сделал всё таки так:
Это сообщение отредактировал(а) capitan - 24.4.2007, 18:45 |
||||||||
|
|||||||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Спасибо за помощь.
Почему так лучше? |
|||
|
||||
capitan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 27.2.2005 Где: Москва Репутация: 2 Всего: 13 |
Это просто моё мнение ![]() |
|||
|
||||
andro_id |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 17.4.2007 Где: Москва Репутация: нет Всего: 1 |
Да, всё заработало. Ура. Целый день бился. Всё-таки клссная вещь этот PHP.
![]() |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |