|
Передача переменной из 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 То есть запрос отправляется нормально, но в пхп странная проблема, где? В БД ничего не появляется? |
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); Обратите внимание, что данные надо фильтровать перед вставкой. |
Serg_pnz,
так чтоли: mysql_query("INSERT INTO `users` WHERE `name`=".$login."AND `pass`=".$pass."(avatar) VALUES (".$a.")") P.S. просто учился по одному уроку, там так было |
9xakep,
я ж вроде написал во второй строке... |
Цитата:
Цитата:
Цитата:
Цитата:
|
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 |
Цитата:
просто INSERT - для добавления новых записей. Есть еще INSERT ... ON DUPLICATE. Если по ключу нет - добавит, иначе - изменит. |
Цитата:
$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 должны где то сначала вычисляться. |
Цитата:
Нет не все, логин и пароль от отсутствуют.ладно воспользуюсь советом 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? |
Цитата:
Цитата:
Аякс у тебя тоже подозрительный, попробуй: r.send('ava='+ava) // что посылаем |
Часовой пояс GMT +3, время: 04:58. |
|