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
Форумы портала PHP.SU :: Версия для печати :: Вывод материала из 2 таблиц по связи
Форумы портала PHP.SU » » Работа с СУБД » Вывод материала из 2 таблиц по связи

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

1. NickSevenfold - 23 Декабря, 2011 - 19:09:03 - перейти к сообщению
Доброго времени суток.
Задание:
"Необходимо выполнить SQL-запрос"
Даны:
Спойлер (Отобразить)


Сам код реализации:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. //константы для базы
  4. define("DB_HOST", "localhost");
  5. define("DB_LOGIN", "login");
  6. define("DB_PASSWORD", "");
  7.  
  8. //подключение базы
  9. mysql_connect(DB_HOST, DB_LOGIN, DB_PASSWORD) or die(mysql_error());
  10.  
  11. //выбор уникальных имен материалов
  12. $query_header = "SELECT DISTINCT Parts.name as header FROM Parts";
  13. $result_header = mysql_query($query_header) or die(mysql_error());
  14.  
  15. //Выбор заголовков и айдишников
  16. $query_title = "SELECT Materials.title as title, Links.Pid as partid FROM Materials, Links, Parts WHERE Links.Mid=Materials.id and Links.Pid=Parts.id";
  17. $result_title = mysql_query($query_title) or die(mysql_error());
  18.  
  19. $news = ''; //Массив для новостей
  20. $publics = ''; //Массив для публикаций
  21.  
  22. //Заполнение массивов для новостей и публикаций
  23. while($f = mysql_fetch_array($result_title, MYSQL_ASSOC)){
  24.         if($f[partid]==1){
  25.                 $news[] = $f[title];
  26.                 }
  27.         else{
  28.                 $publics[] = $f[title];
  29.                 }
  30. }
  31.  
  32. //Вывод шапки таблицы по названию материала
  33. echo "<table border=0 cellpadding=5 cellspacing=5><tr>";
  34. while($f = mysql_fetch_array($result_header, MYSQL_ASSOC)){
  35.         echo "<td><h2>".$f[header]."</h2></td>";
  36.         }
  37. echo "</tr>";
  38. //Получение максимального значения рядов таблицы
  39. $rows = max(count($news),count($publics));
  40. //Заполнение таблицы
  41. for($i=0;$i<$rows;$i++){
  42.         echo "<tr><td>".$news[$i]."</td><td>".$publics[$i]."</td>";
  43.         echo "</tr>";
  44. }
  45. echo "</tr></table>";
  46. ?>
  47.  


Можно ли как-нибудь оптимизировать код? Гугл ответа не дал

 

Powered by ExBB FM 1.0 RC1