<?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'] из первого запроса.
че делать не знаю. (
надо их все равно по ТИПУ разбить, а ТИП -то этот в другой таблице.
$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>. Так?
И все остальные поля подставить в <td>. Так?
Спустя 5 часов, 5 минут, 26 секунд (2.08.2011 - 21:22) art1804 написал(а):
Подскажите, знающие! Правильный ли ход мыслей или нет? Подскажите правильное направление )
Спустя 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.
Почитайте по 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> подставлять те же поля? или что?
а что делать со списком? в результате в тег <td> подставлять те же поля? или что?
Спустя 2 минуты, 57 секунд (2.08.2011 - 22:58) neadekvat написал(а):
Откуда мне знать, что там тебе со списком надо делать?) Сделать просто вывод сначала, посмотри, что там выводится, и делай что тебе надо.
http://lmgtfy.com/?q=mysql+LEFT+JOIN
Первая же ссылка.
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'
типа *
из примера выше?
а то получается только 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 написал(а):
Вот всяко пробовал, а так нет. Спасибо.