Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: как взять значения из формы при нажатии кнопки
 
 автор: Stasycat   (22.02.2008 в 15:25)   письмо автору
 
 

У меня сайт с базой данных. Мне нужно, чтобы новая запись добавлялась в отдельном окне.
В этом окне форма для выбора категории товара:

<form action="..." method="post" name="formVyborMat">
<br>Выберите категорию материала: <br>
<select name="vybor_kategorii">
<option selected value="0"> </option>
<option value="1"> Изоляционные </option>
<option value="2"> Инструменты </option>
<option value="3"> Конструкции </option>
<option value="4"> Кровельные </option>
<option value="5"> Отделочные </option>
<option value="6"> Расходные </option>
<option value="7"> Сантехматериалы </option>
<option value="8"> Электроматериалы </option>
</select><br><br>
<input type="button" value="Сохранить" onclick=" ">
</form>



Какую функцию мне написать на событие onclick=" ", чтобы добавлялись данные из полей формы в строку таблицы (вставка в таблицу PHP-кодом)?


Мне нужно брать значения из полей путём JavaScript:

function znachenie(){
$kat = document.formVyborMat.vybor_kategorii.value;
return $kat;
}

или путём PHP:

function znachenie1(){
$kat = $_POST['ed_nov_mat'];;
return $name;
}

??????

   
 
 автор: sim5   (22.02.2008 в 15:59)   письмо автору
 
   для: Stasycat   (22.02.2008 в 15:25)
 

Зачем вам брать значения путем JS, если вставлять в РНР (на сервере)? Отправьте форму, получите данные, вставляйте, отображайте - зачем onclick.

   
 
 автор: Stasycat   (22.02.2008 в 17:31)   письмо автору
 
   для: sim5   (22.02.2008 в 15:59)
 

так я не знаю как их взять! Ведь форма-то (окошко) открывается и закрывается потом, и данные никуда не отправляются.
Ведь данные передаются только странице, которая указана в action=""?
Или вообще в буфер? Я не понимаю, поясни, плиз))
Можно ли сразу внести в поле значение и тут же получить его через $_POST[] ? Чтобы именно в этом окошке все данные уже были внесены, до его закрытия.

   
 
 автор: sim5   (22.02.2008 в 18:16)   письмо автору
 
   для: Stasycat   (22.02.2008 в 17:31)
 

Если у вас в action формы будет указано, например:
<form action="main.php" method="post" name="formVyborMat">

то при отправке (а обычно это делает <input type="submit">), будет запрошена страница main.php, на которой и должен быть скрипт обработки полученных данных из формы. В вашем случае $_POST['vybor_kategorii'] будет содержать выбранное значение в списке.

Чтобы сразу увидеть приняты или нет введенные занчения на сервере (обработаны они или нет) - вам нужен AJAX. А вот сделать проверку на ввод значений в поле или его отсутствие - это можно на JS, сервер для этого не нужен, хотя проверять на сервере это очень желательно.

   
 
 автор: Stasycat   (26.02.2008 в 10:46)   письмо автору
 
   для: sim5   (22.02.2008 в 18:16)
 

Но мне не надо передавать эти данные на другую страницу!
Мне надо сразу их сохранить (добавить в базу данных то, что написали в полях формы), если будет нажата кнопка "Сохранить"
Если же будет нажата только кнопка "Закрыть", то ничего не сохранять.

Как я могу передать на другую страницу параметр - была ли нажата кнопка "Сохранить"???
За пару минут человек может захотеть внести десяток новых товаров, а кнопку нажать 15 раз, т.е. при открытии страницы main.php у меня будут добавляться пустые записи, т.к. кнопка была нажата и не один раз.

Нужно чтобы кнопка
<input type="button" name="otvet" value="Сохранить" onclick="confirm ('Сохранить данные?')">

позволяла или запрещала потом выполняться коду НА ЭТОЙ ЖЕ странице.
Код - добавление новой записи в базу данных.

   
 
 автор: CNTv2.0   (26.02.2008 в 11:32)   письмо автору
 
   для: Stasycat   (26.02.2008 в 10:46)
 

Детсад какой-то, честное слово!

Вы сформулировать проблему попробуйте РУССКИМ языком, а не междометиями.
Когда сформулируете - приходите, поможем.
А пока приходится догадываться - чего же это вам надо-то?

   
 
 автор: Stasycat   (26.02.2008 в 11:55)   письмо автору
 
   для: CNTv2.0   (26.02.2008 в 11:32)
 

Да что тут непонятного?

У меня есть страница просмотра товаров results.php
На ней есть кнопка "Добавить товар"
При нажатии она открывает маленькое окошко-страницу dobavlenie.php с формой для ввода данных товара.
Данные сохраняются при нажатии кнопки "Сохранить" сразу в БД tovary.
Окошко закрывается.
Страница results.php при обновлении выдаёт старые товары + новый товар.
При чём из формы страницы dobavlenie.php никаких данных странице results.php не должно передаваться. Только обновление.

   
 
 автор: CNTv2.0   (26.02.2008 в 15:10)   письмо автору
 
   для: Stasycat   (26.02.2008 в 11:55)
 

Вникайте:
1. Добавление в БД - это работа серверного сценария.
2. Значит, при клике по кнопке "Сохранить" в окошке вам НЕОБХОДИМО ВЫЗВАТЬ серверный сценарий.
3. Вызов серверного сценария - это, во-первых, прописывание пути к этому сценарию в атрибуте ACTION тега <FORM>. И, во-вторых, это необходимость ИМЕТЬ ОКНО, в коем должны отражаться результаты работы сценария.

Усекли, к чему я это написал?
Разжевываю: внести добавку в БД и закрыть окошко dobavlenie.php ОДНОВРЕМЕННО (и БЕЗ ИЗМЕНЕНИЙ в вызывающей странице results.php) НЕЛЬЗЯ, ибо серверному сценарию НЕОБХОДИМО ИМЕТЬ хоть где-то открытое ОКНО, где и будет исполняться сценарий.
Въехали?

Вариантов решения вижу 2.
Первое: после нажатия кнопки "Сохранить" окошко dobavlenie.php не закрывается, а ждет окончания загрузки в него результатов сценария, указанного в ACTION формы. А в этих результатах прописываете скрипт
onload = function () {window.close ()}


Второе: в файле results.php предусматриваете невидимый <IFRAME>, именно из которого идет открытие нового окна dobavlenie.php, а в форме в файле dobavlenie.php прописываете TARGET="_parent" + по окончании сабмита (через setTimeout) инструкция window.close ()
Ну а результат работы сценария должен снова содержать функцию открытия окна для нового добавления.

Всё понятно? Или не очень? :-)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования