[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Автогенерация поля
sapun
Доброго времени суток! Хочу сделать следующее, при вводе значение в поле, чтоб отправлялся запрос в бд и полученный результат выводился в другом поличке. В php я новичок. Вот что получилось, подскажите где ошибка(
js
window.addEvent('domready',   function() {
var url = 'index.php?option=com_chronoforms&chronoform=ttt&event=ajaxEvent&format=raw';
var article = $('article');
article.addEvent('blur', function() {
var value = article.value.trim();
var jSonRequest = new Request.JSON({
url : url,
method : 'get',
data : {article : article.value},
onComplete : function(r) {
if (r.email_ok) {
article.setStyle('background-color','green');
}
else {
article.setStyle('background-color','red');
}
}
}
).send();
});
});


php
<?php
// clean up the JSON message

$article = strtolower(trim($_GET['article']));
// check that the article field isn't empty
//$response;

if ( $article ) {
// Check the database
$db =& JFactory::getDBO();
$query = "SELECT model FROM `#__t_models` WHERE LOWER(`article`) = ".$db->quote($article).";";
$db->setQuery($query);
$response = $db->loadResult();
}
$response = array('article_ok' => $response );
//send the reply

echo json_encode($response);
// stop the from running
$MyForm->stopRunning = true;
die;
?>




Спустя 2 минуты, 23 секунды (29.08.2011 - 22:42) Игорь_Vasinsky написал(а):
раз новичёк - то напрасно на классы сразу попёр.

Есть ошибки, нотисы, варнинги? что в и тоге происходит, не происходит... кофейная гуща закончилась.

Спустя 4 минуты, 26 секунд (29.08.2011 - 22:47) sapun написал(а):
Не пишет вроде ничего, но вроде и не выдает. Мне кажется ошибка в синтаксисе, может глянуть если разбираетесь?

Спустя 11 минут, 51 секунда (29.08.2011 - 22:58) Игорь_Vasinsky написал(а):
$query = "SELECT model FROM `#__t_models` WHERE LOWER(`article`) = ".$db->quote($article).";";

и вообще допиши так

$query = "SELECT model FROM `#__t_models` WHERE LOWER(`article`) = ".$db->quote($article)  or die(mysql_error());
- если есть глюк и есть метод у класса который его выведет - то получишь ошибку если запрос кривоват.

Update:
$query = "SELECT * FROM `#__t_models` WHERE LOWER(`article`) = ".$db->quote($article)  or die(mysql_error());

Спустя 12 минут, 50 секунд (29.08.2011 - 23:11) sapun написал(а):
C запросом проблемы нет, так как пробывал выводить с перезагрузкой страницы, выводит данные без проблем

Спустя 4 минуты, 29 секунд (29.08.2011 - 23:16) Игорь_Vasinsky написал(а):
закоментируй
var url = 'index.php?option=com_chronoforms&chronoform=ttt&event=ajaxEvent&format=raw';

и пропиши в action формы

а отладчик JS ругается?

на Хроме F12
в мозилле FireBug

Спустя 7 минут, 53 секунды (29.08.2011 - 23:24) sapun написал(а):
Я этот код переделывал с примера, линк тоже правильный.
Возникает следующих два вопроса
1. Надо ли мне это
 if (r.email_ok) {
article.setStyle('background-color','green');
}
else {
article.setStyle('background-color','red');
}

2. Как правильно вывести и где в коде полученную переменную из запроса?

Спустя 10 минут, 39 секунд (29.08.2011 - 23:34) Игорь_Vasinsky написал(а):
переменная article
а всё остальное это подсветка

а вывод в инпут

JQuery подключён?

если да то

$("#id_input").val(article);

Спустя 4 минуты, 2 секунды (29.08.2011 - 23:38) Игорь_Vasinsky написал(а):
 onComplete : function() 
{
$("#id_input").val(article);
}

Спустя 11 минут, 53 секунды (29.08.2011 - 23:50) sapun написал(а):
Подсвечивает красным( и переменную не выводит(

Спустя 2 минуты, 53 секунды (29.08.2011 - 23:53) Игорь_Vasinsky написал(а):
#id_input - ID твоего инпута

Спустя 4 минуты (29.08.2011 - 23:57) Игорь_Vasinsky написал(а):
var article = $('article');  

это ты как тег указал, нужно либо класс, либо ID

.article
#article

Спустя 8 часов, 46 минут, 5 секунд (30.08.2011 - 08:43) sapun написал(а):
Вообщем к чему пришел. Это пример, который я ободрал выполнял следующую логику. Проверял корректность email адреса в базе данных и в случае если он существует подсвечивал зеленым, если нет подсвечивал красным. Вот что у меня получилось после изменения по свои нужды.
html
<div class="form_item">
<div
class="form_element cf_textbox">
<label
class="cf_label"
style="width: 150px;">Article</label>
<input
class="cf_inputbox" maxlength="150" size="30" title="" id="email" name="email" type="text"/>
<input
class="cf_inputbox" maxlength="150" size="30" title="" id="pole" name="pole" type="text"/>
</div>
<div
class="cfclear"> </div>
</div>

php
<?php
// clean up the JSON message

$email = strtolower(trim($_GET['email']));
// check that the email field isn't empty
$response = false;
if ( $email ) {
// Check the database
$db =& JFactory::getDBO();
$query = "SELECT model FROM `#__models` WHERE LOWER(`article`) = ".$db->quote($email).";";
$db->setQuery($query);
$response = (bool) $db->loadResult();
}
$response = array('email_ok' => $response );
//send the reply

echo json_encode($response);
// stop the from running
$MyForm->stopRunning = true;
die;
?>

js
window.addEvent('domready',   function() {
// set the url to send the request to
var url = 'index.php?option=com_chronoforms&chronoform=ttt&event=ajaxEvent&format=raw';
var email = $('email');
email.addEvent('blur', function() {
// clear any background color from the input
//email.setStyle('background-color', 'white');
// check that the email address is valid
//regex = /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i;

var value = email.value.trim();
//if (value.length > 6 && regex.test(value)) {
//if (value.length > 3 ) {
// if all is well send the JSON request

var jSonRequest = new Request.JSON({
url : url,
method : 'get',
data : {email : email.value},
onComplete : function(r) {
// check the result and set the background
// color
//console.log®;

if (r.email_ok) {
email.setStyle('background-color','green');
}
//else {
// email.setStyle('background-color','red');
//}

}
}
).send();
// } else {
// if this isn't a valid email set background color
// red
// email.setStyle('background-color', 'red');
// }

});
});


После выполнения получил следующие вывод, запрос выполняет корректно, так как поле при правильно введенном значении подсвечивается зеленым.
Осталось два не выясненных вопроса как для меня новичка
1. В php у меня результат возвращается как булевое значение. Как переделать чтоб возвращался результат из запроса, а не истина или ложь?
2. Как вернуть полученный результат в инпут "pole"?
Помогите пожалуйста, а то совсем сбился с толку

Спустя 11 часов, 51 минута, 38 секунд (30.08.2011 - 20:35) sapun написал(а):
Никто не может подсказать?(((

Спустя 41 минута, 1 секунда (30.08.2011 - 21:16) Игорь_Vasinsky написал(а):
ты запутал.... у тя JS не работает или PHP?
Давай по пунктам 1,2,3 и т.д.

Спустя 24 минуты, 51 секунда (30.08.2011 - 21:41) sapun написал(а):
Код работает, но делает не то что мне надо. Он подсвечивает зеленым инпут в случае нахождения значения в базе, а мне надо чтоб в инпут='pole'попадало значения выбранное из базы. Например, ввел фамилию в первый инпут, оно вернуло должность во второй инпут

Спустя 23 минуты (30.08.2011 - 22:04) sapun написал(а):
Я так понимаю, что проблема с выводом. Вывожу так
window.addEvent('domready',   function() {
var url = 'index.php?option=com_chronoforms&chronoform=ttt&event=ajaxEvent&format=raw';
var email = $('email');
email.addEvent('blur', function() {
var value = email.value.trim();
var jSonRequest = new Request.JSON({
url : url,
method : 'get',
data : {email : email.value},
onComplete : function(r) {
$("#pole").val(r.email_ok);
}
}
).send();
});
});

Такие выводы сделал потому что фаербаг дает ответ {"email_ok":"K7704W"}. Я так понимаю проблема с джава скриптом
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.