PHP Выберите список для отображения таблицы привода - PullRequest
1 голос
/ 06 января 2012

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

Вот код:

запрос:

$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'];, но я не думаю, что это правильно.

Ответы [ 3 ]

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

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

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

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

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

вам нужно использовать событие 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 голосов
/ 06 января 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...