[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: выпадающий список
art1804
<?php
Поиск по категориям
<?$query = mysql_query('SELECT * FROM `role` WHERE `isActive` not in ("0")') or die(mysql_error());
echo '<select>';
while($row = mysql_fetch_assoc($query))
{
echo '<option value="'. $row['id'] .' ">'. $row['name'] .'</option>';
}
echo '</select>';
?>

<table class="tab-over">
<
tr class="tab-title">
<
td>Имя</td>
<
td>Логин</td>
<
td>Пароль</td>
<
td>Тип</td>
<
td>Последний вход</td>
<
td>Действие</td>
</
tr>

<? $roles = array();

foreach($users as $role)
{
$roles[$role["id"]] = $role["name"];
}
$i = 1;

foreach($accounte as $one)
{
?><tr class="td<?= $i?>">
<
td><?= $one["name"]?></td>
<
td><?= $one["login"]?></td>
<
td><?= $one["password"]?></td>
<
td><?= $roles[$one["roleFK"]]?></td>
<
td><?= $one["lastlogin"]?></td>
</
tr><? $i = ($i == 1) ? 2 : 1;
}
?> < / table>




Cие творчество выдает выпадающий список ТИПОВ пользователей и таблицу с именем, логином и т.д., но не фильтрует их по ТИПУ в виде такой же таблицы - это и нужно. Помогите связать эти две вещи!
Как так сделать?
Спасибо за помощь.



Спустя 2 часа, 54 минуты, 46 секунд (2.08.2011 - 15:57) art1804 написал(а):
много уже вариантов перебрал. форум на эту тему просмотрел. в гугле лазил, но ничего так и не придумал. опыта маловато... знаю. изначально скрипт выглядел так:

<table class="tab-over">
<
tr class="tab-title">
<
td>Имя</td>
<
td>Логин</td>
<
td>Пароль</td>
<
td>Тип</td>
<
td>Последний вход</td>
<
td>Действие</td>
</
tr>

<? $roles = array();

foreach($users as $role)
{
$roles[$role["id"]] = $role["name"];
}
$i = 1;

foreach($accounte as $one)
{
?><tr class="td<?= $i?>">
<
td><?= $one["name"]?></td>
<
td><?= $one["login"]?></td>
<
td><?= $one["password"]?></td>
<
td><?= $roles[$one["roleFK"]]?></td>
<
td><?= $one["lastlogin"]?></td>
</
tr><? $i = ($i == 1) ? 2 : 1;
}
?> < / table>

Спустя 5 минут, 6 секунд (2.08.2011 - 16:02) Renden написал(а):
art1804
А где запрос которым ты выбираешь пользователей? В этом запросе надо будет указать условие ввиде типа.

Спустя 7 минут, 26 секунд (2.08.2011 - 16:10) art1804 написал(а):
тут вот еще какая вещь в запросе:
$query = mysql_query('SELECT * FROM `role` WHERE `isActive` not in ("0")') or die(mysql_error());
я выбираю тип $row['name'],
а пользователи находятся по запросу
$query = mysql_query('SELECT * FROM `user` WHERE `isActive` not in ("0")')
в поле $row['name'] - их имена! А их типы $row['type'] - не в словестной форме, а номером, который соответствует названию $row['name'] из первого запроса.

че делать не знаю. (

надо их все равно по ТИПУ разбить, а ТИП -то этот в другой таблице.

Спустя 6 минут, 56 секунд (2.08.2011 - 16:17) art1804 написал(а):
видимо надо эти запросы объединить (как не знаю), затем $row['name'] из первого запроса переименовать (как не знаю) и переименованное поле вставлять в селект.
И все остальные поля подставить в <td>. Так?

Спустя 5 часов, 5 минут, 26 секунд (2.08.2011 - 21:22) art1804 написал(а):
Подскажите, знающие! Правильный ли ход мыслей или нет? Подскажите правильное направление smile.gif)

Спустя 50 минут, 37 секунд (2.08.2011 - 22:13) neadekvat написал(а):
А я вот не понял, че там написано в первом посте. Все такое элементарное, но нихрена не понятно.
Отформатируй нормально код и расставь комменты. Можно будет попробовать понять и помочь.

Спустя 30 минут, 47 секунд (2.08.2011 - 22:43) art1804 написал(а):

<?php
Поиск по категориям
//запрос к таблице role - тут записи типа поле id (например 50) -это name
//(например консультант) ну и еще несколько не нужных мне в использовании
//полей (типа даты регистрации)

<?$query = mysql_query('SELECT * FROM `role`') or die(mysql_error());
//формируем выпадающий список
echo '<select>';
while($row = mysql_fetch_assoc($query))
{
echo '<option value="'. $row['id'] .' ">'. $row['name'] .'</option>';
}
echo '</select>';
?>// со списком проблемы нет-выпадает как надо.
// заголовки таблицы

<table class="tab-over">
<
tr class="tab-title">
<
td>Имя</td>
<
td>Логин</td>
<
td>Пароль</td>
<
td>Тип</td>
<
td>Последний вход</td>
<
td>Действие</td>
</
tr>
//тут не знаю что, тк код достался от предшественника
//код работает, хотя никакого явного подключения других файлов нет. и нет //объявленных переменных или массивов... видимо глобальные.

<? $roles = array();

foreach($users as $role)
{
$roles[$role["id"]] = $role["name"];
}
$i = 1;

foreach($accounte as $one)
{
?>

//сама таблица с данными выводится вся таблица со всеми типами вперемешку.
//а нужно, чтобы с помощью выпадающего списка или каким-нибудь другим способом
//была возможность отфильтровать, например, вывести в таблицу только консультантов.

<tr class="td<?= $i?>">
<
td><?= $one["name"]?></td>
<
td><?= $one["login"]?></td>
<
td><?= $one["password"]?></td>
<
td><?= $roles[$one["roleFK"]]?></td>
<
td><?= $one["lastlogin"]?></td>
</
tr><? $i = ($i == 1) ? 2 : 1;
}
?> < / table>

тут вот еще какая вещь в запросе:
$query = mysql_query('SELECT * FROM `role`') or die(mysql_error());
я выбираю тип $row['name'],
а пользователи находятся по запросу
$query = mysql_query('SELECT * FROM `user` ') - т.е. в другой таблице
в поле $row['name'] - их имена(конкретных людей, а не типов пользователей)!

А их типы в поле $row['type'] - не в словестной форме (консультант), а номером (50), который соответствует названию $row['name'] из первого запроса.

че делать не знаю. (

надо их все равно по ТИПУ разбить, а ТИП -то этот в другой таблице.

мои мысли

запросы объединить (как не знаю), затем $row['name'] из первого запроса (из таблицы role) переименовать (как не знаю) и переименованное поле вставлять в оптшен.
И все остальные поля подставить в <td>

Спустя 5 минут, 33 секунды (2.08.2011 - 22:49) neadekvat написал(а):
На самом деле, это элементарная задача.
Почитайте по JOIN, в частности - про LEFT JOIN. Ну и заодно про сортировку - ORDER BY.

SELECT t1.`name` as `user_name`, t2.`name` as `type_name`
FROM `users` t1
LEFT JOIN `role` t2 ON t1.`role` = t2.`id`
ORDER BY t1.`role`

Спустя 5 минут, 40 секунд (2.08.2011 - 22:55) art1804 написал(а):
Понял, спасибо. А есть толковый мануал на русском? ORDER BY - знаком, с join -нет.
а что делать со списком? в результате в тег <td> подставлять те же поля? или что?

Спустя 2 минуты, 57 секунд (2.08.2011 - 22:58) neadekvat написал(а):
Откуда мне знать, что там тебе со списком надо делать?) Сделать просто вывод сначала, посмотри, что там выводится, и делай что тебе надо.
http://lmgtfy.com/?q=mysql+LEFT+JOIN
Первая же ссылка.

Спустя 2 минуты, 12 секунд (2.08.2011 - 23:00) neadekvat написал(а):
Хаха, по ссылке английская версия, и нихрена не находит *epic*. Хрен с вами. http://mysql.ru/docs/man/JOIN.html

Спустя 1 минута, 36 секунд (2.08.2011 - 23:01) art1804 написал(а):
Спасибо! Надеюсь все получится. Попробую разобраться.

Спустя 14 часов, 39 минут, 3 секунды (3.08.2011 - 13:40) art1804 написал(а):
каким образом можно выделить все поля в обеих таблицах?
типа *
из примера выше?
а то получается только 2 активных поля id и name из обеих таблиц ((
Но их больше и некоторые очень нужны

такую ошибку получаю при подстановке поля login
Unknown column 'user.login' in 'on clause'

Спустя 51 минута, 58 секунд (3.08.2011 - 14:32) neadekvat написал(а):
Ты не поверишь :)
SELECT t1.*, t2.*, t1.`name` as `user_name`, t2.`name` as `type_name`
FROM `users` t1
LEFT JOIN `role` t2 ON t1.`role` = t2.`id`
ORDER BY t1.`role`

Спустя 1 час, 19 минут, 26 секунд (3.08.2011 - 15:52) art1804 написал(а):
Вот всяко пробовал, а так нет. Спасибо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.