2016-05-23 5 views
0

По существу у меня есть серия кнопок, которые я использую для фильтрации таблицы данных.PHP/Ajax - Несколько параметров GET

я получил свои первые две кнопки, чтобы работать нормально со следующим:

<button onclick="filter('open');" class="open">Open</button> 
<button onclick="filter('closed');"class="closed">Closed</button> 

Функция выглядит следующим образом:

function filter(st, location) { 
     if(st == "") { 
      document.getElementById("exams").innerHTML = ""; 
      return; 
     } else { 
      if(window.XMLHttpRequest) { 
       var xmlhttp = new XMLHttpRequest(); 
      } else { 
       var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange = function() { 
       if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
        document.getElementById("exams").innerHTML = xmlhttp.responseText; 
       } 
      }; 
      xmlhttp.open("GET", "ajax.php?st="+st+"&location="+location, true); 
}} 

В ajax.php файле я проверка на ул параметр для установки переменной, которую я использую в моем запросе:

if (isset($_GET["st"])) { 
    $status = $_GET["st"]; 
} else { 
    $status = null; 
} 

$query = "SELECT examID, `status`, site, first_name, last_name, exam_name, institution FROM exams WHERE status = '{$status}'"; 

Теперь я хочу передать ему другой параметр er на основе другой кнопки для дальнейшего фильтрации данных. Я не уверен, что поставить для параметров, но чтобы заставить это работать.

<button onclick="filter();" class="new-york">New York</button> 
+0

Куда вы хотите передать еще один параметр? – Borna

+0

Если у меня есть еще одна кнопка типа Я хочу передать местоположение New York во второй аргумент функции filter() "location" –

+1

Если ваша функция объявлена ​​для использования 2 аргументов , не пропускайте один только ... создайте вторую функцию, которая получает местоположение в качестве параметра. – Borna

ответ

1

Я думаю, что если бы я сделать такую ​​вещь, я могу думать об использовании атрибута data. Таким образом, вы можете передавать несколько атрибутов, а также значение действия. Существует несколько расширяемости есть:

<button class="mybutton" data-instructions='{"action":"open","param1":"something","param2":"something else"}'>Open</button> 

На Аяксе, передает объект данных в качестве $_POST (или $_GET), то вы можете просто взять его на PHP стороне с относительной легкостью. Если вы сделаете это так, вы просто выполните одно действие, которое запускается в классе mybutton. Там может быть какая-то автоматизация, которую вы могли бы запрограммировать там.

Другим способом может быть использование innerHTML, чтобы получить содержимое внутри элемента с щелчком, а затем передать его на php в обычном режиме.

Боковое примечание, как у вас есть, ваш sql открыт для инъекций.

+0

Благодарим вас за варианты. Сегодня я понял, что то, что я пытаюсь сделать, на самом деле не имеет смысла. Вместо этого я решил создать радиокнопки и стилизовать их, как кнопки. Таким образом, у меня может быть кнопка отправки и делать это как обычный почтовый запрос через PHP. –

Смежные вопросы