Ik heb even een vraagje waar ik al een hele tijd mee loop.
Ik wil tutorials gaan schrijven die met een database werkt.
Nu wilde ik graag met verschillende pagina's (pagina nummers) voor de tutorials gaan werken zodat de tutorial niet 1 grote lap text word.
Hoe is dit het beste dit te doen, database design, etc... Ik heb er al vaak overna gedacht maar ben nog niet op een goeie oplossing gekomen
Lol, Linkie 3 is van mezelf, die heb ik zelf hier gepost. Het pagina nummer ding voor gastenboeken, fora etc snap ik wel, ik zat alleen met hoe de data van de tutorial op te splitsen. De database design komt er dan iets anders uit te zien ;)
Heb nog even een probleem met mijn query
Ik heb nu dit om de tutorial pagina uit de database te trekken:
$sql = "SELECT
tutorial.title,
tutorial_data.data,
FROM
tutorial
INNER JOIN
tutorial_data
ON
tutorial.id = tutorial_data.tut_id
WHERE
tutorial.id='".$id."'
AND
tutorial_data.page = '".$page."'";
Dit werkt prima om de geselecteerde pagina uit de database te trekken van de geselecteerde tutorial.
Nu wil ik alleen nog het aantal pagina's dat bij de tutorial horen erbij hebben zodat ik pagenation op kan maken.
De query die ik hiervoor wilde gebruiken is als volgt, maar die werkt niet omdat ik in de WHERE Clause ook het pagina nummer ($page) heb staan.
$sql = "SELECT
tutorial.title,
tutorial_data.data,
COUNT(tutorial_data.id) AS num
FROM
tutorial
INNER JOIN
tutorial_data
ON
tutorial.id = tutorial_data.tut_id
WHERE
tutorial.id='".$id."'
AND
tutorial_data.page = '".$page."'
GROUP BY
tutorial.id";
Als ik in de WHERE Clause van de query het pagina nummer ($page) weg haal krijg ik wel het aantal pagina nummers dat de tutorial hoort in het resultaat mee, maar dan pakt ie altijd pagina 1 van de tutorial.
Iemand een oplossing, of moet ik dit met een apparte query doen ?
PS: De vraag over de indexes bestaat nog altijd ;)
Hoe zit het met de indexes op de table TutorialPagina?
Moet ik indexes zetten op het ID, TutorialId, en het paginaNr ?
$sql ="
SELECT tutorial.title,
tutorial_data.data,
(
SELECT
COUNT(tutorial_data.id)
FROM
tutorial
INNER JOIN
tutorial_data
ON
tutorial.id = tutorial_data.tut_id
WHERE
tutorial.id='".$id."'
GROUP BY
tutorial.id
) AS num
FROM tutorial
INNER JOIN
tutorial_data
ON
tutorial.id = tutorial_data.tut_id
WHERE
tutorial.id='".$id."'
AND
tutorial_data.page = '".$page."'";
maar als ik jou was gewoon 2 query's runnen
weet niet of ik hem helemaal correct heb getypt maar kan de sql natuurlijk niet uitesten
Tutorial
int tutorialId <- primary key
varchar naam
table TutorialPagina
int id <- primary key
int tutorialId
int paginaNr
text tekst
reden 2 aparte query's is omdat je die count maar 1 keer nodig hebt en nu steeds word uitgevoerd voor elke result beetje overkill
je kan misschien index zetten op tekst als je naar dingen binnen je tutorial gaan zoeken maar op autonumbering hoeft het niet dat is al een index uit zich zelf