Ik ben bezig met een gallery systeem welke aan een afbeelding een x aantal tags kan hangen.
De afbeeldingen worden dus allermaal getagd (zoals in de weblog wereld gebruikelijk is met verhalen.)
De tags gebruik ik als volgt:
ik lees alle tags uit, gesorteerd op het aantal afbeelding die er aan hangen.
Als je dan op een tag klikt moet je alle afbeeldingen van deze tag te zien krijgen, dit is natuurlijk niet zo ingewikkeld. Omdat een afbeelding echter meer dan een tags kan hebben moeten echter alle tags die nog beschikbaar zijn onder die hoofd-tag ook weer zichtbaar worden als sub-selecties.
Tags:
Afbeeldingen:
Koppel tabel: (afbeeldingen_tags)
Nu zou er ongeveer zo'n structuur zichtbaar moeten worden:
En ik gebruik de volgende code om de eerste laag op te halen:
En dan voor een laag naar beneden:
Maar dat kan natuurlijk niet!
ik zit dus met het probleem dat ik alle tags wil vinden die gekoppeld zijn aan afbeeldingen die ook gekoppeld zijn aan de gegeven tag(s), maar niet de gekozen tag(s) zijn/is.
Iemand enig idee?
Als ik "afbeeldingen_tags.tag=tags.id and" uit de query laat koppeld hij natuurlijk niet goed, maar tjah.
De afbeeldingen worden dus allermaal getagd (zoals in de weblog wereld gebruikelijk is met verhalen.)
De tags gebruik ik als volgt:
ik lees alle tags uit, gesorteerd op het aantal afbeelding die er aan hangen.
Als je dan op een tag klikt moet je alle afbeeldingen van deze tag te zien krijgen, dit is natuurlijk niet zo ingewikkeld. Omdat een afbeelding echter meer dan een tags kan hebben moeten echter alle tags die nog beschikbaar zijn onder die hoofd-tag ook weer zichtbaar worden als sub-selecties.
Tags:
| Id | Tag |
| 1 | vakantie |
| 2 | huis |
| 3 | zweden |
Afbeeldingen:
| Id | Name |
| 1 | vakantie-foto |
| 2 | vakantie2-foto |
| 3 | zweden |
| 4 | woonkamer |
Koppel tabel: (afbeeldingen_tags)
| Id | tag | afbeelding |
| 1 | 3 | 3 |
| 2 | 2 | 2 |
| 3 | 2 | 1 |
| 4 | 1 | 3 |
| 5 | 2 | 4 |
Nu zou er ongeveer zo'n structuur zichtbaar moeten worden:
code:
1
2
3
4
| Vakanties
- zweden
Thuis
Zweden |
En ik gebruik de volgende code om de eerste laag op te halen:
SQL:
1
2
3
4
| select tags.tag,tags.id as id,count(afbeeldingen.id) as count from tags,afbeeldingen_tags,afbeeldingen where afbeeldingen_tags.tag=tags.id and afbeeldingen_tags.afbeelding=affbeeldingen.id group by tags.id |
En dan voor een laag naar beneden:
SQL:
1
2
3
4
5
| select tags.tag,tags.id as id,count(afbeeldingen.id) as count from tags,afbeeldingen_tags,afbeeldingen where afbeeldingen_tags.tag=tags.id and afbeeldingen_tags.afbeelding=affbeeldingen.id and (afbeeldingen_tags.tag=1) and (tags.id!=1) group by tags.id |
Maar dat kan natuurlijk niet!
ik zit dus met het probleem dat ik alle tags wil vinden die gekoppeld zijn aan afbeeldingen die ook gekoppeld zijn aan de gegeven tag(s), maar niet de gekozen tag(s) zijn/is.
Iemand enig idee?
Als ik "afbeeldingen_tags.tag=tags.id and" uit de query laat koppeld hij natuurlijk niet goed, maar tjah.
SQL:
1
2
3
4
| select tags.tag,tags.id as id,count(afbeeldingen.id) as count from tags,afbeeldingen_tags,afbeeldingen where afbeeldingen_tags.afbeelding=affbeeldingen.id and (afbeeldingen_tags.tag=1) and (tags.id!=1) group by tags.id |
openkat.nl al gezien?