PDA

Просмотр полной версии : php формы, функции


Visible
25.07.2013, 14:37
Недавно начал изучать php, подскажите пожалуйста.
Вывожу форму:
include_once("function.php");
if (isset (некая проверка) {
что то..
}
else {
print_form();
}
function.php

function print_form()
{
echo <<<qwe
<form action="" method="POST">
и т.д.
интересует момент form action="". что нужно добавлять, если обработчик находится внутри другой функции?

Код:
function process_add()
{
обработчик формы
}
И ещё, попутный вопрос, может не совсем правильный. file_get_contents читает содержимое файла в строку. Имеется ли функция, которая бы читала содержимое файла в строку не забыв о php коде в этом файле?
public function contentsite() {
return file_get_contents(");
}

вывод на главную
echo $engine->contentsite();

lovepsone
25.07.2013, 15:55
Для начало разберитесь что делает GET, а что POST и как ими пользоваться.
1)Если хотите использовать post, и что бы можно было делать проверку к нему, то для начала форму надо назвать т.е:
<form name="название" .... > и тд . А form action должен содержать текущий URL(если память мне не изменяет).
И вообще какой смысл содержать обработчик и и форму в разных функциях(файлах)?Бред какой-то!
2) file_get_contents не читает пхп код ни как, если вам нужно вывести php файл с формой и кодом то вот функция include("имя файла");



P.S. Уже давно на пхп не сидел так что могу морозить )

Nepohelovski
25.07.2013, 18:55
И вообще какой смысл содержать обработчик и и форму в разных функциях(файлах)?Бред какой-то!
Возьмите любой фреймворк работающий по принципу MVC и увидите что код представления, в данном случае форма html будет в одном файле а модель и контроллер будут в других файлах, это и есть грамотное программирование =)

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

Имеется ли функция, которая бы читала содержимое файла в строку не забыв о php коде в этом файле?
Не совсем ясно что вы хотите, возможно вы имели ввиду eval (http://php.net/manual/ru/function.eval.php)

Visible
25.07.2013, 19:20
Реализовал выводом из одной функции в function.php.
<form action='#'
вывожу содержимое файла на странице функцией.
public function getContentPage() {
return file_get_contents("templates/" . $this->_page_file . ".php");
}
При замене на
public function getContentPage() {
return include("templates/" . $this->_page_file . ".php");
} код стал выполняться.
вывожу так:
echo $engine->getContentPage();
Но постоянно на каждые страницы начала появляться циферка 1. Не совсем разобрался почему так....

Nepohelovski
25.07.2013, 19:30
Ну где у вас цифра 1 я не могу знать не видя код) Попробуйте глянуть через
var_dump($engine->getContentPage());
че у вас там в контенте, может где забыли что за комментировать лишнее.

Visible
25.07.2013, 19:36
Ну где у вас цифра 1 я не могу знать не видя код) Попробуйте глянуть через
var_dump($engine->getContentPage());
че у вас там в контенте, может где забыли что за комментировать лишнее.

через фуньку выводит
int(1)

Nepohelovski
25.07.2013, 19:41
http://php.net/manual/ru/function.include.php
Успешные включения, пока это не переопределено во включаемом файле, возвращают значение 1.
Почитайте: Пример #6 Использование буферизинованного вывода для включения PHP файла в строку.

lovepsone
25.07.2013, 22:54
Возьмите любой фреймворк работающий по принципу MVC и увидите что код представления, в данном случае форма html будет в одном файле а модель и контроллер будут в других файлах, это и есть грамотное программирование =)

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


Не знаю как там, но я делал так! Брал код html и сохранял в буфер(не во всех случаях), а потом где надо выводил + мне это дало возможность создавать панели и выводить так как я хочу. Так я пытался html не юзать в коде пхп. Позже я взял библиотечку smarty...
Или я опять что-то нет так понял?


Не совсем ясно что вы хотите, возможно вы имели ввиду eval

Функцию eval(), как по мне, не юзать! Лучше уже свою попробовать написать.(хотя я автора темы немного не понял)

P.S. Мб кинуть с++&Qt и перейти обратно на пхп?

Nepohelovski
26.07.2013, 01:03
P.S. Мб кинуть с++&Qt и перейти обратно на пхп?
Угу) Но только не на PHP а на C&GTK ))
Функцию eval(), как по мне, не юзать!
Да уже разобрались ему нужен был include просто мы не так поняли.
А я вот никогда не любил шаблонизатор smarty)

Visible
26.07.2013, 13:43
Спасибо большое, только вот не совсем пойму, реализацию вывода формы и обработчика в одной функции сделал. А как можно сделать ссылку на функцию обработчик в <form action='#'

lovepsone
26.07.2013, 14:11
А я вот никогда не любил шаблонизатор smarty)

А какие вы предпочитаете шаблонизаторы?

Спасибо большое, только вот не совсем пойму, реализацию вывода формы и обработчика в одной функции сделал. А как можно сделать ссылку на функцию обработчик в <form action='#'

Попробуйте ссылку на функцию записать в константу зарание, а позже добавить в form action=константа_ваша (естественно кавычки не забывайте)

P.S. Можно ли глянуть вашу работу? Сделайте репозиторий на гит или что-то вроде того! так проще будет нам и вам)

Visible
26.07.2013, 14:18
А какие вы предпочитаете шаблонизаторы?



Попробуйте ссылку на функцию записать в константу зарание, а позже добавить в form action=константа_ваша (естественно кавычки не забывайте)

P.S. Можно ли глянуть вашу работу? Сделайте репозиторий на гит или что-то вроде того! так проще будет нам и вам)

итак. Только mercurial...ссылка у вас в ЛС, доступ там же. Сейчас попробую как то так сделать

Nepohelovski
26.07.2013, 16:58
А какие вы предпочитаете шаблонизаторы?

Никакие, мне нравиться фреймворк Yii.

Visible
17.10.2013, 18:35
Подскажите пожалуйста, пытаюсь сделать вывод в таблицу данные из mysql.
Таблица создается. Но как сгенерировать запрос на основе данных ещё другой таблицы? делаю вот так:
while($data = mysql_fetch_array($qr_result)){
echo '<tr>';
echo '<td>' . $data['entry'] . '</td>';
$id_query = 'SELECT name FROM area WHERE entry ='.$data['id_area'];
$resultt = mysql_query($id_query);
echo '<td>' . $resultt . '</td>';
echo '<td>' . $data['name'] . '</td>';
echo '</tr>';
}
первая и третья колонка выводится. а вот вторая: Resource id #13. Подскажите как можно сделать поиск по другой таблице в mysql и вывести значение колонки в таблицу?

Visible
17.10.2013, 18:38
разобрался, сделал так:
while($data = mysql_fetch_array($qr_result)){
echo '<tr>';
echo '<td>' . $data['entry'] . '</td>';
$id_query = 'SELECT * FROM area WHERE entry ='.$data['id_area'];
$result = mysql_query($id_query);
$resultt = mysql_fetch_array($result);
echo '<td>' . $resultt['name'] . '</td>';
echo '<td>' . $data['name'] . '</td>';
echo '</tr>';
}
Но может есть способ проще?

Visible
18.10.2013, 18:45
Подскажите пожалуйста, есть код
echo '<html><head><title>Сортировка по категориям</title>
</head>
<body>';

echo "<center><form method='post'>
<select name='categories'>
<option value=''>-- Выберите категорию --</option>";

$result = mysql_query ("SELECT * FROM area")
or die ("<b>Query failed:</b> " . mysql_error());

while ($row = mysql_fetch_array($result)){

echo "<option value=' ".$row['entry']." '>".$row['name']."</option>";
}

echo '</select></form></center>';
echo '</body></html>';
?>
<form method="POST" name="add_line">
<table>
<tr>
<td>поле</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="save"></td>
</tr>
</table>
</form>
происходит выбор опции, опции подгружаются и таблицы (колонка name)
если отправили форму то вызываем функцию
if ('POST' === $_SERVER['REQUEST_METHOD'])
{
// Форма отправлена
add_line();
}
сама функция
function add_line()
{
if (isset($_POST['name']))
{
$name=$_POST['name'];
}
if (!empty($name))
$zapro = mysql_query ("insert into line (id_area, name) values ($row['entry'],'$name')");
if ($zapro == 'true')
{
echo "dobavleno";
}
else
{
echo "ne dob";
}
}

Но есть проблемы,
1. при добавлении записи в запросе не формируется entry выбраного меню. Проблему выделил жирным цветом. (вместо ентри подставляется пустое значение и запрос выполняется с пустым значением), уже 2 дня голову мучаю...
2. если добавить запись, а потом обновить страничку то запись добавится дважды/трижды и т.п. как правильно организовать проверочку?
3. Как правильно спрятать форму до выбора опции, и выводить после выбора опции?

Большое спасибо

lovepsone
18.10.2013, 20:25
в нутри функции у тебя нету объявления массива $row. А судя по коду он должен быть глобальным либо передавать как параметр.
function add_line()
{
global $row;
if (isset($_POST['name']))
{
$name=$_POST['name'];
}
if (!empty($name))
$zapro = mysql_query ("insert into line (id_area, name) values ($row['entry'],'$name')");
if ($zapro == 'true')
{
echo "dobavleno";
}
else
{
echo "ne dob";
}

А на счет проверочек, то их много куда пихать надо

Visible
19.10.2013, 08:18
Спасибо, но если даже объявить переменную все равно не добавляет...эффект тот же. подставляет пустое значение.
ещё недавно заметил, т.к. я IE непользуюсь долго незамечал. есть какая то проблема в стилях, в браузерах отличных от IE работает хорошо, в IE нехочет.
body{
background: #c0c0c0 url(images/header.jpg) no-repeat center top; //цвет фона
font: 0px 'trebuchet MS', Arial, Helvetica;
}

h2, p {
text-align: center;
color: #eb0d02;
text-shadow: 0 1px 0 #eb0d02;
}

a {
color: #2A679F;
}

/* Выше приведёные стили предназначены для демонстрации ----------- */

#menu, #menu ul {
margin: 0;
padding: 0;
list-style: none;
}

#menu {
width: 960px; //длина панельки
margin: 60px auto;
border: 1px solid #222;
background-color: #111;
background-image: -moz-linear-gradient(#444, #111);
background-image: -webkit-gradient(linear, left top, left bottom, from(#444), to(#111));
background-image: -webkit-linear-gradient(#444, #111);
background-image: -o-linear-gradient(#444, #111);
background-image: -ms-linear-gradient(#444, #111);
background-image: linear-gradient(#444, #111);
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
border-radius: 6px;
-moz-box-shadow: 0 1px 1px #777, 0 1px 0 #666 inset;
-webkit-box-shadow: 0 1px 1px #777, 0 1px 0 #666 inset;
box-shadow: 0 1px 1px #acca24, 0 1px 0 #666 inset;
}

#menu:before,
#menu:after {
content: "";
display: table;
}

#menu:after {
clear: both;
}

#menu {
zoom:1;
}

#menu li {
float: left;
border-right: 1px solid #222;
-moz-box-shadow: 1px 0 0 #444;
-webkit-box-shadow: 1px 0 0 #444;
box-shadow: 1px 0 0 #444;
position: relative;
}

#menu a {
float: left;
padding: 12px 30px;
color: #999;
text-transform: uppercase;
font: bold 12px Arial, Helvetica;
text-decoration: none;
text-shadow: 0 1px 0 #000;
}

#menu li:hover > a {
color: #fafafa;
}

*html #menu li a:hover { /* Только для IE6 */
color: #fafafa;
}

#menu ul {
margin: 20px 0 0 0;
_margin: 0; /*Только для IE6*/
opacity: 0;
visibility: hidden;
position: absolute;
top: 38px;
left: 0;
z-index: 9999;
background: #444;
background: -moz-linear-gradient(#444, #111);
background-image: -webkit-gradient(linear, left top, left bottom, from(#444), to(#111));
background: -webkit-linear-gradient(#444, #111);
background: -o-linear-gradient(#444, #111);
background: -ms-linear-gradient(#444, #111);
background: linear-gradient(#444, #6f8314);
-moz-box-shadow: 0 -1px rgba(255,255,255,.3);
-webkit-box-shadow: 0 -1px 0 rgba(255,255,255,.3);
box-shadow: 0 -1px 0 rgba(255,255,255,.3);
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
-ms-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}

#menu li:hover > ul {
opacity: 1;
visibility: visible;
margin: 0;
}

#menu ul ul {
top: 0;
left: 150px;
margin: 0 0 0 20px;
_margin: 0; /*Только для IE6*/
-moz-box-shadow: -1px 0 0 rgba(255,255,255,.3);
-webkit-box-shadow: -1px 0 0 rgba(255,255,255,.3);
box-shadow: -1px 0 0 rgba(255,255,255,.3);
}

#menu ul li {
float: none;
display: block;
border: 0;
_line-height: 0; /*Только для IE6*/
-moz-box-shadow: 0 1px 0 #111, 0 2px 0 #666;
-webkit-box-shadow: 0 1px 0 #111, 0 2px 0 #666;
box-shadow: 0 1px 0 #111, 0 2px 0 #666;
}

#menu ul li:last-child {
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}

#menu ul a {
padding: 10px;
width: 130px;
_height: 10px; /*Только для IE6*/
display: block;
white-space: nowrap;
float: none;
text-transform: none;
}

#menu ul a:hover {
background-color: #0186ba;
background-image: -moz-linear-gradient(#acca24, #6f8314);
background-image: -webkit-gradient(linear, left top, left bottom, from(#acca24), to(#6f8314));
background-image: -webkit-linear-gradient(#acca24, #6f8314);
background-image: -o-linear-gradient(#acca24, #6f8314);
background-image: -ms-linear-gradient(#acca24, #6f8314);
background-image: linear-gradient(#acca24, #6f8314);
}

#menu ul li:first-child > a {
-moz-border-radius: 3px 3px 0 0;
-webkit-border-radius: 3px 3px 0 0;
border-radius: 3px 3px 0 0;
}

#menu ul li:first-child > a:after {
content: '';
position: absolute;
left: 40px;
top: -6px;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #444;
}

#menu ul ul li:first-child a:after {
left: -6px;
top: 50%;
margin-top: -6px;
border-left: 0;
border-bottom: 6px solid transparent;
border-top: 6px solid transparent;
border-right: 6px solid #3b3b3b;
}

#menu ul li:first-child a:hover:after {
border-bottom-color: #acca24;
}

#menu ul ul li:first-child a:hover:after {
border-right-color: #acca24;
border-bottom-color: transparent;
}

#menu ul li:last-child > a {
-moz-border-radius: 0 0 3px 3px;
-webkit-border-radius: 0 0 3px 3px;
border-radius: 0 0 3px 3px;
}



// для таблиц

table {
*border-collapse: collapse; /* Для IE7 и страше */
border-spacing: 0;
}

th:first-child {
-moz-border-radius: 6px 0 0 0;
-webkit-border-radius: 6px 0 0 0;
border-radius: 6px 0 0 0;
}

th:last-child {
-moz-border-radius: 0 6px 0 0;
-webkit-border-radius: 0 6px 0 0;
border-radius: 0 6px 0 0;
}
так хочется разобраться, но ничего не выходит..

Visible
19.10.2013, 15:35
в нутри функции у тебя нету объявления массива $row. А судя по коду он должен быть глобальным либо передавать как параметр.
function add_line()
{
global $row;
if (isset($_POST['name']))
{
$name=$_POST['name'];
}
if (!empty($name))
$zapro = mysql_query ("insert into line (id_area, name) values ($row['entry'],'$name')");
if ($zapro == 'true')
{
echo "dobavleno";
}
else
{
echo "ne dob";
}

А на счет проверочек, то их много куда пихать надо

уже проблему решил вот так:

echo "<center><form method='post'>
<select name='action'>
<option value=''>-- Выберите отделение --</option>";

$result = mysql_query ("SELECT * FROM area")
or die ("<b>Query failed:</b> " . mysql_error());

while ($row = mysql_fetch_array($result)){

echo "<option value=' ".$row['entry']." '>".$row['name']."</option>";
}

echo '</select>';

echo '<tr><br>';
echo '<td>поле</td>';
echo '<td><input type="text" name="name"></td>';
echo '</tr>';
echo '<tr>';
echo '<td><input type="submit" name="submit" value="save"></td>';
echo '</tr>';
echo '</form></center>';
осталось разобраться с проверочками, да и с отображением на IE... в функцию передается action, выделил жирным. и чуть дописал функцию, теперь она выглядит так:
function add_line()
{
if (isset($_POST['name']))
{
$name=$_POST['name'];
$action=$_POST['action'];
}
if (empty($name) || empty($action))
{
echo "балалайка, пустые значения.";
}
else
{
$zapro = mysql_query ("insert into line (id_area, name) values ('$action','$name')");
if ($zapro == 'true')
{
echo "Успешно добавлено.";
}
else
{
echo "не добавлено";
}
}
}

Visible
19.10.2013, 16:16
пытался сделать вторичный вывод, на основе первичного, неполучилось(
echo "<center><form method='POST'>
<select name='area'>
<option value=''>-- Выберите отделение --</option>";

$result = mysql_query ("SELECT * FROM area")
or die ("<b>Query failed:</b> " . mysql_error());

while ($row = mysql_fetch_array($result)){

echo "<option value=' ".$row['entry']." '>".$row['name']."</option>";
}

echo '</select>';

echo "<select name='line'>
<option value=''>-- Выберите линию --</option>";

$resultr = mysql_query ("SELECT * FROM line where id_area=' ".$_POST['area']." ' ")
or die ("<b>Query failed:</b> " . mysql_error());

while ($roww = mysql_fetch_array($resultr)){

echo "<option value=' ".$roww['entry']." '>".$roww['name']."</option>";
}

echo '</select>';

По всей видимости с этим тоже дня два буду мучаться.

lovepsone
19.10.2013, 18:21
Скоро я с больнички выпишусь, тогда и помогу... А так интернета фактически нет, а с телефона плохо писать, да и код плохо понимать!

Visible
19.10.2013, 19:06
Скоро я с больнички выпишусь, тогда и помогу... А так интернета фактически нет, а с телефона плохо писать, да и код плохо понимать!
Большое спасибо, я уже немного разобрался, после выбора первого выпадающего списка, чтобы подгрузился второй, нужен ajax запрос. фактически без него после выбора первого меню, перезагружаем страницу и только потом подгружается второй список, на основе выбранного первого списка. В действительности подгрузка сейчас происходит по этому методу, но нужно ajax подгрузку. С ним я вообще никак не знаком. пытаюсь вникнуть хоть в что то.

SergiK_KilleR
30.10.2013, 13:29
что передает поле $row['entry'] ? автоинкрементное значение?
переписанный вариант того что вы пытались сделать. Проверку введенных данных (GET/POST) желательно делать до передачи в какие-либо функции, это упростит понимание того что делает сама функция и отпадет надобность дополнительных проверок в самих функциях.

<?
function add_line($name){
global $row;

$query = sprintf(
"INSERT INTO `line` (`id_area`, `name`) VALUES ('%d','%s')",
$row['entry'],
mysql_real_escape_string($name)
);
$res = mysql_query($query);

if(!$res){
exit("<b>Query failed:</b> " . mysql_error());
}

return true;
}

if(isset($_POST['add_line'])){
$name = isset($_POST['name']) ? trim($_POST['name']) : null;
if($name){
add_line($name);
}
}
?>
<html><head><title>Сортировка по категориям</title>
</head>
<body>
<center>
<form method="post">
<select name="categories">
<option value=''>-- Выберите категорию --</option>
<?
$result = mysql_query ("SELECT * FROM area")
or die ("<b>Query failed:</b> " . mysql_error());
while ($row = mysql_fetch_array($result)){
$selected = (isset($_POST['categories']) && $row['entry'] == intval($_POST['categories'])) ? " selected" : "";
echo "<option value='".$row['entry']."'".$selected.">".$row['name']."</option>";
}
?>
</select>
</form>
</center>

<form method="POST" name="add_line">
<table>
<tr>
<td>поле</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="save"></td>
</tr>
</table>
</form>
</body></html>

в приведенном мной примере переменная $row должна быть объявлена до вызова функции add_line($name).

Visible
05.11.2013, 14:42
что передает поле $row['entry'] ? автоинкрементное значение?
переписанный вариант того что вы пытались сделать. Проверку введенных данных (GET/POST) желательно делать до передачи в какие-либо функции, это упростит понимание того что делает сама функция и отпадет надобность дополнительных проверок в самих функциях.

<?
function add_line($name){
global $row;

$query = sprintf(
"INSERT INTO `line` (`id_area`, `name`) VALUES ('%d','%s')",
$row['entry'],
mysql_real_escape_string($name)
);
$res = mysql_query($query);

if(!$res){
exit("<b>Query failed:</b> " . mysql_error());
}

return true;
}

if(isset($_POST['add_line'])){
$name = isset($_POST['name']) ? trim($_POST['name']) : null;
if($name){
add_line($name);
}
}
?>
<html><head><title>Сортировка по категориям</title>
</head>
<body>
<center>
<form method="post">
<select name="categories">
<option value=''>-- Выберите категорию --</option>
<?
$result = mysql_query ("SELECT * FROM area")
or die ("<b>Query failed:</b> " . mysql_error());
while ($row = mysql_fetch_array($result)){
$selected = (isset($_POST['categories']) && $row['entry'] == intval($_POST['categories'])) ? " selected" : "";
echo "<option value='".$row['entry']."'".$selected.">".$row['name']."</option>";
}
?>
</select>
</form>
</center>

<form method="POST" name="add_line">
<table>
<tr>
<td>поле</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="save"></td>
</tr>
</table>
</form>
</body></html>

в приведенном мной примере переменная $row должна быть объявлена до вызова функции add_line($name).

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

Кот ДаWINчи
06.11.2013, 09:50
спасибо, я уже подумал, лучше не подгружать через функции инсерт в базу, что то мне разонравилось реализация через функции. а с сохранением селекта, очень интересно, попробую разобраться.

сейчас все пытаюсь jquery в селект подгружать научиться, динамически создавать запрос и выводить в тег селект.

не стоит сравнивать мягкое с соленым! php и "селект" работают на стороне сервера. jquery - отрабатывает на стороне пользователя в браузере. Так что все эти навороты требуют полноценного движка. В котором немалую роль будет занимать согласование между частями самого движка и защита от взлма (или просто неправильных запросов от пользователя рушащих данные).

а вот отказ от функций это шаг назад.

Я бы посоветовал не отказываться от них, а научиться их строить и использовать правильно. Потом же перейти к созданию собственных классов. так как методы в классах - это по своей сути и есть те же самые функции.

Visible
06.11.2013, 11:52
Я не то чтобы от них отказался, я подумал что использовать функцию в данном случае не рентабельно. Таких функций требуется очень много и все не похожи друг на друга, и тем более кода там по пять десять строчек. Думаю лучше это выводить сразу на страницу. По мере расширения функционала, возможно по требуется их исполтзование. Зато попробывал, получил результат, и научился их исполтзовать. Я понимаю что нужна какая то защита он инекций и т.п. сейчас пробую , верней свой функционал уже перевел под pdo, а авторизацию еще пока не получается перевести. Но вроде уже кое какие мысли пришли как сделать. Хочется полностью перевести на пдо и научиться аяксу или jquery.

Visible
21.11.2013, 18:16
Подскажите пожалуйста, есть функция<script>
function showLine(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","file.php?q="+str,true);
xmlhttp.send();
}
</script>
есть форма с селектом, после выбора в форме вызывается функция,
в нее передается параметр и в файле .php создается новый селект на основе результата выбора, как в функцию передавать несколько параметров, например после выбора первого селекта создается/заполняется второй, после выбора второго третий и т.д. результат заполнения каждого последующего зависит от выбора предыдущих.