Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> ajax + php + sql запрос, не работает связка, не могу связать
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 7 дней
Карма: 21




Помогите пожалуйста, не знаю как побороть
Пытаюсь из JavaScript отправить такой запрос

var dev_newid_str=dev_newid_arr.join(","); //тут получаю строку из массива - 5,6
$.ajax( { type: "GET", url: "php/play_radio_on_dev.php", data: {'newid':dev_newid_str,'radio_id':number_stantion},beforeSend: function()
{

//$("#cpl_radio").html('<div class="img4"><img src="images/loader.gif" alt="" class="img3"></div>');

}, success: function(msg)
{
//тут код обработчика ответа
}

в play_radio_on_dev.php следующее
 
$newid_str=$_GET['newid'];
$devices_qr = mysqli_query($link,"SELECT * FROM `multimedia_devices` WHERE `remote`='dlna' AND `newid` IN ('".urldecode($newid_str)."')");
потому что запятые в url не применяются в чистом виде.
Так вот проблема в том, что sql запрос срабатывает только на первое число из $newid_str, я предполагаю, что проблема в кодировке так как url который отправляет ajax такого вида
php/play_radio_on_dev.php?newid=5%2C6&radio_id=2
но urldecode не помогает, как с этим бороться?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 6 дней
Карма: 170




делаешь
echo $devices_qr;
до тех пор, пока не получишь корректный запрос.
Там все видно будет.
У тебя в конструкцию IN передается не список, а строка. Одна строка.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 7 дней
Карма: 21




AllesKlar А как избавиться от этого? IN ('1,2,5')
должно же быть так IN (1,2,5)


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 7 дней
Карма: 21




Может кому пригодится - можно сделать например так:

$newid_str="IN (".$_GET['newid'].")";
$devices_qr = mysqli_query($link,"SELECT * FROM `multimedia_devices` WHERE `remote`='dlna' AND `newid` ".$newid_str."");


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
waldicom  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6204
Пользователь №: 5552
На форуме: 8 лет, 4 месяца, 26 дней
Карма: 162




Не, так делать не рекомендуется, потому что доверять данным от пользователя не очень хорошо. Даже вообще не хорошо. Даже нельзя.


--------------------
Свои мозги еще никто не отменял.
Телепатов нету.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3375
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 6 дней
Карма: 170




Цитата (arbuzmaster @ 5.01.2016 - 23:47)
AllesKlar А как избавиться от этого? IN ('1,2,5')
должно же быть так IN (1,2,5)

если значения гарантировано целочисленные, то так:

$in = '';
foreach(explode(',',$_GET['newid']) as $val) {
$in .= (int)$val . ',';
}

$in = rtrim($in, ',');

$query = ".... AND `newid` IN (" . $in . ")";


Цикл можно оптимизировать на предмет повторяющихся / пустых / невалидных значений.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 7 дней
Карма: 21




AllesKlar Спасибо большое - это работает, как нужно!


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса