ugrás a tartalomhoz

mysql lekérdezés phpval

Castor87 · 2007. Ápr. 9. (H), 22.55
Üdv!
Egy blog oldalon dolgozok és a cimkék kiírásával bajba vagyok(php5). Egy táblában vannak felsorolva a cimkék az ő id számukkal, egy másik táblában a cikkek, nekik is van külön id számuk rekordonként a megkülönböztetés végett.

Mivel egy cimkéhez több cikk és egy cikkhez több cimke is tartozhat, így arra gondoltam létrehozok egy új táblát, ami a cimke-cikk kapcsolatokat tartalmazza.
Valahogy így néz ki:
cimke id-k | cikk id-k
1 | 5
2 | 1
3 | 4
2 | 3
2 | 3
1 | 6

Azt nem tudom hogy tároljam el pl egy tömben azokat a cikk id-ket amik pl az 1-es számú cimke id-hez tartoznak.
Eddig vagy teljes táblát listáztam ki, vagy feltétellel egy darab rekordot kerestem. A fenti táblán látni lehet, hogy az 1-es cimkéhez 2db cikk tartozik melyeknek az id számuk: 5 és 6.
Ezzel a megoldással a cimkére klikkelve a hozzá tartozó cikkeket szeretném kilistázni.

De ha valakinek van ennél sokkal egyszerűbb/jobb ötlete szívesen veszem. Remélem minden fontos információt leírtam.

Köszönettel,
Castor
 
1

sql

zila · 2007. Ápr. 10. (K), 07.47
Egy cikk cimkéi:
select cimke_id from cimke-cikk where cikk_id = n
Egy cimke cikkei:
select cikk_id from cimke-cikk where cimke_id = n
Aztán az eredményhalmazon egy ciklussal végigballagsz és beteheted tömbbe, vagy amit szeretnél...
2

mysql

thgab · 2007. Ápr. 10. (K), 09.53
Nem biztos, hogy egyszerűbb de megspóroltam vele egy táblát. :)

cikk tabla: id , keszult, cim, leiras, tartalom;
cimke tabla: id, cikkid, cimkenev;
SELECT 
  cimke.cikkid,
  cikk.cim,
  cikk.leiras,
  cikk.tartalom,
  cimke.cimkenev,
  cikk.keszult
FROM
  cikk
  INNER JOIN cimke ON (cikk.id = cimke.cikkid)
WHERE
  (cimke.cimkenev = '".$cimkenev."')
4

db normalizálás

zila · 2007. Ápr. 10. (K), 13.01
Igaz megspóroltál egy táblát, de cserébe denormalizáltad a strukturát...

Szebb, rugalmasabb megoldás, hogy van egy cikk tábla, egy cimke tábla és egy kapcsolótábla amivel összerendelheted őket.

Ugyanis a kérdező megoldásában egy cimke több cikkhez, és egy cikkhez több cimke tartozhat, a te megoldásodban viszont 1 cimke-1 cikk, ami nem jó.
8

db normalizálás

thgab · 2007. Ápr. 16. (H), 11.24
tudom nem éppen normális, de 1 cikkhez több cimkét is rakhatok, csak akkor cikkenként annyi bejegyzésem lesz a cimke táblában ahány cimkét ráakasztottam a cikkre. :D
3

Köszönöm!

Castor87 · 2007. Ápr. 10. (K), 11.28
Nagyon szépen köszönöm!
5

listázás

Castor87 · 2007. Ápr. 11. (Sze), 18.11
Üdv!
Sikerült tömbbe tennem az id számokat. De van egy kis probléma a kiírásnál. Ha ciklussal (egyesével) íratom ki, akkor nem tudom dátum szerint rendezni, mert ugye ahogy jönnek az id számok, úgy listázza ki.
A WHERE utasításnak lehet több feltételt megadni?
pl.: ...SELECT * FROM article WHERE article_id=0 vagy 1 vagy 2(...) ORDER BY article_date DESC"...

Köszi!
Castor
6

where

gex · 2007. Ápr. 11. (Sze), 18.37
WHERE article_id = 0 OR article_id = 1 OR article_id = 2
erre gondoltál?
7

igen

Castor87 · 2007. Ápr. 11. (Sze), 19.30
Igen, erre gondoltam. Kipróbáltam már, de nem működött. Rájöttem hogy máshol rontottam el, javítottam és így tökéletes. Köszönöm!