replay script
ik ben bezig met een script waar de admin een verhaaltje kan posten, en dan kunnen de bezoekers daar op antwoorden. het werkt met een mysql database, en ik heb per post van de admin een id, en dan krijgt elk antwoord een id2, met hetzelfde id nummer als de id, zodat als je ze bekijkt, de berichten in volgorde van id2 worden opgehaalt.
mijn vraag is nu, hoe kan ik kijken of er bij id2 meer dan 1 zijn, zodat ik de antwoorden kan weergeven.
:s mss kan je er een onderwerp aan koppellen? zodat het bij het verzenden mee verzonden wordt naar de database ... samen met een datum zodat hij aflopend kan staan (of oplopend) ... weet niet :) ben maar een noobje
dat doe ik eigelijk ook, want id2 is per adminbericht met de antwoorden steeds het zelfde, dus als id van het bericht 5 is, dan hebben alle antwoorden op dat bericht id2 = 5.
Zoiets?
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
1 voor de Posts met verhaaltjes van de admin
1 met de reacties
ja dat zou makkelijker zijn, behalve dat het een website van mijn klas is, waar dus ongeveer 30 verhalen tabellen in komen in jou geval zou dat dan 30 x 2 worden, da's een beetje veel.
Je hebt een tabel met verhalen en een tabel met reacties op verhalen. Dat is de opbouw je moet gebruiken. Dus bijvoorbeeld:
verhalen
----------
id
verhaal
datum
reacties
---------
id
reactie
datum
verhaal_id
Je ziet dat in de reacties tabel er een foreign key (verhaal_id) is opgenomen. Op die manier weet je van elke reactie bij welk verhaal deze hoort.
ja dat snap ik, maar elke leerling uit mijn klas heeft zijn eigen stukje site, en is dus over dat stukje "admin", dus dat houd in dat elke leerling zijn eigen tabel moet hebben om z'n stukjes in te schrijven, en daar komen dan dus ook de antwoorden in. het is natuurlijk ook mogelijk om van alle adminberichten van alle leerlingen in één tabel te zetten, dmv de naam van de leerling erbij te zetten, maar dan word het voor mij een beetje té complex, dan overzie ik het niet meer.
verhalen
----------
id
user_id
verhaal
datum
reacties
---------
id
reactie
datum
verhaal_id
leerlingen
------------
id
naam
verhalen
----------
id
verhaal
datum
leerling_id
reacties
----------
id
reactie
datum
verhaal_id
De foreign key leerling_id in de verhalen tabel vertelt je nu door welke leerling een verhaal geplaatst is. Nogmaals, je gaat dus niet iedere leerling een eigen tabel geven, dat is niet de bedoeling van een database.
tut over normalisatie doorneemt
Misschien is het handig als je even de Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE verhalen(
id INT (10) NOT NULL AUTO_INCREMENT,
ip CHAR (20) NOT NULL,
datum CHAR (19) NOT NULL,
leerling_id INT (10),
verhaal TEXT NOT NULL,
PRIMARY KEY(id))
CREATE TABLE reacties(
id INT (10) NOT NULL AUTO_INCREMENT,
ip CHAR (20) NOT NULL,
datum CHAR (19) NOT NULL,
leerling_id INT (10),
verhaal_id INT (10),
reactie TEXT NOT NULL,
PRIMARY KEY(id))
id INT (10) NOT NULL AUTO_INCREMENT,
ip CHAR (20) NOT NULL,
datum CHAR (19) NOT NULL,
leerling_id INT (10),
verhaal TEXT NOT NULL,
PRIMARY KEY(id))
CREATE TABLE reacties(
id INT (10) NOT NULL AUTO_INCREMENT,
ip CHAR (20) NOT NULL,
datum CHAR (19) NOT NULL,
leerling_id INT (10),
verhaal_id INT (10),
reactie TEXT NOT NULL,
PRIMARY KEY(id))
klopt dat ongeveer
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE verhalen(
id INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
ip CHAR (20) NOT NULL,
datum CHAR (19) NOT NULL,
leerling_id INT (10),
verhaal TEXT NOT NULL
) ENGINE = MYISAM;
CREATE TABLE reacties(
id INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
ip CHAR (20) NOT NULL,
datum CHAR (19) NOT NULL,
leerling_id INT (10),
verhaal_id INT (10),
reactie TEXT NOT NULL
) ENGINE = MYISAM;
id INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
ip CHAR (20) NOT NULL,
datum CHAR (19) NOT NULL,
leerling_id INT (10),
verhaal TEXT NOT NULL
) ENGINE = MYISAM;
CREATE TABLE reacties(
id INT (10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
ip CHAR (20) NOT NULL,
datum CHAR (19) NOT NULL,
leerling_id INT (10),
verhaal_id INT (10),
reactie TEXT NOT NULL
) ENGINE = MYISAM;
Dit is beter en over zichtelijker! ;)
De jouwe was ook goed, maar nu hoef je niet onderaan id opniew er in te zetten. En mysql doet het anders toch zo.