Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.06.2015, 15:27
Новичок на форуме
Отправить личное сообщение для danial_pastushenko Посмотреть профиль Найти все сообщения от danial_pastushenko
 
Регистрация: 06.06.2015
Сообщений: 6

Проблема со взятием value с текстовых полей.
Здравствуйте!
Ситуация такая: Вывожу текстовые поля с атрибутами, взятыми из БД.
<?php
$sql = mysql_query("SELECT * FROM closetest WHERE name='Механика'");
while ($res = mysql_fetch_array($sql)) {
		$id = $res['id'];
		$title = $res['title'];
		echo "<h1>" .$id. ". " .$title. "</h1><br><input type=\"text\" name=\"" .$id. "\" class=\"tt\" value=\"\"><br>";
}
echo "<input type=\"button\" value=\"Узнать результат\" id=\"finalbutton\">";
?>


Далее на нажатие button я написал get запрос:
$('.tt').change(function(){
var textname = this.name;
var textvalue = this.value;
$('[id="finalbutton"]').click(function(){
$.get("openresults.php",{name:textname,value:textvalue},function(result){ $("#final").html(result);});
});
});


Если значение, введенное в input совпадает со значение в БД, то выводим слово "ок".
<?php
$val = $_GET['value'];
$name = $_GET['name'];
$sql = mysql_query("SELECT answer FROM closetest");
while($res = mysql_fetch_array($sql)) {
$answer = $res['answer'];
if ($val == $answer) {
$y = "ok";
}
echo $y. "<br>";
}
?>

А проблема в том, что выводится только 1 слово ок, для того поля, которое заполнял последним. Нужно, чтобы каждое "ок" было в новой строке, ну или через запятую. Мне кажется ошибка в последнем php коде.
Есть мысли, как решить проблему?
Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 21.06.2015, 15:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

danial_pastushenko,
вы в курсе что ваш код назначает $('[id="finalbutton"]') бесконечное число кликов -- все эти запросы уходят на ваш сервер -- все приходят -- все друг дружку затирают, так как выводятся в одно место -- и вы видите только последний результат.
Сообщение от danial_pastushenko
, чтобы каждое "ок" было в новой строке, ну или через запятую.
$("#final").html($("#final").html() + $("<br>")+result)
Ответить с цитированием
  #3 (permalink)  
Старый 21.06.2015, 16:03
Новичок на форуме
Отправить личное сообщение для danial_pastushenko Посмотреть профиль Найти все сообщения от danial_pastushenko
 
Регистрация: 06.06.2015
Сообщений: 6

Спасибо! А как поступить правильно с $('[id="finalbutton"]') ?
Ответить с цитированием
  #4 (permalink)  
Старый 21.06.2015, 16:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

danial_pastushenko,
смотря чего вы хотите ?
может вам это нужно http://api.jquery.com/serialize/
Ответить с цитированием
  #5 (permalink)  
Старый 21.06.2015, 16:39
Новичок на форуме
Отправить личное сообщение для danial_pastushenko Посмотреть профиль Найти все сообщения от danial_pastushenko
 
Регистрация: 06.06.2015
Сообщений: 6

Вообще нужно сделать счетчик (если value совпадает с полем БД, то i++).
Ответить с цитированием
  #6 (permalink)  
Старый 21.06.2015, 16:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

danial_pastushenko,
послали все поля с помощью serialize на сервере обработали вернули результат сколько совпало
Ответить с цитированием
  #7 (permalink)  
Старый 21.06.2015, 16:43
Новичок на форуме
Отправить личное сообщение для danial_pastushenko Посмотреть профиль Найти все сообщения от danial_pastushenko
 
Регистрация: 06.06.2015
Сообщений: 6

Ок, спасибо большое!
Ответить с цитированием
  #8 (permalink)  
Старый 21.06.2015, 16:59
Аватар для Sigizmund2012
Профессор
Отправить личное сообщение для Sigizmund2012 Посмотреть профиль Найти все сообщения от Sigizmund2012
 
Регистрация: 16.07.2014
Сообщений: 267

Уже не первый раз встречаю в php коде присваивание переменной в качестве условия цикла, типа while($res = mysql_fetch_array($sql)). Я так понимаю, что в условии всегда будет true и его как-то по-другому надо останавливать, но в теле цикла нет break или каких-то других останавливающих его условий. Если тут есть знатоки php, объясните, как этот код работает. Это вообще нормальная практика, или так только быдлокодеры делают?
Ответить с цитированием
  #9 (permalink)  
Старый 21.06.2015, 18:48
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Sigizmund2012
объясните, как этот код работает
while($res = mysql_fetch_array($sql)) - хотя в данном случае mysql_fetch_array и близко не нужно, так как возвращает два идентичных набора данных, один из которых имеет строковые ключи, а второй числовые. Это бездумное использование mysql_fetch_array() следствие изучение РНР по мультикам. В контексте использования тогда уж mysql_fetch_assoc(), но в любом случае эти две функции возвращают true (вернее результат будет true) только тогда, когда возвращается ряд данных из полученного sql-ресурса, в противном случае false, то есть не "в условии всегда будет true и его как-то по-другому надо останавливать". Выполнении этих функций не только возвращает ряд данных, но и сдвигает указатель в ресурсе на следующую строку, то есть после выборки всех рядов следующая за этим итерация получит false.

Последний раз редактировалось laimas, 22.06.2015 в 08:35.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма с изменяемым количеством полей, проблема с удалением rarog Элементы интерфейса 1 25.02.2015 11:52
Проблема с проверкой полей baskethome Ваши сайты и скрипты 1 26.08.2014 04:55
Поочередная активация текстовых полей Meecrobe Общие вопросы Javascript 5 04.11.2011 07:24
Проблема с проверкой полей в форме Eth Общие вопросы Javascript 7 19.08.2010 17:41
Проблема с сортировкой полей MUTOgen jQuery 0 10.08.2009 01:37