Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как узнать имя поля в таблице по содержанию таблицы?
 
 автор: Felix   (19.01.2006 в 12:27)   письмо автору
 
 

Ну в общем в базе Mysql есть примерно такая таблица:

tab_num | name | ITS | PEO | OK
____________________________________________________
3694 | Петров | checked | |
456 | Иванов | | | checked
289 | Сидоров | | checked |


Поля ITS, PEO,OK - это группы.
Как узнать (не зная имен групп и их количество) к какой группе принадлежит тот или иной пользователь ?
Короче надо вытащить из базы что Петров принадлежит группе ITS, Иванов - OK, а Сидоров - PEO.

   
 
 автор: Loki   (19.01.2006 в 13:41)   письмо автору
 
   для: Felix   (19.01.2006 в 12:27)
 

а к нескольким группам сразу он может принадлежать? если нет, то лучше бы сделать одно поле типа enum, где и хранить название группы.

   
 
 автор: Felix   (20.01.2006 в 04:33)   письмо автору
 
   для: Loki   (19.01.2006 в 13:41)
 

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

   
 
 автор: Felix   (23.01.2006 в 03:40)   письмо автору
 
   для: Felix   (20.01.2006 в 04:33)
 

Люди, ну помогите пожалуйста....., многоуважаемый cheops ну неужели вы тоже не знаете ответа на мой вопрос..... ну очень надо.....

   
 
 автор: cheops   (23.01.2006 в 13:31)   письмо автору
 
   для: Felix   (19.01.2006 в 12:27)
 

Я вопрос понял, только после того, как сделал так
tab_num | name    | ITS     | PEO     | OK 
____________________________________________________
3694    | Петров  | checked |         |
456     | Иванов  |         |         | checked 
289     | Сидоров |         | checked |

   
 
 автор: cheops   (23.01.2006 в 13:33)   письмо автору
 
   для: cheops   (23.01.2006 в 13:31)
 

Теперь не понятно вот что, в таблице ясно указано, к какой группе принадлежит тот или иной пользователь - что вызывает затруднение? Какова исходня задача? Что нам известно на входе скрипта и что мы должны выяснить к его концу?

   
 
 автор: Felix   (24.01.2006 в 05:01)   письмо автору
 
   для: cheops   (23.01.2006 в 13:33)
 

Затруднение вызывает то, что я не знаю каким образом вывести в браузер имя группы, т.к. оно является именем поля а не значением (что намного для меня было бы проще), причем надо сделать ето не зная количество групп и их имена потому что они генерируются автоматом при создании новой группы. Короче на входе скрипта мы имеем только пользователя его табельный номер ну и имя таблици из которой надо установить принадлежность пользователя к группе по метке 'checked' Каждый пользователь может принадлежать только к одной группе, т.е. у каждого только один 'checked' . Ну вроде понятно написал.

В браузере нужен примерно такой результат:

Петров 3694 ITS
Иванов 456 OK
Сидоров 289 PEO

   
 
 автор: cheops   (24.01.2006 в 12:46)   письмо автору
 
   для: Felix   (24.01.2006 в 05:01)
 

>они генерируются автоматом при создании новой группы.
Т.е. таблице добавляется ещё один столбец? Обычно так не поступаю, разумнее под группы выделить отдельную таблицу и хранить имена там, а в таблице пользователей хранить лишь вторичный ключ, указывающий на группу. Кстати и объём базы данных уменьшится.

   
 
 автор: Felix   (24.01.2006 в 12:58)   письмо автору
 
   для: cheops   (24.01.2006 в 12:46)
 

>Т.е. таблице добавляется ещё один столбец? Именно так.
Я понимаю что так не поступают и тем не менее есть ли решение поставленой задачи ? Или никак не получится не меняя таблицы ?

   
 
 автор: cheops   (24.01.2006 в 13:14)   письмо автору
 
   для: Felix   (24.01.2006 в 12:58)
 

Если уже ничего сделать нельзя, то можно попытаться поступить так
<?php 
  $query 
"SELECT * FROM tbl WHERE tab_num = 3694";
  
$usr mysql_query($query);
  if(!
$usr) exit(mysql_error());
  
$user mysql_fetch_assoc($usr);
  
// Выводим табельный номер и имя
  
echo $user['tab_num']."<br>";
  echo 
$user['name']."<br>";
  
// Уничтожаем табельный номер и имя
  
unset($user['tab_num'], $user['name']);
  
// Отпределяем название группы
  
foreach($user as $name => $value)
  {
    if(
$value == 'checked')
    {
      echo 
$name// Это имя группы
      
break; // Поидаем цикл
    
}
  }
?>

   
 
 автор: Felix   (25.01.2006 в 07:25)   письмо автору
 
   для: cheops   (24.01.2006 в 13:14)
 

Спасибо, то что надо :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования