pagina's voor tutorials

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

The Beeding Clown

The Beeding Clown

02/07/2008 13:50:00
Quote Anchor link
Hoi mensen,

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
 
PHP hulp

PHP hulp

19/04/2024 01:06:38
 
Felix b

Felix b

02/07/2008 13:57:00
Quote Anchor link
misschien zo iets
table Tutorial
int tutorialId
varchar naam

table TutorialPagina
int id
int tutorialId
int paginaNr
text tekst

link tussen tussen de tutorialid's kan je ze zo opvragen
Gewijzigd op 01/01/1970 01:00:00 door Felix b
 
The Beeding Clown

The Beeding Clown

02/07/2008 14:05:00
Quote Anchor link
tnx :D

Daar kan ik denk ik wel wat mee.. ik ga er even mee spelen

PS:
Hoe zit het met de indexes op de table TutorialPagina?
Moet ik indexes zetten op het ID, TutorialId, en het paginaNr ?

(indexes ben ik niet zo heel goed in :$)
 
Erwin Nieuwenhuis

Erwin Nieuwenhuis

02/07/2008 14:07:00
Quote Anchor link
1#
2#
3#

Gebruik de zoekfunctie, je kunt dit veel makkelijker oplossen.
 
The Beeding Clown

The Beeding Clown

02/07/2008 14:15:00
Quote Anchor link
@Erwin..

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 ;)
 
The Beeding Clown

The Beeding Clown

02/07/2008 15:00:00
Quote Anchor link
Heb nog even een probleem met mijn query
Ik heb nu dit om de tutorial pagina uit de database te trekken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$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 ;)
Quote:
Hoe zit het met de indexes op de table TutorialPagina?
Moet ik indexes zetten op het ID, TutorialId, en het paginaNr ?

(indexes ben ik niet zo heel goed in :$)
Gewijzigd op 01/01/1970 01:00:00 door The Beeding Clown
 
Felix b

Felix b

02/07/2008 15:11:00
Quote Anchor link
misschien zo iets als je het in 1 query wil
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
$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

is genoeg
Gewijzigd op 01/01/1970 01:00:00 door Felix b
 
The Beeding Clown

The Beeding Clown

02/07/2008 15:32:00
Quote Anchor link
Woei, dat zijn nog een query's (Heel netjes (Y)) En het werkt prima, Tnx :D

Wat is het voordeel van 2 losse query's te runnen ipv 1? Ik neem aan dan 1 query sneller is dat de 2 losse.

PS: Nog even over de indexes, de regel is geloof ik toch:
"Alles wat je in je WHERE Clause gebruikt moet je een index op zetten"
Gewijzigd op 01/01/1970 01:00:00 door The Beeding Clown
 
Felix b

Felix b

02/07/2008 15:47:00
Quote Anchor link
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
 
The Beeding Clown

The Beeding Clown

02/07/2008 16:13:00
Quote Anchor link
Ah ok, i see..

Tnx man, ik kan weer vooruit... Mijn dank is groot
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.