powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как правильно организовать выборку
25 сообщений из 41, страница 1 из 2
Как правильно организовать выборку
    #37854899
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблицы , в них поле с категориями cont_cat указаны, например, в таком формате ( 1,2,5 )

Пробывал организовать такую выборку, но like не вариант, так как (1, 11) - разные вещи
Код: php
1.
2.
3.
$this->db->like($this->cat /*cont_cat*/, $cat_id /*например 2*/); 
$this->db->limit($limit, $start_from); // не суть
$query = $this->db->get($this->table); 



Есть задумка, сделать через explode , но хочу что бы было оптимально

делал так, но это вообще бред
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        $this->db->order_by('cont_alias', 'desc');
        $query = $this->db->get($this->table);
        $row = $query->row_array();
        $page_cat = $row['cont_cat'];
        $cat_num = explode(",", $page_cat); // формируем массив с категориями
        foreach ($cat_num as $key => $value) {
            if ($cat_id == $value) {
                $this->db->where($this->cat, $cat_id);
                $query = $this->db->get($this->table);
            }
        }
        $this->db->limit($limit, $start_from);
        return $query->result_array();
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37854933
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hemoy,

в чем вопрос?
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37854949
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u,

как организовать выборку, если в таблице (t_content) категории (cont_cat) указаны например в таком формате 1,2,3 ; через запятую .
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37854953
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hemoy,

1,2,3 id категорий
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37854955
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hemoy,

у таблицы, могут быть несколько категорий
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855002
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hemoy,

Не понятно, в чем трудность - написать SQL-запрос, который делает выборку или сформировать этот запрос скриптом из исходных данных?
В первом случае вопрос немного не по адресу - задайте его в форуме по используемой Вами СУБД.
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855022
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

мне нужен алгоритм, как сделать скрипт, там уж я сам напишу.
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855094
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hemoy,

Тады огласите примеры:
- исходных данных
- желаемого результата, полученного из этих данных
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855665
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

Вот массив контента:

Array
(
[0] => Array
(
[cont_id] => 1
[cont_id_author] => 0
[cont_date] => 2012-06-01
[cont_alias] => privet
[cont_title] => Privet
[cont_intro] => Privet
[cont_full] => Privet
[cont_state] => 1
[cont_date_mod] => 2012-06-01
[cont_images] => 1
[cont_cat] => 11
[cont_order] => 1
[cont_des] => 1
[cont_key] => 1
[cont_head] => 1
[cont_access] => 1
[cont_hits] => 1
[cont_tags] => 1
)

[1] => Array
(
[cont_id] => 2
[cont_id_author] => 1
[cont_date] => 0000-00-00
[cont_alias] => 1
[cont_title] => 1
[cont_intro] => 1
[cont_full] => 1
[cont_state] => 1
[cont_date_mod] => 0000-00-00
[cont_images] => 1
[cont_cat] => 1,2,3,4,5
[cont_order] => 1
[cont_des] => 0000-00-00
[cont_key] => 1
[cont_head] => 1
[cont_access] => 1
[cont_hits] => 1
[cont_tags] => 1
)

[2] => Array
(
[cont_id] => 3
[cont_id_author] => 1
[cont_date] => 0000-00-00
[cont_alias] => 1
[cont_title] => 1
[cont_intro] => 1
[cont_full] => 1
[cont_state] => 1
[cont_date_mod] => 2012-06-27
[cont_images] => 1
[cont_cat] => 2
[cont_order] => 1
[cont_des] => 1
[cont_key] => 1
[cont_head] => 1
[cont_access] => 0
[cont_hits] => 0
[cont_tags] => 1
)

[3] => Array
(
[cont_id] => 4
[cont_id_author] => 323
[cont_date] => 0000-00-00
[cont_alias] => 32
[cont_title] => 323
[cont_intro] => 232
[cont_full] => 32
[cont_state] => 323
[cont_date_mod] => 0000-00-00
[cont_images] => 232
[cont_cat] => 1,2,3,4,5
[cont_order] => 32
[cont_des] => 1
[cont_key] => 11
[cont_head] => 1
[cont_access] => 0
[cont_hits] => 0
[cont_tags] => 1
)

[4] => Array
(
[cont_id] => 5
[cont_id_author] => 0
[cont_date] => 0000-00-00
[cont_alias] => 1
[cont_title] => 1
[cont_intro] => 4334
[cont_full] => 434
[cont_state] => 3434
[cont_date_mod] => 0000-00-00
[cont_images] => 1
[cont_cat] => 1,2,3,4,5
[cont_order] => 0
[cont_des] => 1
[cont_key] => 1
[cont_head] => 1
[cont_access] => 0
[cont_hits] => 0
[cont_tags] => 1
)

)


мой код на обработку массива

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  $resarray = array();
        
              //$this->db->select($this->cat);
              $this->db->from($this->table);
                $query = $this->db->get(); // Получаем все записи таблицы
                $allcontent = $query->result_array();
                foreach ($allcontent as $key => $value ){
                    foreach ($value as $keysub['cont_cat'] => $valuesub) {
                        $cat_num = explode(",", $valuesub); // массив id категорий $valuesub
                    
                    foreach ($cat_num as $key2 => $value2){
                        if($value2 == $cat_id){ // сравниваем нашу категорию
                            $resarray = $resarray + $allcontent[$key];
    
                            }
                    
                        }
                    }
                }



нужно собрать массив $resarray из статей, где в поле cont_cat например , есть '1' передается функции, переменная $cat_id = 1.


Чет неправильно работает
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855705
Фотография Ренат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
$resarray = $resarray + $allcontent[$key];


видимо ту неверно сумируете
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855720
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hemoy,

Мдя... Мож это Вам надо?
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855721
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hemoy,

Все разобрался ),
а еще вопрос, можно код как то сократить или оптимизировать?

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
    public function get_page($cat_id, $limit, $start_from=0)
    {

        $resarray = array();
        
              //$this->db->select($this->cat);
              $this->db->from($this->table);
                $query = $this->db->get(); // Получаем все записи таблицы
                $allcontent = $query->result_array();

                foreach ($allcontent as $key => $value ){
                    foreach ($value as $keysub => $valuesub) {
                        
                        if ($keysub=='cont_cat'){
                             $cat_num = explode(",", $valuesub); // массив id категорий $valuesub
                             foreach ($cat_num as $key2 => $value2){
                                if($value2 == $cat_id){
                                   $this->db->or_where('cont_id', $value['cont_id']);
                                    
                                    }
                    
                        }
                            
                        }
                       
                    
             
                    }
                }
                
                
                
                $this->db->limit($limit, $start_from);
                $query = $this->db->get($this->table);
                return  $query->result_array();
                
             

   
    }
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855725
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hemoy,

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
 public function get_page($cat_id, $limit, $start_from = 0)
    {

        $resarray = array();

        $this->db->from($this->table);
        $query = $this->db->get(); // Получаем все записи таблицы
        $allcontent = $query->result_array();

        foreach ($allcontent as $key => $value) {
            foreach ($value as $keysub => $valuesub) {

                if ($keysub == 'cont_cat') {
                    $cat_num = explode(",", $valuesub); // массив id категорий $valuesub
                    foreach ($cat_num as $key2 => $value2) {
                        if ($value2 == $cat_id) {
                            $this->db->or_where('cont_id', $value['cont_id']);

                        }

                    }

                }


            }
        }


        $this->db->limit($limit, $start_from);
        $query = $this->db->get($this->table);
        return $query->result_array();


    }
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855787
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ад какой-то. Сделайте нормальную структуру бд
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855803
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поясните
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855841
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсть таблицы , в них поле с категориями cont_cat указаны, например, в таком формате ( 1,2,5 )
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855860
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как сделать?
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855870
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с помощью связывающей таблицы:

item_id
category_id
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855872
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если это mysql, в других субд возможно есть более удобные методы для организации связей many-to-many
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855908
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

типо этого ? http://file.qip.ru/photo/cWzZzpKZ/%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9.html][IMG] http://dc257.file.qip.ru/img/cWzZzpKZ/0.201337667776756/Безымянный.png [/IMG]
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855913
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа этого.
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855915
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

спасибо, сейчас попробую реализовать)
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855951
hemoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,

Заметил что у таблицы hb_item_category нет primary key,
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855960
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можете использовать составной (item_id, category_id) или наоборот (в зависимости от ситуации)
...
Рейтинг: 0 / 0
Как правильно организовать выборку
    #37855962
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE t2.item_category(
  item_id INT(11) UNSIGNED NOT NULL,
  category_id INT(11) UNSIGNED NOT NULL,
  PRIMARY KEY (category_id, item_id)
)
ENGINE = INNODB
CHARACTER SET utf8
COLLATE utf8_general_ci;
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как правильно организовать выборку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]