|
|
|
| возник такой вопрос:) обращаюсь к умным людям за советом:)
нужно чтобы при выборе номера вопроса в значении select, текст вопроса отображался в форме html. текст вопроса должен браться из базы данных без перезагрузки странички.
<body>
<script language="JavaScript">
function changeText(form) {
selection = form.question.options[form.question.selectedIndex].value;
<?php
$b=$POST["selection"];
/* Создаем соединение */
mysql_connect("localhost", "root", "") or die ("Не могу создать соединение");
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db("uchet") or die (mysql_error());
/* Составляем запрос для извлечения данных из полей таблицы */
$query = "SELECT question FROM otvet WHERE №question=$b";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());
/* Выводим данные из таблицы */
echo "document.form1.Edit.value ="$res;
?> }
</script>
№ Вопроса
<form action="2.php" method="post" name="form1">
<select size=1 name="question" onChange="changeText(this.form)">
<option value="1">1(1)</option>
<option value=2>2(1)</option>
<option value=3>3(1)</option>
</select>
<br>
<textarea name="Edit" overflow: hidden readonly style="border:2px solid white" cols=32 rows=5></textarea>
<br><br><br>
Ответ<br>
<textarea name="otvet" cols=32 rows=5></textarea>
<input type=submit value="выполнить" >
<input type=submit value="Показать правильный результат" >
</form>
</body> | |
|
|
|
|
|
|
|
для: enodik
(05.03.2011 в 13:52)
| | Здесь придется пользоваться AJAX-соединением. Т.е. формировать JavaScript-библиотеку или пользоваться готовой, которая по событию выбора вопроса будет обращаться на сервер (к скрипту), получать ответ и размещать его в заранее приготовленном div-блоке. В общем основная работа тут ложиться на JS, PHP-код сводится просто к выдаче результатов по GET-параметру. | |
|
|
|
|
|
|
|
для: cheops
(06.03.2011 в 14:37)
| | реализовать то что я хотела у меня получилось:) но столкнулась с новой проблемой.. есть форма, которая при нажатии кнопки обращается к функции библиотеки ajax, и выводит результат работы без перезагрузки странички, но нажать на нее можно почему то только один раз, при повторном нажатии она не реагирует.подскажите пожалуйста как можно это исправить:) | |
|
|
|
|
|
|
|
для: enodik
(14.03.2011 в 11:45)
| | Скорее всего у вас включена блокировка кнопок, после отправки. Нужно копать JavaScript-код. | |
|
|
|
|
|
|
|
для: cheops
(14.03.2011 в 13:08)
| | прошу прощенья за корявый код, я в этом еще новичок.
файл, который содержит саму форму:
<html>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
<script src='jQuery.min.js' type='text/javascript'></script>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<script language="JavaScript">
<!--
function changeText(form) {
selection = form.question.options[form.question.selectedIndex].value; document.form1.Edit.value =selection;
otv=form.question.options[form.question.selectedIndex].text; document.form1.resultat.value =otv;
}
//-->
</script>
<?php
/* Создаем соединение */
mysql_connect("localhost", "root","") or die ("Не могу создать соединение");
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db("uchet") or die (mysql_error());
$query = "SELECT question, namber, true_results FROM otvet";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());
echo "<form action='' method='post' name='form1'>";
echo "<select size=1 name='question' onChange='changeText(this.form)' >";
do
{
printf("<option value='%s'>%s</option>",$myrow["question"],$myrow["namber"]);
}
while ($myrow = mysql_fetch_array($res));
echo "</select>";
echo "<textarea name='Edit' overflow: hidden readonly style='border:2px solid white' cols=32 rows=5></textarea>";
?>
<input type="text" name="resultat" id="resultat">
<textarea name="otvet" id="otvet" cols=32 rows=5></textarea>
<input type=button value="выполнить" onclick="send();" >
<input type=button value="Показать правильный результат" onclick="tresult();">
</form>
<div id="result"></div>
</body>
</html>
ajax файл:
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
function send()
{
//Получаем параметры
var data = $('#otvet').val();
var data2 = $('#resultat').val();
// Отсылаем паметры
$.ajax({
type: "POST",
url: "SendData.php",
data: "data="+data,
data2: "data2="+data2,
// Выводим то что вернул PHP
success: function(html)
{
//предварительно очищаем нужный элемент страницы
$("#result").empty();
//и выводим ответ php скрипта
$("#result").append(html);
}
});
}
и файл самой функции SendData.php
<?
$q2=$_POST[data2]; //пересылаем № выбранного вопроса
$q = $_POST[data]; // пересылаем селект запрос ответа
$a = str_word_count($q, 1); // разбиваем ответ на массив отдельных слов
echo $q;
if (@strcasecmp($a[0], "select") <> 0) echo "<script language=javascript>window.alert('Оператор должен начинаться с SELECT');</script>";
elseif (stripos($q, "from") === false) echo "<script language=javascript>window.alert('В предложении отсутствует FROM');</script>";
else{
mysql_connect("localhost","root", "") or die ("Не могу создать соединение");/* Создаем соединение */
mysql_select_db("uchet") or die (mysql_error());/* Выбираем 2 базу данных. Если произойдет ошибка - вывести ее */
$query2 = 'SELECT true_results FROM otvet WHERE namber=".$q2" ';
$res2 = mysql_query($query2) or die(mysql_error());
$myrow = mysql_fetch_array($res2);
printf("%s ",$myrow["true_results"]);
print_r ($b); echo "<br>";
print_r ($a); echo "<br>";
}
?>
и еще появились вопросы, почему то переменная $q2=$_POST[data2] получается пустой, хотя по аналогии $q=$_POST[data], берет значение из формы?
и еще вопрос, $query2 = 'SELECT true_results FROM otvet WHERE namber=".$q2" '; нужно заключать в кавычки числовую переменную? | |
|
|
|
|
|
|
|
для: enodik
(14.03.2011 в 14:52)
| | Хм... вроде ничего такого не видно, а кнопка нажимается визуально или даже нажать нельзя?
>и еще появились вопросы, почему то переменная $q2=$_POST[data2] получается пустой, хотя
>по аналогии $q=$_POST[data], берет значение из формы?
Посмотрите alert() возвращает ли следующая строка значение
var data2 = $('#resultat').val();
|
>и еще вопрос, $query2 = 'SELECT true_results FROM otvet WHERE namber=".$q2" '; нужно
>заключать в кавычки числовую переменную?
Можно не помещать, на результате это не отразится.
PS Под новые вопросы лучше новые темы заводить - иногда нужно задать встречные вопросы и в одной теме обсуждать несколько вопросов неудобно. | |
|
|
|
|
|
|
|
для: cheops
(14.03.2011 в 15:01)
| | я выбираю вопрос в селекте, ввожу ответ в поле ввода, нажимаю кнопку, она выводит результат. потом я снова выбираю вопрос в селекте, ввожу в поле ответ, нажимаю на кнопку, а она не срабатывает почему то..
alert возвращает значение, но почему то оно в SendData.php не передается | |
|
|
|
|
|
|
|
для: enodik
(14.03.2011 в 15:08)
| | >alert возвращает значение, но почему то оно в SendData.php не передается
Выведите дамп массива $_POST - в нем что вообще есть?
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(14.03.2011 в 15:11)
| | в нем есть значение поля, в которое мы ввели ответ, т.е. $q = $_POST[data];
а $q2 = $_POST[data2]; вообще нет | |
|
|
|
|
|
|
|
для: enodik
(14.03.2011 в 15:18)
| | У вас ошибочно вызывается метод ajax
$.ajax({
type: "POST",
url: "SendData.php",
data: "data="+data,
data2: "data2="+data2,
// Выводим то что вернул PHP
success: function(html)
{
//предварительно очищаем нужный элемент страницы
$("#result").empty();
//и выводим ответ php скрипта
$("#result").append(html);
}
});
}
| Дело в том, что data - это параметр функции, поэтому data2 не допускается - такого параметра нет. Все POST-параметры нужно передавать через data сколько бы их ни было. Т.е. нужно как-то так поступать (в синтаксисе могу врать)
data: {'data': data, 'data2': data2}
|
| |
|
|
|
|
|
|
|
для: cheops
(14.03.2011 в 15:30)
| | спасибки:)с одной частью вопрос решился:) | |
|
|
|
|
|
|
|
для: cheops
(14.03.2011 в 15:30)
| | скажите пожалуйста, а можно в ajax файле использовать 2 функции? столкнулась с аналогичной проблемой. получается что параметр r = $('#resultat').val() функции res() не передается php файлу обработчику.
function send()
{
//Получаем параметры
var data = $('#otvet').val();
var data2 = $('#resultat').val();
// Отсылаем паметры
$.ajax({
type: "POST",
url: "SendData.php",
data: {'data': data, 'data2': data2},
// Выводим то что вернул PHP
success: function(html)
{
//предварительно очищаем нужный элемент страницы
$("#result").empty();
//и выводим ответ php скрипта
$("#result").append(html);
}
});
}
function res()
{
//Получаем параметры
var r = $('#resultat').val();
// Отсылаем паметры
$.ajax({
type: "POST",
url: "ProvRes.php",
r: {'r': r},
// Выводим то что вернул PHP
success: function(html)
{
//предварительно очищаем нужный элемент страницы
$("#result2").empty();
//и выводим ответ php скрипта
$("#result2").append(html);
}
});
} | |
|
|
|
|
|
|
|
для: enodik
(15.03.2011 в 18:20)
| | Вместо r: {'r': r}, нужно писать data: {'r': r}, - data это название параметра, его нельзя изменять по собственной инициативе. | |
|
|
|
|
|
|
|
для: cheops
(15.03.2011 в 18:32)
| | а в var мы можем свои переменные объявлять? или нужно чтобы data тоже присутствовала? | |
|
|
|
|
|
|
|
для: enodik
(15.03.2011 в 18:44)
| | В такой форме должно быть четыре параметра: первый - type, второй - url, третий - data, четвертый - функция. type, url и data остаются без изменений, их значения вы можете изменять. Свои переменные можно объявлять в var за пределами вызова ajax и в значении параметра data. | |
|
|
|
|
|
|
|
для: enodik
(14.03.2011 в 15:08)
| | >я выбираю вопрос в селекте, ввожу ответ в поле ввода, нажимаю кнопку, она выводит
>результат. потом я снова выбираю вопрос в селекте, ввожу в поле ответ, нажимаю на кнопку,
>а она не срабатывает почему то..
Добавьте alert() выводы в JS-скрипты и проследите выполняются ли JS-функции и до какого места. Если они выполняются корректно - нужно разбираться с обработчиками, что им передается в качестве параметров и что они возвращают в качестве результата. | |
|
|
|