2012-01-06 5 views
1

Мне сложно определить, как выбрать диск списка, который возвращается в таблице. Сценарий, есть список проектов, в ожидании того, что проект, который ваш пользователь имеет доступ к подмножеству элементов, возвращается.PHP Select List To Table Table Display

Вот код:

запрос:

$q = "SELECT DISTINCT projectid, projectname FROM projects where active=1"; 

выбрать список строительства:

//variable for projects list select list name 
$dropdown = "Projects Lists \n <select name=\"ProjectsLists\">"; 

//loop results 
while ($row = mysql_fetch_assoc($result)){ 
$dropdown .= "\r\n<option value='{$row['projectid']}'>{$row['projectname']}</option>"; 
}//end while 

$dropdown .= "\r\n</select>"; 

echo $dropdown; 

Тогда, что я хотел бы сделать, это элементы дисплея возвращается из запроса, который необходимо для запуска при выборе списка выбора:

$s_query = "SELECT contentname, contentlocation FROM projectscontent WHERE projectname=<select list value>"; 

У меня возникли проблемы с выяснением, могу ли я захватить выбранное значение. Если да, то как? Я думал, что мог бы сделать $_GET['selectlistname'];, но я не думаю, что это правильно.

ответ

1

Вы должны использовать событие jquery .change(), это поможет вам в том, что вы хотите.
Например:

  1. Добавить идентификатор в выборе вариантов
    как $dropdown = "Projects Lists \n <select id=\"mylist\" name=\"ProjectsLists\">";

теперь с использованием JQuery что-то вроде этого:

$('#mylist').change(
    //provide you selected value 
    var proName = $(this).val(); 

    //call ajax 
    $.ajax({ 
    url: 'queryPage.php', 
    data: 'proName=' + proName, 
    success: function(data){ 
     $('#result').html(data); 
    } 
    }); 
); 

queryPage.php:

//$_REQUEST['proName'] provide you select product name 
$productname = mysql_real_escape_string($_REQUEST['proName']); 

// Now start your query 
$s_query = "SELECT contentname, contentlocation FROM projectscontent 
      WHERE projectname='$productname' "; 

теперь начинает запускать запрос и эхо-результат здесь, на той же странице, это вернет данные на страницу с того места, где вы звоните queryPage.php.

+0

Итак, я попробовал ваш пример jogesh_p. У меня очень ограниченный опыт jquery. так что я сделал, добавьте id = "plist" в select. в следующем им», определяющего DIV, и в этой DIV я помещенной, < "результат" сНу ид => \t \t \t \t \t \t \t \t \t \t \t <сценарий типа = "текст/JavaScript"> \t \t \t \t \t \t \t $ ('# plists'). Изменение ( \t \t \t \t \t \t \t // предоставить Вам выбранное значение \t \t \t \t \t \t \t предупреждение ('значение выбрано'); \t \t \t \t \t var proName = $ (this) .val(); \t \t \t \t \t \t \t \t // вызов Ajax \t \t \t \t \t \t \t $ .ajax ({ \t \t \t \t \t \t \t \t URL: 'queryPage.php', \t \t \t \t \t \t \t \t данные: 'proName =' + proName, \t \t \t \t \t \t \t \t успех: функция (данные) { \t \t \t \t \t \t \t \t $ ('# результат').HTML (данные); \t \t \t \t \t \t \t \t} \t \t \t \t \t \t \t \t}); \t \t \t \t \t \t \t); \t \t \t \t \t \t – bcar

+0

я даже не получить предупреждение, указывающее я вошел в функцию. Я не уверен, что обработчик определен прямо с моей стороны или находится в нужном месте. Я предполагаю, что он привязан к «id», поэтому ему не нужно напрямую следовать за, правильно? – bcar

+0

Я пошел немного по другому пути после игры с этим .. Я добавил функцию обмена в определении списка выбора. который вызывает функцию, в которой находится файл jquery/ajax. Я вижу предупреждения сейчас :) – bcar

-1

насчет иметь свой выпадающий список с синтаксисом, как это:

<option value="1||This is my name">This is my name</option> 

Тогда вы могли бы просто взорваться() данные, чтобы получить как, идентификатор и имя.

$input = $_POST['field']; // or $_GET['field'] 
explode('||', $input); 

Ну, очевидно, это имеет некоторые недостатки безопасности. Я предлагаю вам просто вытащить имя опции, используя идентификатор. Это было бы намного безопаснее.

1

Я лично использую jQuery DataTables для этого типа функциональности. Я генерирую раскрывающийся список или группу выпадающих списков, затем при нажатии кнопки я обновляю элемент DataTable. Есть несколько руководств о том, как это сделать на веб-сайте.

Я немного обеспокоен тем, что ваши столы немного отвратительны. Это должно быть очень простым и может потребовать больше таблиц, чем вы нам рассказываете. Я бы связал свои две таблицы на projectid, если бы использовал структуру, которую вы показываете выше. Затем я добавлю дополнительную таблицу (через внутреннее соединение на userid), которая связывает users.userid, разрешения и projectid. Это будет запрошено во втором запросе в приведенном выше примере для обработки разрешений.

Когда я создаю свое раскрывающееся меню, я тоже так прост. Каждое значение <option> будет иметь значение = projectid, а отображаемым значением будет имя проекта. При изменении элемента select, перечисляющего проекты, я бы выполнил запрос (ajax предпочтительнее), чтобы получить все детали проекта, объединенные с разрешениями, с предложениями where, чтобы ограничить мои результаты пользователем на основе разрешений. Не нужно делать экзотические «объединенные» значения и т. Д.