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]   

> Описание: Переделал скрипт и теперь ладу ни как не дам...
Роман_13
Отправлено: 16 Мая, 2009 - 05:03:56
Post Id


Новичок


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


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




Доброго времени суток !

Суть проблемы заключается в следующем :
Переделал под себя доску объявлений , сделал чтобы можно было добавлять объявление к нескольким подкатегориям , даже если они находятся в разных главных категориях , продолбался со всеми запросами вроде всё получалось , но ... возник такой вопрос , суть в том что при выборе главной категории открывается список подкатегорий и ниже списка идёт список объявлений которые принадлежат ко всем тем подкатегориям , которые в данной главной категории , вот теперь у меня получилось что каждое объявление которое относится к нескольким категориям этого раздела , повторяется столько раз , ко скольким категориям назначаешь его при добавлении , дальше когда выбираешь подкатегорию список отфильтровывается и остаются только те которые принадлежат конкретно данной подкатегориию
С такой примерно заморочкой на главной странице , у меня получилось решить переделал выборки из базы и циклы и всё получилось, В принципе запросов пришлось доработать не мало и это осталась одна заморочка с которой я уже пару дней воюю .
Вот он код.
PHP:
скопировать код в буфер обмена
  1.  
  2. $sqltotal = "select ".$myprefix."_ads_ads.* , ".$myprefix."_ads_abr.* from
  3. ".$myprefix."_ads_ads , ".$myprefix."_ads_abr where ";
  4.         if ($id_catg != "") {
  5.                 $categorystring = getchildcategories($id_catg);
  6.                 $categoryarray = explode("_",$categorystring);
  7.                 if (sizeof($categoryarray) - 1 > 0) {
  8.                         $sqltotal .= " (";
  9.                 }
  10.                 for ($i = 0;$i<=sizeof($categoryarray)-2;$i++) {
  11.                         $sqltotal .= " ".$myprefix."_ads_abr.id_catg='".$categoryarray[$i]."' ";
  12.                         if ($i != sizeof($categoryarray)-2) {
  13.                                 $sqltotal .= " or ";
  14.                         }
  15.                 }
  16.                if (sizeof($categoryarray) - 1 > 0) {
  17.                         $sqltotal .= " or ".$myprefix."_ads_abr.id_catg='".$id_catg."') and ";
  18.                 } else {
  19.                         $sqltotal .= " ".$myprefix."_ads_abr.id_catg='".$id_catg."' and ";
  20.                 }
  21.         }
  22. $sqltotal .= " ".$myprefix."_ads_abr.id_ads = ".$myprefix."_ads_ads.id_ads and ";
  23.         $applylanguage = sqlapplylanguage();
  24.         $sqltotal .= $applylanguage."and";
  25.  
  26.         $sqltotal .= " active = 1 order by title ASC";
  27.  


Сам запрос к БД настроить получилось , сначало вобще было ужас , всё перемножалось , в непонятные категории распихивалось , теперь только вот осталось решить с повтором , в принципе по сути так и получается , что одно объявление относясь к нескольким подкатегориям , получается как бы копируется циклом, так как имеет несколько категорий , но в базе оно одно и с подкатегориями завязано через дополнительную таблицу

Заранее благодарен за советы ! ... Я ещё только начинающий . Потому рад любым подсказкам.
 
 Top
Гость
Отправлено: 16 Мая, 2009 - 12:14:08
Post Id


УДАЛЁН










Роман_13 Может я чего не понял но не проще было ли сделать так - сделать основую категорую (Которая только одна) и после с дополнительными категориями (При этом для пользователя все эти катерогии будут выглядеть РАВНОПРАВНО как вы и хотите) И когда вы выводите какуюто категорию то смотрите связи подкатегорий и выводите все нужные записи
Вобщем лично я советую делаь не как у вас а с помощью связи таблиц (Подсказка - ключевое слово JOIN LEFT/JOIN RIGHT)
 
 Top
Champion Супермодератор
Отправлено: 16 Мая, 2009 - 13:14:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Роман_13 пишет:
вот теперь у меня получилось что каждое объявление которое относится к нескольким категориям этого раздела , повторяется столько раз , ко скольким категориям назначаешь его при добавлении
Похоже, что ты пытался связать таблицы, но не указал условие их связи. А Тогда на каждую строку одной таблицы выводится каждая строка другой.
 
 Top
Роман_13
Отправлено: 16 Мая, 2009 - 20:05:33
Post Id


Новичок


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


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




Спасибо за подсказки . Я в принципе эти методы пробовал . но получался такой же результат.
Но в конце концов удалось добится победы посредством вставки ещё одной команды в запрос к БД
PHP:
скопировать код в буфер обмена
  1.  
  2. $sqltotal .= " active = 1 GROUP BY ".$myprefix."_ads_abr.id_ads order by title  ASC  ";
  3.  


И у меня всё получилось как раз так как мне было надо.

Спасибо за внимание , тему можно считать закрытой ... )
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB