Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2012, 23:03
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 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

То есть запрос отправляется нормально, но в пхп странная проблема, где? В БД ничего не появляется?
__________________
оляля, ололо
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2012, 23:09
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 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);

Обратите внимание, что данные надо фильтровать перед вставкой.
Ответить с цитированием
  #3 (permalink)  
Старый 01.05.2012, 23:25
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Serg_pnz,
так чтоли:
mysql_query("INSERT INTO `users` WHERE `name`=".$login."AND `pass`=".$pass."(avatar) VALUES (".$a.")")

P.S. просто учился по одному уроку, там так было
__________________
оляля, ололо
Ответить с цитированием
  #4 (permalink)  
Старый 01.05.2012, 23:32
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

9xakep,
я ж вроде написал во второй строке...
Ответить с цитированием
  #5 (permalink)  
Старый 01.05.2012, 23:39
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Сообщение от nasqad
самый первый вариант девятки самый правильный из предложенных
какой девятки?
Сообщение от Serg_pnz
9xakep,
я ж вроде написал во второй строке...
Цитата:
Обратите внимание, что данные надо фильтровать перед вставкой.
Я это расценил, как: where должен стоять до заполнения
Сообщение от наскад
что это за странный запрос, какой еще where у инсерта
Как тогда добавить в БД данные, в нужный логин и пароль?
__________________
оляля, ололо
Ответить с цитированием
  #6 (permalink)  
Старый 01.05.2012, 23:51
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 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
Ответить с цитированием
  #7 (permalink)  
Старый 02.05.2012, 10:51
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Сообщение от 9xakep
Как тогда добавить в БД данные, в нужный логин и пароль?
для изменения используется UPDATE
просто INSERT - для добавления новых записей.
Есть еще INSERT ... ON DUPLICATE. Если по ключу нет - добавит, иначе - изменит.
Ответить с цитированием
  #8 (permalink)  
Старый 02.05.2012, 11:03
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Цитата:
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 должны где то сначала вычисляться.
Ответить с цитированием
  #9 (permalink)  
Старый 02.05.2012, 11:55
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 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.
Ответить с цитированием
  #10 (permalink)  
Старый 02.05.2012, 14:42
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Цитата:
// false строкой сделал
вообще то так неверно, такая строка преобразуется в Истину.

Цитата:
echo 'ava is '.$ava; // false
смотри в фаербаге, вкладка "Сеть", идет ли у тебя 'ava' в $_POST.

Аякс у тебя тоже подозрительный, попробуй:
r.send('ava='+ava) // что посылаем
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных из JS в PHP - что не так? Rokugan Общие вопросы Javascript 16 30.09.2011 18:52
Передача переменной из JS в PHP методом ajax skalka jQuery 7 28.08.2010 12:05
Передача переменной с JS в PHP и обратно kamushek Общие вопросы Javascript 2 22.08.2010 16:12
Как передать массив из PHP в js (AJAX) Александр Иванов Общие вопросы Javascript 7 10.09.2009 10:22
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36