Запросите MySQL, установив несколько флажков с автоматическим обновлением - PullRequest
0 голосов
/ 18 января 2012

Я хотел бы создать своего рода расширенный поиск mySQL - с помощью JQuery - где пользователь запрашивает базу данных, устанавливая флажки, и, если флажок установлен, DIV немедленно обновляется через AJAX с результатами.Это своего рода автозаполнение, но с флажками.

Например, у меня есть два или более флажков:

<input type="checkbox" id="Windows" name="system"> Windows
<input type="checkbox" id="Linux" name="system"> Linux

Если пользователь проверяет «Windows», MySQL делает это немедленно (без нажатия кнопки «Отправить»).кнопка) вернуть список программ Windows.Если пользователь проверяет оба, mySQL должен немедленно вернуть список программ для Windows и Linux.

Для одного варианта отлично работает следующее:

<div id="update"></div>

$('input[name=system]').click(function(){
    var id=$(this).attr('id');
    $.get("review.php", {param: id}, 
        function(data) {
            $("div#update").html(data);
        }
    );
});

Review.php:

if (isset($_GET['param'])) {
    $param = $_GET['param'];
}
$qry = mysql_query("SELECT * FROM reviews WHERE os = '".$param."' ") or die(mysql_error());

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 января 2012

Попробуйте это:

$('input[name=system]').click(function(){

    var ids = [];
    $('input[name=system]:checked').each(function() {
        ids.push($(this).attr('id'));
    });
    ids = ids.join(",");

    $.get("review.php", {param: ids}, 
        function(data) {
            $("div#update").html(data);
        }
    );
});

А в вашем PHP:

if (isset($_GET['param'])) {
    $param = "('" . str_replace(",", "','", $_GET['param']) . "')";
}
$qry = mysql_query("SELECT * FROM reviews WHERE os IN $param") or die(mysql_error());
0 голосов
/ 18 января 2012

Вам нужно создать одну функцию щелчка для обоих флажков, которая будет проверять оба (все) значения и создать один http-запрос, такой как ?param=windows,linux.

Вам также необходимо обновить условие в запросе mysql,так это будет выглядеть так:

$params = explode( ',', $param);
// escape all params (mysql_real_escape_string)
$condition = 'os IN("' . implode( '", "', $params) . '")';
$qry = mysql_query("SELECT * FROM reviews WHERE $condition") or die(mysql_error());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...