[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ajax+PHP
rooor
Здравствуйте.

Юзаю аякс с прототипом, пока только начал разбираться...

Клиентский запрос:
var url    = 'test.php';
var params = 'user_name='+$F('user_name');
var ajax = new Ajax.Updater(
{success: 'Result'},
url,
{method: 'get',
parameters: params,
onFailure: reportError}
);


Т.е. отсылаем серверу имя пользователя, по которому он делает запрос в БД и выводит результаты: имя, логин, пароль и т.д...
mysql_query("SELECT * FROM `users` WHERE `name`='".$_REQUEST['user_name']."'");



Так вот вопрос - как получить эти данные?



Спустя 19 минут, 48 секунд (30.09.2011 - 13:56) m4a1fox написал(а):
Знаешь что самое веселое! За 3 дня с начала читания и тыканья в ajax (сегодня - 4 - но - перерыв), я задавался этим вопросом! И вот что! Вот тут у тебя

var ajax = new Ajax.Updater(
{success: 'Result'},
url,
{method: 'get',
parameters: params,
onFailure: reportError}
);


как мне кажется (прошу заметить - кажется), не правильно, ибо, коли это не загрузчик, (просто я его так же инициализировал(библиотека просто)), то я бы сделал - так

$.ajax({
url: тут адресс,
type: get,
data {name: params},
success: function(data){
alert(data);
}
}
);


Дальше, запрос...

mysql_query("SELECT * FROM `users` WHERE `name`='".$_GET['user_name']."'");


Соединение есть? Наверняка есть, но лучше проверить! А вот теперь самое интересное.
вот это

success: function(data){
alert(data); - вот тут то, что попадет в строчку выше,\


А в строчку выше попадет то, что вернет php запрос к БД. Если быть совсем точнее, то вот такой запрос будет нормой.


$user_name = !empty($_GET['user_name']) ? mysql_real_escape_string($_GET['user_name']) : NULL;
if($user_name != NULL){
$res = mysql_query("SELECT * FROM `users` WHERE `name`='".$user_name."' LIMIT 1") or die("Ошибка - ".mysql_error());
}
if($res){
echo 'Все нормально, все выбралось';
}else{
echo 'Что-то не так! Ошибка';
}


!!!ИМХО!!!

P.S. Доступно?! Или еще поговорим! Темка-то интересна!

Спустя 2 минуты, 14 секунд (30.09.2011 - 13:58) Игорь_Vasinsky написал(а):
Цитата
$.ajax({
url: тут адресс,


так тут и обработчик с запросами в БД

Спустя 3 минуты, 14 секунд (30.09.2011 - 14:01) m4a1fox написал(а):
Игорь_Vasinsky
Цитата

так тут и обработчик с запросами в БД

Да, вижу! Но мне проще обработчик в отдельный файл вынести! ИМХО! Потом проще разбираться! Как правильно и наиболее корректно - каждый по своему скажет! Я пока что только так делаю, ибо проще и удобнее!

Спустя 32 секунды (30.09.2011 - 14:02) rooor написал(а):
m4a1fox

Вроде всё работает нормально, соединение есть, но!

$res = mysql_query("SELECT * FROM `users` WHERE `name`='".$_REQUEST['user_name']."' LIMIT 1");
if($res){
echo 'Все нормально, все выбралось';
}else{
echo 'Что-то не так! Ошибка';
}


Вместо этих "echo 'Все нормально, все выбралось';" мне нужны $res['login'], $res['pass'], $res['name'] и тд... можно конечно вывести всё это в одну строчку и потом её обрезать(explode), а по другому никак?

Спустя 4 минуты, 41 секунда (30.09.2011 - 14:06) m4a1fox написал(а):
rooor
А! Погоди! Вот идиоты!
А обрабатывать query кто будет? php? :)
Цитата
Вместо этих "echo 'Все нормально, все выбралось';" мне нужны $res['login'], $res['pass'], $res['name'] и тд... можно конечно вывести всё это в одну строчку и потом её обрезать(explode), а по другому никак?

Попробуй сначала так

$error = 'Some error isset';
$res = mysql_query("SELECT * FROM `users` WHERE `name`='".$_REQUEST['user_name']."' LIMIT 1");
if($res){
$query = mysql_fetch_assoc($res);
echo $query['login'];
}else{
echo $error
}


Попробуй так, если Login появится - то логика верна! Если нет! То надо разбираться!

P.S. Устроил выходной называется! :) Не отпускаю языки проклятые :)

P.S.S И еще! Видишь разницу между твоим запросом

$res = mysql_query("SELECT * FROM `users` WHERE `name`='".$_REQUEST['user_name']."' LIMIT 1");

И моим

$user_name = !empty($_GET['user_name']) ? mysql_real_escape_string($_GET['user_name']) : NULL;

$res = mysql_query("SELECT * FROM `users` WHERE `name`='".$user_name."' LIMIT 1") or die("Ошибка - ".mysql_error());

Спустя 5 минут, 46 секунд (30.09.2011 - 14:12) linker написал(а):
Возвращай JSON-ответ. Почитай на эту тему.

Спустя 3 минуты, 16 секунд (30.09.2011 - 14:15) m4a1fox написал(а):
Цитата
Возвращай JSON-ответ. Почитай на эту тему.

Тут linker прав! Можно в json перевести все, а потом пересобрать (ну это если грубо говорить)

Спустя 4 минуты, 18 секунд (30.09.2011 - 14:20) rooor написал(а):
Цитата (m4a1fox @ 30.09.2011 - 11:06)
Попробуй так, если Login появится - то логика верна! Если нет! То надо разбираться!

P.S.S И еще! Видишь разницу между твоим запросом

$res = mysql_query("SELECT * FROM `users` WHERE `name`='".$_REQUEST['user_name']."' LIMIT 1");

И моим

$user_name = !empty($_GET['user_name']) ? mysql_real_escape_string($_GET['user_name']) : NULL;

$res = mysql_query("SELECT * FROM `users` WHERE `name`='".$user_name."' LIMIT 1") or die("Ошибка - ".mysql_error());


Да, результат выводится правильный. Из любой ячейки.
По поводу запросов - сейчас это не главное, сейчас надо сначала с одним разобраться))

linker
Спасибо, указал куда копать)

Спустя 2 минуты, 35 секунд (30.09.2011 - 14:22) m4a1fox написал(а):
rooor
Цитата
Да, результат выводится правильный. Из любой ячейки.

Как разберешься, готовый результат покажи! Интересно все таки!

Спустя 12 минут (30.09.2011 - 14:34) rooor написал(а):
Нифига не понятно про этот json... не соображаю уже... надо отдохнуть)

Спустя 1 минута, 38 секунд (30.09.2011 - 14:36) m4a1fox написал(а):
rooor
Насколько я слышал, он принимает значение ключ: парамерт, передает его, и так же получает!

Спустя 18 минут, 38 секунд (30.09.2011 - 14:54) rooor написал(а):
Так...вот что получилось, опять же с использованием прототипа:

Клиент:
var url    = 'test.php';
var params = 'user_name='+$F('user_name');
Object.toJSON(params);
var ajax = new Ajax.Updater(
{success: 'Result'},
url,
{method: 'get',
parameters: params,
onFailure: reportError}
);

Сервер:
запрос в БД и вместо echo - print_r($query)

Результат:
Array
(
[
id] => 1
[name] => admin
[pass] => admin1
[ip] => ::1
[last_visit] => 2011-09-30
)


Теперь нужно это дело раскидать по нужным местам на странице

Спустя 1 час, 33 минуты, 7 секунд (30.09.2011 - 16:28) caballero написал(а):
Цитата
Нифига не понятно про этот json

Чего там понимать - текстовый формат упаковки иерархических данных. Типа XML если по назначению.

Имеет два отличия - более компактная запись (нету громоздких тегов) и синтаксис совпадающий с синтаксисом javascript в результате чего легким пинком превращается в яваскриптовый массив

Спустя 21 час, 40 минут, 23 секунды (1.10.2011 - 14:08) rooor написал(а):
Ajax+jQuery
Вот что получилось, всё работает:

index.php
<script src="./jquery.js"></script>
<script
type=text/javascript>
function
getData(){

jQuery.post("test.php", {name: $("#nik").val()} ,
function(data){
$("#input1").html(data.id);
$("#input2").html(data.name);
$("#input3").html(data.pass);
}, "json");

};
</script></head>
<select
id="nik" onChange="getData()"><option>admin</option><option>user</option></select>
<div
id="input1"></div>
<div
id="input2"></div>
<div
id="input3"></div>


test.php
<?php
$sql=mysql_query("SELECT * FROM `users` WHERE `name`='".$_POST['name']."' LIMIT 1") or die(mysql_error());
$usr=mysql_fetch_assoc($sql);
echo json_encode($usr);
?>
Быстрый ответ:

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