01.05.2012, 23:03
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Передача переменной из js в php, посредством ajax
echo "
<input type='text' id='avatar'>
<input type='button' onclick='ava()' value='Установить аватар'>
<script>
function ava() {
var ava = document.getElementById('avatar').value
ava = encodeURIComponent(ava)
var r = new XMLHttpRequest; // создаем запрос
r.open('POST', 'login.php', true) // открываем
r.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // устанавливаем заголовок
r.send('login.php?ava='+ava) // что посылаем
}
</script>
";
function senn2() {
$a = $_POST['ava'];
mysql_query("INSERT INTO `users` (avatar) VALUES (\''.$a.'\') WHERE `name` = '$login' AND `pass` = '$pass'");
}
if($_SERVER['REQUEST_METHOD']=='POST') senn2();
В чем ошибка, вот примеры пост запроса:
login.php?ava=asdf
То есть запрос отправляется нормально, но в пхп странная проблема, где? В БД ничего не появляется?
__________________
оляля, ололо
|
|
01.05.2012, 23:09
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
mysql_query("INSERT INTO `users` (avatar) VALUES (\''.$a.'\') WHERE `name` = '$login' AND `pass` = '$pass'");
ужоснах...
mysql_query('INSERT INTO `users` (avatar) VALUES ('.$a.') WHERE `name` = '.$login.' AND `pass` = '.$pass);
Обратите внимание, что данные надо фильтровать перед вставкой.
|
|
01.05.2012, 23:25
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Serg_pnz,
так чтоли:
mysql_query("INSERT INTO `users` WHERE `name`=".$login."AND `pass`=".$pass."(avatar) VALUES (".$a.")")
P.S. просто учился по одному уроку, там так было
__________________
оляля, ололо
|
|
01.05.2012, 23:32
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
9xakep,
я ж вроде написал во второй строке...
|
|
01.05.2012, 23:39
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Сообщение от nasqad
|
самый первый вариант девятки самый правильный из предложенных
|
какой девятки?
Сообщение от Serg_pnz
|
9xakep,
я ж вроде написал во второй строке...
|
Цитата:
|
Обратите внимание, что данные надо фильтровать перед вставкой.
|
Я это расценил, как: where должен стоять до заполнения
Сообщение от наскад
|
что это за странный запрос, какой еще where у инсерта
|
Как тогда добавить в БД данные, в нужный логин и пароль?
__________________
оляля, ололо
|
|
01.05.2012, 23:51
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
9xakep,
По пунктам тогда:
1. В Вашем коде синтаксис не верный
2. Про фильтрацию. Напрямую получаемые от пользователя данные вставлять нельзя - сломают сайт. Надо фильтровать, например intval, если число, заслешивать кавычки, чистить от хтмл-тегов.
Попробуйте пока всё же мой вариант
mysql_query('INSERT INTO `users` (avatar) VALUES ('.$a.') WHERE `name` = '.$login.' AND `pass` = '.$pass);
3. Откуда берутся значения $login и $pass? Они точно существуют?
Попробуйте вывести так
echo 'INSERT INTO `users` (avatar) VALUES ('.$a.') WHERE `name` = '.$login.' AND `pass` = '.$pass;
Всё на месте?
4. nasqad,
в натуре, надо UPDATE SET
|
|
02.05.2012, 10:51
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Сообщение от 9xakep
|
Как тогда добавить в БД данные, в нужный логин и пароль?
|
для изменения используется UPDATE
просто INSERT - для добавления новых записей.
Есть еще INSERT ... ON DUPLICATE. Если по ключу нет - добавит, иначе - изменит.
|
|
02.05.2012, 11:03
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Цитата:
|
if($_SERVER['REQUEST_METHOD']=='POST') senn2();
|
довольно странно выглядит. Делается на пыхе в общем так:
$ava = (isset($_POST['ava'])) ? $_POST['ava'] : false;
if ($ava) {
$query = "UPDATE `users` SET `avatar`='%s' WHERE `name`='%s' AND `pass`='%s'";
$query = sprintf($query, mysql_real_escape_string($ava), mysql_real_escape_string($login), mysql_real_escape_string($pass));
$res = mysql_query($query);
//...
}
ну конечно переменные $login, $pass должны где то сначала вычисляться.
|
|
02.05.2012, 11:55
|
|
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Сообщение от Serg_pnz
|
3. Откуда берутся значения $login и $pass? Они точно существуют?
Попробуйте вывести так
echo 'INSERT INTO `users` (avatar) VALUES ('.$a.') WHERE `name` = '.$login.' AND `pass` = '.$pass;
Всё на месте?
|
$login и $pass беруться в самом начале, с помощью я захожу в аккаунт, вот сайт, введи в 1ое sdf, во 2ое we, и зайдешь.
Нет не все, логин и пароль от отсутствуют.ладно воспользуюсь советом micscr. Спасибо
============
Я кажется понял в чем проблема, я отправляю логин и пароль формой, на мою же страницу, после они теряются, может быть в этом проблема?
============
Можно ли на событие в js повесить ф-ию php? Я понимаю, что это бред, но все же?
============
micscr,
Написал так:
$ava = (isset($_POST['ava'])) ? $_POST['ava'] : 'false'; // false строкой сделал
echo 'ava is '.$ava; // false
if ($ava) {
echo $row['name'].'<hr>'.$row['pass'];
$query = "UPDATE `users` SET `avatar`='%s' WHERE `name`='%s' AND `pass`='%s'";
$query = sprintf($query, mysql_real_escape_string($ava), mysql_real_escape_string($row['name']), mysql_real_escape_string($row['pass']));
mysql_query($query);
}
И в БД все добавилось, получается, что от js ничего не приходит что ли? И ошибка не в php?
__________________
оляля, ололо
Последний раз редактировалось 9xakep, 02.05.2012 в 12:47.
|
|
02.05.2012, 14:42
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Цитата:
|
// false строкой сделал
|
вообще то так неверно, такая строка преобразуется в Истину.
Цитата:
|
echo 'ava is '.$ava; // false
|
смотри в фаербаге, вкладка "Сеть", идет ли у тебя 'ava' в $_POST.
Аякс у тебя тоже подозрительный, попробуй:
r.send('ava='+ava) // что посылаем
|
|
|
|