Sign in to follow this  
Followers 0
GhosTama

как сделать? sql, php

15 posts in this topic

хз как назвать тему)

В общем суть такая, есть сайт обои

 

в базе есть 2 таблицы,

1) категории. в запросе делаю 2-х мерный массив, главные категории и подкатегории

2) картинки где прописан айди категории к которой она относится

 

проблема: сейчас каждая картинка находится в четко указаной своей категории, и выводится если захожу в категорию авто_id1 то sql image where id1, но хочу отображение одной картинки к примеру в 2-3 разных категориях дабы к примеру: фото макро какой нить микросхемы хочется показать и в категории макро и в категории железо.

 

но как будет это грамотнее сделать, как будет выглядеть сама структура, желательно хотяб с маленьким примером, не слишком силен и плиз без классов  )

 

ток не предлагать через запятую в поле писать

Share this post


Link to post
Share on other sites

// юнион, не то, возможно лефт джоин, но не знаю на сколько правильно будет сделать еще таблицу

 

в базе данных есть таблица изображений

 

сейчас: каждая запись в таблице изображений имеет поле cat где прописывается id категории

 

SELECT * FROM картинки WHERE cat = 1

 

я получу все картинки где прописан id категории который равен единице

 

а я хочу что бы к картинке мог присвоить более 1 категории

 

 

 

хз как проще объяснить, представьте сайт обои или форумные темы и менюю. Каждая тема или картинка привязана четко к своей категории в меню и вот как сделать грамотно, что бы одна и та же тема или картинка отображались в двух, трех и более категориях

Share this post


Link to post
Share on other sites

SELECT c1.catid AS catid1, c2.catimg AS catimg2 FROM mytabl c1 LEFT JOIN mytabl c2 ON cat2.imgname=cat1.imgname WHERE c1.catid = 'id' AND c2.imgname='lol'

 

Или как-то так, вообщем-то тут нужно либо структуру, либо думать головой, дайте нам вид таблиц(структуру)

GhosTama likes this

Share this post


Link to post
Share on other sites

Добавь в таблицу ещё одну колонку с ай-ди дополнительной категории. А вообще так рассказать невозможно(где-то там есть картинка и таблички и запросы). Здесь необходимо произвести изменение и в базе и в запросе и в выводе результата.

Share this post


Link to post
Share on other sites

@rafonets,

http://s2.ipicture.ru/uploads/20131201/7TxbymV1.gif

тут все просто открыта категория аниме к примеру у неё id = 16

и на странице будут отображены картинки где в поле category значение равно 16

 

 

 


Добавь в таблицу ещё одну колонку с ай-ди дополнительной категории

не вариант а вдруг захочу в 3 категории, или ваще во все и каждый раз переписывать не вариант.

лучше сейчас сразу переписать как пологается, чем потом мозги мучить.

 

готов полностью переписать, но не понимаю как такой вариант который я хочу должен работать, вот и все что мне надо

пока ток одна идея создать еще таблицу, где будет 2 поля, картинка и айди категории

 

к примеру:

id_image | id_cat

3 | 6

3 | 7

2 | 16

 

и получим что картинка с айди 3 имеет 2 записи с разными категориями

и отсюда уже получить все айдишки категорий к которым привязана картинка и как то сравнить в запросе по типу того что было выше

 

 

 

сорри если не понятно пишу у меня уже башка счас сварится))

Share this post


Link to post
Share on other sites

@GhosTama, вы не видели как в DLE сделано ?

 

Вообщем, предлагаю в Category сделать так "43,13".

 

Выкачиваем картинку для определенной категории, например 13:

 

WHERE table2.Category regexp '[[:<:]](13)[[:>:]]' И т.д. продолжение запроса. Суть в том: подставляем вместо 13 любое число и будет вам выкачена картинка для любой категории, как я понял, делаете галерею. или что-то типа того, неважно, будет работать такой вариант, можно выкачать как одну картинку, так и 1000 таким способом, главное правильно составьте SQL

 

Ну и в категориях просто добавляете сколько угодно ID через запятую.

GhosTama likes this

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

вариант польностью устраивает) спс большое :) тему можно закрывать

Share this post


Link to post
Share on other sites

но как будет это грамотнее сделать, как будет выглядеть сама структура

 

 

Я бы сделал 3 таблицы. Таблица классификатор категорий обоев, затем сама основная таблица, в ктр будут хранится эти самые обои или картинки (что там у вас) и еще таблица привязка картинки к категории.

 

Что то типа:

1) таблица k_category с полями k_category_id, name, и т.д.

2) таблица image с полями image_id, name и т.д.

3) таблица image_k_category  с полями image_k_category_id, image_id, k_category_id и т.д. В ней уникальный индекс по полям image_id и k_category_id

GhosTama likes this

Share this post


Link to post
Share on other sites

вот кокраз такая идея и была, ток не знаю как в запросе сравнить и вытащить значения или надо выспатся ><

Share this post


Link to post
Share on other sites

вот кокраз такая идея и была, ток не знаю как в запросе сравнить и вытащить значения или надо выспатся ><

 

Вытащить что?

 

Если вытащить просто все картинки/обои, ктр привязаны к категориям, то как то так

 

select *
from image i
inner join image_k_category ikc on ikc.image_id = i.image_id

если нужно по конкретной категории, то добавляете, например,

where ikc.k_category_id = 5

если нужно конкретную картинку, то

where i.image_id = 1
GhosTama likes this

Share this post


Link to post
Share on other sites

хм ясненько, спасибо, чет смотрю на регексп вроде работает как надо, просто и без лишней таблицы.

А новая таблица как то пугать стала хД , если захочу 5 категорий, их над перебрать в массиве на существование в таблице и изменить если требуется, в случае с регекспом только один элементарный запрос, вопрос: тогда почему именно доп. таблицей лучше будет, нежели регексп ><

конечно понятно что для удобства использования и гибкости, но эт так сказать не мега проект, а просто обои с категориями.

или это просто привычка делать сразу нормально с расчетом а вдруг пригодится?:)

 

запишу в любом случае спасибо еще раз)

Share this post


Link to post
Share on other sites

@GhosTama, да никакой... , ну впринципе, регексп должен больше MySQL напрягать..., но... учитывая что у вас не мега проект + еще большой вопрос, а не принесет ли еще больше задержек и перегрузок дополнительная таблица и т.д.?... Как понимаете, разница не очень, если бы рассчитывали на 100-200к посетителей, можно было бы тесты провести и проверить, что, лучше, быстрее и удобнее..., но лично мое мнение, для среднего сайта, разницы никакой, делайте как удобнее.

GhosTama likes this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.