Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите сделать связку таблиц и составить запрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Rus88
Отправлено: 10 Февраля, 2010 - 17:28:34
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)

[+]


Помогите сделать связку таблиц и составить запрос, так чтобы каждому пользователю относилась своя аппаратура из данных таблиц (7шт.)

1. monitors // таблица с мониторами
2. comps // таблица с системными блоками
3. scaner // таблица со сканерами
4. xerox // таблица с ксероксами
5. switch // таблица со свитчами
6. printer // таблица с принтерами
7. varia //таблица разное
8. user // таблица с пользотвалями

CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. --
  3. -- Table structure for table `comps`
  4. --
  5.  
  6. CREATE TABLE `comps` (
  7.   `id` tinyint(5) NOT NULL AUTO_INCREMENT,
  8.   `inventary` varchar(255) NOT NULL,
  9.   `parameters` varchar(255) NOT NULL,
  10.   PRIMARY KEY  (`id`)
  11. ) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=cp1251 COMMENT='таблица кейсов' AUTO_INCREMENT=24 ;
  12.  
  13. --
  14. -- Dumping data for table `comps`
  15. --
  16.  
  17. INSERT INTO `comps` VALUES (1, '1', '123');
  18. INSERT INTO `comps` VALUES (2, '1', '1');
  19. INSERT INTO `comps` VALUES (3, '1', '1');
  20. INSERT INTO `comps` VALUES (4, '11111', '111');
  21. INSERT INTO `comps` VALUES (5, '11111111111', '11111111111');
  22. INSERT INTO `comps` VALUES (6, '111', '12');
  23. INSERT INTO `comps` VALUES (7, 'манитор', 'кейс');
  24. INSERT INTO `comps` VALUES (8, 'манитор', 'кейс');
  25. INSERT INTO `comps` VALUES (9, 'кейс', 'кейс');
  26. INSERT INTO `comps` VALUES (10, 'кейс', 'кейс');
  27. INSERT INTO `comps` VALUES (11, 'кейс', 'кейс');
  28. INSERT INTO `comps` VALUES (12, 'кейс', 'кейс');
  29. INSERT INTO `comps` VALUES (13, 'к', 'кейс');
  30. INSERT INTO `comps` VALUES (14, 'кейс', 'кейс');
  31. INSERT INTO `comps` VALUES (15, 'кейс', 'кейс');
  32. INSERT INTO `comps` VALUES (16, 'кейс', 'кейс');
  33. INSERT INTO `comps` VALUES (17, 'кейс', 'кейс');
  34. INSERT INTO `comps` VALUES (18, 'кейс', 'кейс');
  35. INSERT INTO `comps` VALUES (19, 'кейс', 'кейс');
  36. INSERT INTO `comps` VALUES (20, 'кейс', 'кейс');
  37. INSERT INTO `comps` VALUES (21, 'кейс', 'кейс');
  38. INSERT INTO `comps` VALUES (22, '489489489', '489489849849');
  39. INSERT INTO `comps` VALUES (23, '12435', '12345');
  40.  
  41. -- --------------------------------------------------------
  42.  
  43. --
  44. -- Table structure for table `monitors`
  45. --
  46.  
  47. CREATE TABLE `monitors` (
  48.   `id` tinyint(5) NOT NULL AUTO_INCREMENT,
  49.   `modelm` varchar(255) DEFAULT NULL,
  50.   `serialm` varchar(255) DEFAULT NULL,
  51.   `inventarym` varchar(255) DEFAULT NULL,
  52.   PRIMARY KEY  (`id`)
  53. ) ENGINE=MyISAM AUTO_INCREMENT=22 DEFAULT CHARSET=cp1251 COMMENT='таблица маниторов' AUTO_INCREMENT=22 ;
  54.  
  55. --
  56. -- Dumping data for table `monitors`
  57. --
  58.  
  59. INSERT INTO `monitors` VALUES (1, '1', '1', '1');
  60. INSERT INTO `monitors` VALUES (2, '1', '1', '1');
  61. INSERT INTO `monitors` VALUES (3, '1', '1', '1');
  62. INSERT INTO `monitors` VALUES (4, '1111', '111', '11111');
  63. INSERT INTO `monitors` VALUES (5, '1111111111', '11111111111', '11111111111');
  64. INSERT INTO `monitors` VALUES (6, '11', '11', '111');
  65. INSERT INTO `monitors` VALUES (7, 'манитор', 'манитор', 'манитор');
  66. INSERT INTO `monitors` VALUES (8, 'манитор', 'манитор', 'манитор');
  67. INSERT INTO `monitors` VALUES (9, 'манитор', 'манитор', 'манитор');
  68. INSERT INTO `monitors` VALUES (10, 'манитор', 'манитор', 'манитор');
  69. INSERT INTO `monitors` VALUES (11, 'манитор', 'манитор', 'манитор');
  70. INSERT INTO `monitors` VALUES (12, 'манитор', 'манитор', 'манитор');
  71. INSERT INTO `monitors` VALUES (13, 'манитор', 'манитор', 'манитор');
  72. INSERT INTO `monitors` VALUES (14, 'манитор', 'манитор', 'манитор');
  73. INSERT INTO `monitors` VALUES (15, 'манитор', 'манитор', 'манитор');
  74. INSERT INTO `monitors` VALUES (16, 'манитор', 'манитор', 'манитор');
  75. INSERT INTO `monitors` VALUES (17, 'манитор', 'манитор', 'манитор');
  76. INSERT INTO `monitors` VALUES (18, 'манитор', 'манитор', 'манитор');
  77. INSERT INTO `monitors` VALUES (19, 'манитор', 'манитор', 'манитор');
  78. INSERT INTO `monitors` VALUES (20, 'Самсунг', '123456789', '987654321');
  79. INSERT INTO `monitors` VALUES (21, '12345', '12345', '12345');
  80.  
  81. -- --------------------------------------------------------
  82.  
  83. --
  84. -- Table structure for table `printer`
  85. --
  86.  
  87. CREATE TABLE `printer` (
  88.   `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  89.   `modelp` varchar(255) DEFAULT NULL,
  90.   `serialp` varchar(255) DEFAULT NULL,
  91.   `inventaryp` varchar(255) DEFAULT NULL,
  92.   PRIMARY KEY  (`id`)
  93. ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
  94.  
  95. --
  96. -- Dumping data for table `printer`
  97. --
  98.  
  99. INSERT INTO `printer` VALUES (1, 'принтер', 'принтер', 'принтер');
  100. INSERT INTO `printer` VALUES (2, 'принтер', 'принтер', 'принтер');
  101. INSERT INTO `printer` VALUES (3, 'принтер', 'принтер', 'принтер');
  102. INSERT INTO `printer` VALUES (4, 'принтер', 'принтер', 'принтер');
  103.  
  104. -- --------------------------------------------------------
  105.  
  106. --
  107. -- Table structure for table `scaner`
  108. --
  109.  
  110. CREATE TABLE `scaner` (
  111.   `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  112.   `models` varchar(255) NOT NULL,
  113.   `serials` varchar(255) NOT NULL,
  114.   `inventarys` varchar(255) NOT NULL,
  115.   PRIMARY KEY  (`id`)
  116. ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251 COMMENT='таблица сканеров' AUTO_INCREMENT=4 ;
  117.  
  118. --
  119. -- Dumping data for table `scaner`
  120. --
  121.  
  122. INSERT INTO `scaner` VALUES (1, 'сканер', 'сканер', 'сканер');
  123. INSERT INTO `scaner` VALUES (2, 'сканер', 'сканер', 'сканер');
  124. INSERT INTO `scaner` VALUES (3, 'сканер', 'сканер', 'сканер');
  125.  
  126. -- --------------------------------------------------------
  127.  
  128. --
  129. -- Table structure for table `switch`
  130. --
  131.  
  132. CREATE TABLE `switch` (
  133.   `id` tinyint(5) NOT NULL AUTO_INCREMENT,
  134.   `modelsw` varchar(255) NOT NULL,
  135.   `serialsw` varchar(255) NOT NULL,
  136.   `inventarysw` varchar(255) NOT NULL,
  137.   PRIMARY KEY  (`id`)
  138. ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=cp1251 COMMENT='таблица свитчей' AUTO_INCREMENT=3 ;
  139.  
  140. --
  141. -- Dumping data for table `switch`
  142. --
  143.  
  144. INSERT INTO `switch` VALUES (1, 'switch', 'switch', 'switch');
  145. INSERT INTO `switch` VALUES (2, 'switch', 'switch', 'switch');
  146.  
  147. -- --------------------------------------------------------
  148.  
  149. --
  150. -- Table structure for table `user`
  151. --
  152.  
  153. CREATE TABLE `user` (
  154.   `id` tinyint(5) NOT NULL AUTO_INCREMENT,
  155.   `first_name` varchar(255) NOT NULL,
  156.   `last_name` varchar(255) NOT NULL,
  157.   `third_name` varchar(255) NOT NULL,
  158.   `otdel` varchar(255) NOT NULL,
  159.   `dol` varchar(255) NOT NULL,
  160.   `phone` varchar(255) NOT NULL,
  161.   PRIMARY KEY  (`id`)
  162. ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=cp1251 COMMENT='Таблица пользователей' AUTO_INCREMENT=3 ;
  163.  
  164. --
  165. -- Dumping data for table `user`
  166. --
  167.  
  168. INSERT INTO `user` VALUES (1, 'Игорь', 'Белявский', 'Витальевич', 'Отдел информационных технгологий', 'Старший специалист', '21-21-85 внутр 119');
  169. INSERT INTO `user` VALUES (2, 'Пупкин', 'Иван', 'Васильевич', 'ОИТ', 'Страрший специалист', '245-5472 вн.323');
  170.  
  171. -- --------------------------------------------------------
  172.  
  173. --
  174. -- Table structure for table `varia`
  175. --
  176.  
  177. CREATE TABLE `varia` (
  178.   `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  179.   `modelv` varchar(255) NOT NULL,
  180.   `serialv` varchar(255) NOT NULL,
  181.   `inventaryv` varchar(255) NOT NULL,
  182.   PRIMARY KEY  (`id`)
  183. ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 COMMENT='таблица разного оборудования' AUTO_INCREMENT=2 ;
  184.  
  185. --
  186. -- Dumping data for table `varia`
  187. --
  188.  
  189. INSERT INTO `varia` VALUES (1, 'разное', 'разное', 'разное');
  190.  
  191. -- --------------------------------------------------------
  192.  
  193. --
  194. -- Table structure for table `xerox`
  195. --
  196.  
  197. CREATE TABLE `xerox` (
  198.   `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  199.   `modelx` varchar(255) NOT NULL,
  200.   `serialx` varchar(255) NOT NULL,
  201.   `inventaryx` varchar(255) NOT NULL,
  202.   PRIMARY KEY  (`id`)
  203. ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=cp1251 COMMENT='таблица ксероксов' AUTO_INCREMENT=4 ;
  204.  
  205. --
  206. -- Dumping data for table `xerox`
  207. --
  208.  
  209. INSERT INTO `xerox` VALUES (1, 'ксерокс', 'ксерокс', 'ксерокс');
  210. INSERT INTO `xerox` VALUES (2, 'ксерокс', 'ксерокс', 'ксерокс');
  211. INSERT INTO `xerox` VALUES (3, 'ксерокс', 'ксерокс', 'ксерокс');
  212.        
  213.  
 
 Top
Владимир239
Отправлено: 10 Февраля, 2010 - 19:27:44
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Если я всё правильно понял, то попробуй добавить ещё по полю во все таблицы с комплектующими(например 'id_user'). Получится связка что-то типа того:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT modelp, serialp, inventaryp, id_user, u.id, first_name, last_name
  2. FROM printer AS p, user AS u
  3. WHERE id_user=u.id;
 
 Top
RomAndry Администратор
Отправлено: 10 Февраля, 2010 - 19:33:43
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




Rus88 предупреждение.
В след раз темы с подобным названием будут удаляться.
Вы же не в первый раз на форуме - создавайте информативные заглавия топика.
 
My status
 Top
Rus88
Отправлено: 10 Февраля, 2010 - 20:05:14
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)

[+]


Владимир239 пишет:
Если я всё правильно понял, то попробуй добавить ещё по полю во все таблицы с комплектующими(например 'id_user'). Получится связка что-то типа того:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT modelp, serialp, inventaryp, id_user, u.id, first_name, last_name
  2. FROM printer AS p, user AS u
  3. WHERE id_user=u.id;


а как теперь вытащить на главную всех пользователей и потом уже применить этот запрос?
 
 Top
Владимир239
Отправлено: 10 Февраля, 2010 - 21:21:39
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Короче кидаю сразу, не проверял
Сначало в файле index.php пишешь такое
PHP:
скопировать код в буфер обмена
  1. <table cellpadding='0' cellspacing='0' border='1'>
  2. <tr>
  3. <th><h3><</p></h3></th>
  4. <th><h3>first_name</h3></th>
  5. <th><h3>last_name</h3></th>
  6. </tr>
  7. //отобразится полный список пользователей
  8. $res1 = mysql_query ("SELECT * FROM user",$db);
  9. $myrow1 = mysql_fetch_array($res1);
  10. do
  11. {
  12. <tr>
  13. <td><a href='view_complect.php?id=%s'>%s</td>
  14. <td>%s</td>
  15. <td>%s</td>
  16. </tr>
  17. ",$myrow1["id"], $myrow1["first_name"], $myrow1["last_name"]);
  18.                  }
  19. while ($myrow1 = mysql_fetch_array($res1));
  20.   </table>


Потом создаешь ещё один файл "view_complect.php", в самом начале, с первой строки пишешь
PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['id'])) {$id = $_GET['id']; }
  2. if (!isset($id)) {$id = 1;}
  3. /* Проверяем, является ли переменная числом */
  4. if (!preg_match("|^[\d]+$|", $id)) {
  5. exit ("<p>Неверный формат запроса! Проверьте URL!");
  6. }
  7.  

дальше идёт всякая фигня, и в нужном месте прописываешь
PHP:
скопировать код в буфер обмена
  1.  // Открываем запрос
  2. $res01 = mysql_query("SELECT modelp, serialp, inventaryp, id_user
  3.                                    FROM printer
  4.                                    WHERE id_user='$id'",$db);                                          
  5.  
  6. $myrow1 = mysql_fetch_array($res1);
  7. do
  8.         {
  9.         <strong>modelp: </strong> <em>%s</em>
  10.         <br> <strong>serialp: </strong> <em>%s</em>
  11.         <br> <strong>inventaryp: </strong> <em>%s</em>
  12.        
  13. ",$myrow1["modelp"], $myrow1["serialp"], $myrow1["inventaryp"]);
  14.         }
  15. while ($myrow1 = mysql_fetch_array($res1));

Ну как-то так)

(Отредактировано автором: 10 Февраля, 2010 - 22:33:15)

 
 Top
Rus88
Отправлено: 10 Февраля, 2010 - 21:23:12
Post Id



Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Авг. 2009  


Помог: 0 раз(а)

[+]


Владимир239 пишет:
Короче кидаю сразу, не проверял
Сначало в файле index.php пишешь такое
PHP:
скопировать код в буфер обмена
  1. <table cellpadding='0' cellspacing='0' border='1'>
  2. <tr>
  3. <th><h3><</p></h3></th>
  4. <th><h3>first_name</h3></th>
  5. <th><h3>last_name</h3></th>
  6. </tr>
  7. //отобразится полный список пользователей
  8. $res1 = mysql_query ("SELECT * FROM user;",$db);
  9. $myrow1 = mysql_fetch_array($res1);
  10. do
  11. {
  12. <tr>
  13. <td><a href='view_complect.php?id=%s'>%s</td>
  14. <td>%s</td>
  15. <td>%s</td>
  16. </tr>
  17. ",$myrow2["id"], $myrow2["first_name"], $myrow2["last_name"]);
  18.                  }
  19. while ($myrow1 = mysql_fetch_array($res1));
  20.                 ?>      
  21.   </table>


Потом создаешь ещё один файл "view_complect.php", в самом начале, с первой строки пишешь
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (isset($_GET['id'])) {$id = $_GET['id']; }
  3. if (!isset($id)) {$id = 1;}
  4. /* Проверяем, является ли переменная числом */
  5. if (!preg_match("|^[\d]+$|", $id)) {
  6. exit ("<p>Неверный формат запроса! Проверьте URL!");
  7. }
  8.  

дальше идёт всякая фигня, и в нужном месте прописываешь
PHP:
скопировать код в буфер обмена
  1.  // Открываем запрос
  2. $res01 = mysql_query("SELECT modelp, serialp, inventaryp, id_user
  3.                                    FROM printer
  4.                                    WHERE id_user='$id'",$db);                                          
  5.  
  6. $myrow1 = mysql_fetch_array($res1);
  7. do
  8.         {
  9.         <strong>modelp: </strong> <em>%s</em>
  10.         <br> <strong>serialp: </strong> <em>%s</em>
  11.         <br> <strong>inventaryp: </strong> <em>%s</em>
  12.        
  13. ",$myrow1["modelp"], $myrow1["serialp"], $myrow1["inventaryp"]);
  14.         }
  15. while ($myrow1 = mysql_fetch_array($res1));

Ну как-то так)

у тебя есть ася?
 
 Top
Владимир239
Отправлено: 10 Февраля, 2010 - 21:34:41
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




Есть, см. почту на форуме
 
 Top
RomAndry Администратор
Отправлено: 10 Февраля, 2010 - 22:39:53
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




Rus88
А зачем нужно такое множество таблиц?
Это очень большое заблуждение.
Лучше сделать двумя таблицами
id name
1 Компьютеры
2 Мониторы
3 Принтеры
---------------------------
id pid name
1 1 ПК1
2 1 ПК2
3 3 EPSON SX40
4 3 CANON S200
5 1 ПК3
6 2 САМСУНГ 17"
7 2 LG 21"
.... где pid Это id первой таблицы
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB