Tutorials
#1 Simpel Forum compleet in te bouwen V.1
In deze toturial leer ik je met HÉÉL veel commentaar op een goede manier een simpel forum te maken in je eigen geschreven php code.. [By MarViiN's]
Pagina 1
Inleiding...
Ey,
Ik heb hier al zoveel hulp gekregen dat ik de laatste tijd zoveel
op phphulp heb rondgehangen dat ik het tijd vond dat ik ook maar
eens mijn kleren uit de kast moest trekken..
-
Ik kwam op het idee een forumscript te schrijven op een hele simpele
overzichtelijke en vooral DUIDELIJKE manier voor beginnende php'ers
dit omdat men toch vaak begint met php door iets als een gastenboek
of forum te maken...
in deze tutorial die bestaat uit 6 stappen ga ik je leren hoe je
met vrij weinig code (als je mijn commentaar wegdenkt)
een toch best krachtig forumpje kan maken die in iedere
layout te integreren is.
Ik hoop dat ik hier mensen mee kan helpen.
en reacties zijn altijd motiverend..
hier alvast een eindresultaat voorbeeldje
KLIK
Suc6,
MarviiN's
hier komt het stappenplan:
De stappen:
1) database klaarmaken en verbinden met database (script)
2) maak topic (interface)
3) topic toevoegen (script)
4) topic bekijken & maak reacties (interface)
5) reacties toevoegen (script)
6) Forum overzicht (interface)
Ik heb hier al zoveel hulp gekregen dat ik de laatste tijd zoveel
op phphulp heb rondgehangen dat ik het tijd vond dat ik ook maar
eens mijn kleren uit de kast moest trekken..
-
Ik kwam op het idee een forumscript te schrijven op een hele simpele
overzichtelijke en vooral DUIDELIJKE manier voor beginnende php'ers
dit omdat men toch vaak begint met php door iets als een gastenboek
of forum te maken...
in deze tutorial die bestaat uit 6 stappen ga ik je leren hoe je
met vrij weinig code (als je mijn commentaar wegdenkt)
een toch best krachtig forumpje kan maken die in iedere
layout te integreren is.
Ik hoop dat ik hier mensen mee kan helpen.
en reacties zijn altijd motiverend..
hier alvast een eindresultaat voorbeeldje
KLIK
Suc6,
MarviiN's
hier komt het stappenplan:
De stappen:
1) database klaarmaken en verbinden met database (script)
2) maak topic (interface)
3) topic toevoegen (script)
4) topic bekijken & maak reacties (interface)
5) reacties toevoegen (script)
6) Forum overzicht (interface)
edit
V2 is ook al beschikbaar
Pagina 2
Stap 5) Reacties toevoegen (script)
================
toevoegen_antwoord.php
================
<?php
// in de vorige pagina hebben we een mogelijkheid gemaakt
// dat mensen kunnen antwoorde op een topic.. de gegevens
// uit dat formulier zijn weer verzonden door de 'action="" &
// method="post"' weetje nog? tijdens dit versturen op de
// vorige pagina is er een gehiem stukje informatie
// meegestuurt, namelijk een ID nummer van het antwoord,
// als je even terug wilt kijken moet je zoeken naar deze regel:
//
// <input name="id" type="hidden" value="< ? echo $id; ? >">
//
// die staat op type="hidden" (verborgen dus).. niemand zal
// die zien alleen het script wel.. en door middel van die code
// gaan wij hem nu weer opvangen. bekijk het script maar:
include('verbinden.php');
// weer even verbinden met de database want we gaan zometeen
// informatie opvragen uit de database
$id=$_POST['id'];
// omdat het ID is meegegeven door het formulier gebruiken
// we nu weer POST en hier is dus dat geheime IDnummer
// tijdelijk opgeslagen onder de naam $id.
// Hier zoeken we het hoogste antwoord_ID tot nu toe zodat
// wij het nieuwe antwoord 1 hoger op kunnen slaan, stel hij
// vind als hoogste 9 dan word onze opgeslagen als 10,
// maar dat zien we zometeen.
$sql="SELECT MAX(antwoord_id) AS hoogste_id FROM antwoord WHERE vraag_id='$id';";
$resultaat=mysql_query($sql)or die(mysql_error();
$rij=mysql_fetch_array($resultaat);
// Dit is dat stukje wat ik net zei. Hier wordt de hoogste
// PLUS 1 gedaan zodat het nieuwste antwoord het
// hoogste nummer krijgt.
if ($rij) {
$hoogste_id = $rij['hoogste_id']+1;
}
else {
$hoogste_id = 1;
}
// nu halen we de gegevens weer op uit het formulier en slaan
// die op net als daarnet.. gewoon een naam met een $ ervoor
$antwoord_naam=$_POST['antwoord_naam'];
$antwoord_email=$_POST['antwoord_email'];
$antwoord_antwoord=$_POST['antwoord_antwoord'];
$datumtijd=date("d/m/y H:i:s");
// net als bij het nieuwe topic aanmaken moeten we ook bij
// een nieuw antwoord een datum en tijdstip opslaan zodat
// we dat laten kunnen laten zien aan de gebruikers
// nu even het antwoord opslaan
$sql2="INSERT INTO antwoord (vraag_id, antwoord_id, antwoord_naam, antwoord_email, antwoord_antwoord, antwoord_datumtijd)VALUES($id, $hoogste_id, '".addslashes($antwoord_naam)."', '".addslashes($antwoord_email)."','".addslashes($antwoord_antwoord)."', '$datumtijd')";
$resultaat2=mysql_query($sql2) or die(mysql_error());
// zoals je ziet is deze query hierboven al een
// stuk langer, ik heb er nog geen 1 uitgelegd dus
// doe het gewoon even.. als je querys al snapt
// ga je gewoon verder hier beneden...
//===========================
// de query zegt hetvolgende:
// "Zet in de tabel 'antwoord' het volgende:
// - in het veld vraag_id moet de inhoud van
// tijdelijk opslagplaats $vraag_id
// - in het veld antwoord_id moet de inhoud van
// tijdelijk opslagplaats $antwoord_id
// - in het veld antwoord_naam moet de inhoud van
// tijdelijk opslagplaats $antwoord_naam
// etc, etc, GA DIT NA en bekijk hoe het staat
// geschreven in de query.. het is niet moeilijk
// namelijk..maar wel belangrijk om te weten
//============================
if($resultaat2){
echo "Toevoegen gelukt<BR>";
echo "<a href='bekijk_topic.php?id=".$id."'>Bekijk je antwoord</a>";
// hier zetten we weer de boodschap dat die is gelukt
// Nadat het antwoord is toegevoegd moet het
// veld 'reactie' opgehoogt worden zodat we een
// tellertje toe kunnen voegen dat men ziet hoeveel
// reactie er zijn gekomen op een topic...
// dit doen we weer dmv UPDATE, omdat er al een
// waarde in 'reactie' staat
$sql3="UPDATE vraag SET reacties='$hoogste_id' WHERE id='$id'";
$resultaat3=mysql_query($sql3)or die(mysql_error());
}
// mocht het toevoegen mislukken dan krijg je
// deze melding maar aangezien je mijn tutorial
// vet goed hebt gevolgd krijg je deze fout nooit ;)
// tenzij je database eruit knalt ofzo..
else {
echo "Toevoegen Mislukt";
}
mysql_close();
//en we sluiten de verbinding met de database weer
?>
toevoegen_antwoord.php
================
<?php
// in de vorige pagina hebben we een mogelijkheid gemaakt
// dat mensen kunnen antwoorde op een topic.. de gegevens
// uit dat formulier zijn weer verzonden door de 'action="" &
// method="post"' weetje nog? tijdens dit versturen op de
// vorige pagina is er een gehiem stukje informatie
// meegestuurt, namelijk een ID nummer van het antwoord,
// als je even terug wilt kijken moet je zoeken naar deze regel:
//
// <input name="id" type="hidden" value="< ? echo $id; ? >">
//
// die staat op type="hidden" (verborgen dus).. niemand zal
// die zien alleen het script wel.. en door middel van die code
// gaan wij hem nu weer opvangen. bekijk het script maar:
include('verbinden.php');
// weer even verbinden met de database want we gaan zometeen
// informatie opvragen uit de database
$id=$_POST['id'];
// omdat het ID is meegegeven door het formulier gebruiken
// we nu weer POST en hier is dus dat geheime IDnummer
// tijdelijk opgeslagen onder de naam $id.
// Hier zoeken we het hoogste antwoord_ID tot nu toe zodat
// wij het nieuwe antwoord 1 hoger op kunnen slaan, stel hij
// vind als hoogste 9 dan word onze opgeslagen als 10,
// maar dat zien we zometeen.
$sql="SELECT MAX(antwoord_id) AS hoogste_id FROM antwoord WHERE vraag_id='$id';";
$resultaat=mysql_query($sql)or die(mysql_error();
$rij=mysql_fetch_array($resultaat);
// Dit is dat stukje wat ik net zei. Hier wordt de hoogste
// PLUS 1 gedaan zodat het nieuwste antwoord het
// hoogste nummer krijgt.
if ($rij) {
$hoogste_id = $rij['hoogste_id']+1;
}
else {
$hoogste_id = 1;
}
// nu halen we de gegevens weer op uit het formulier en slaan
// die op net als daarnet.. gewoon een naam met een $ ervoor
$antwoord_naam=$_POST['antwoord_naam'];
$antwoord_email=$_POST['antwoord_email'];
$antwoord_antwoord=$_POST['antwoord_antwoord'];
$datumtijd=date("d/m/y H:i:s");
// net als bij het nieuwe topic aanmaken moeten we ook bij
// een nieuw antwoord een datum en tijdstip opslaan zodat
// we dat laten kunnen laten zien aan de gebruikers
// nu even het antwoord opslaan
$sql2="INSERT INTO antwoord (vraag_id, antwoord_id, antwoord_naam, antwoord_email, antwoord_antwoord, antwoord_datumtijd)VALUES($id, $hoogste_id, '".addslashes($antwoord_naam)."', '".addslashes($antwoord_email)."','".addslashes($antwoord_antwoord)."', '$datumtijd')";
$resultaat2=mysql_query($sql2) or die(mysql_error());
// zoals je ziet is deze query hierboven al een
// stuk langer, ik heb er nog geen 1 uitgelegd dus
// doe het gewoon even.. als je querys al snapt
// ga je gewoon verder hier beneden...
//===========================
// de query zegt hetvolgende:
// "Zet in de tabel 'antwoord' het volgende:
// - in het veld vraag_id moet de inhoud van
// tijdelijk opslagplaats $vraag_id
// - in het veld antwoord_id moet de inhoud van
// tijdelijk opslagplaats $antwoord_id
// - in het veld antwoord_naam moet de inhoud van
// tijdelijk opslagplaats $antwoord_naam
// etc, etc, GA DIT NA en bekijk hoe het staat
// geschreven in de query.. het is niet moeilijk
// namelijk..maar wel belangrijk om te weten
//============================
if($resultaat2){
echo "Toevoegen gelukt<BR>";
echo "<a href='bekijk_topic.php?id=".$id."'>Bekijk je antwoord</a>";
// hier zetten we weer de boodschap dat die is gelukt
// Nadat het antwoord is toegevoegd moet het
// veld 'reactie' opgehoogt worden zodat we een
// tellertje toe kunnen voegen dat men ziet hoeveel
// reactie er zijn gekomen op een topic...
// dit doen we weer dmv UPDATE, omdat er al een
// waarde in 'reactie' staat
$sql3="UPDATE vraag SET reacties='$hoogste_id' WHERE id='$id'";
$resultaat3=mysql_query($sql3)or die(mysql_error());
}
// mocht het toevoegen mislukken dan krijg je
// deze melding maar aangezien je mijn tutorial
// vet goed hebt gevolgd krijg je deze fout nooit ;)
// tenzij je database eruit knalt ofzo..
else {
echo "Toevoegen Mislukt";
}
mysql_close();
//en we sluiten de verbinding met de database weer
?>
Pagina 3
Stap 1) Database klaarmaken & verbinding maken met
Als je een forum hebt moeten de berichten ergens opgeslagen worden.
dat doen we in de database.. voor deze tutorial maak ik gebruik van een database genaamd 'forum' ... in deze tabel vinden we 2 tabellen.. om goed
onderscheid te maken van de functies van deze 2 tabellen heb ik voor het makkelijke maar gekiest voor de namen 'vraag' en 'antwoord'.. dit zodat een beginnend php'er een goed overzicht heeft.
We gaan nu de database vullen met de benodigde tabellen vraag en antwoord. als je niet weet hoe dit moet moet je even DEZE tutorial van Bas Kreleger bekijken. hij legt in deze tutorial helemaal uit hoe je dit doet (stap voor stap).
Als je dit kan kun je met de volgende 2 codes je database klaarmaken.
[/code]
oke nu is je database klaar voor stap 2..
Alleen gaan we alvast even een klein stukje script schrijven om de verbinding met je database te maken aangezien we die een aantal keer nodig zullen hebben.
=========
verbinden.php
=========
dat doen we in de database.. voor deze tutorial maak ik gebruik van een database genaamd 'forum' ... in deze tabel vinden we 2 tabellen.. om goed
onderscheid te maken van de functies van deze 2 tabellen heb ik voor het makkelijke maar gekiest voor de namen 'vraag' en 'antwoord'.. dit zodat een beginnend php'er een goed overzicht heeft.
We gaan nu de database vullen met de benodigde tabellen vraag en antwoord. als je niet weet hoe dit moet moet je even DEZE tutorial van Bas Kreleger bekijken. hij legt in deze tutorial helemaal uit hoe je dit doet (stap voor stap).
Als je dit kan kun je met de volgende 2 codes je database klaarmaken.
[code]
CREATE TABLE `vraag` (
`id` int(4) NOT NULL auto_increment,
`topic` varchar(255) NOT NULL default '',
`bericht` longtext NOT NULL,
`naam` varchar(65) NOT NULL default '',
`email` varchar(65) NOT NULL default '',
`datumtijd` varchar(25) NOT NULL default '',
`bekeken` int(4) NOT NULL default '0',
`reacties` int(4) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
CREATE TABLE `antwoord` (
`vraag_id` int(4) NOT NULL default '0',
`antwoord_id` int(4) NOT NULL default '0',
`antwoord_naam` varchar(65) NOT NULL default '',
`antwoord_email` varchar(65) NOT NULL default '',
`antwoord_antwoord` longtext NOT NULL,
`antwoord_datumtijd` varchar(25) NOT NULL default '',
KEY `antwoord_id` (`antwoord_id`)
) TYPE=MyISAM;
[/code]
oke nu is je database klaar voor stap 2..
Alleen gaan we alvast even een klein stukje script schrijven om de verbinding met je database te maken aangezien we die een aantal keer nodig zullen hebben.
=========
verbinden.php
=========
<?php
// het is belangrijk dat het script met de database
// kan verbinden als dit nodig is.. dat doen we door
// middel van dit stukje script:
$host="localhost"; // meestal 'localhost' maar kan ook anders uiteraard
$gebruiker="phphulp"; // Mysql gebruikersnaam
$w8woord=""; // Mysql w8woord
$databasenaam="phphulp"; // Databasenaam
mysql_connect($host, $gebruiker, $w8woord)or die("er is een foutje met de verbinding");
// verbinding maken
mysql_select_db($databasenaam)or die("de database kan niet gevonden worden");
// de juiste database selecteren
?>
<?php
// bij elke pagina die de verbinding nodig heeft
// krijg je een speciale regel. als je iets wilt toevoegen,
// wilt veranderen of wilt opvragen uit de database heb
// je de verbinding nodig.. in deze omstandigheden moet
// bovenaan het script deze regel staan:
//
// include('verbinden.php');
//
// deze betekent gewoon.. ik wil de pagina verbinden.php
// gebruiken in dit stuk script..
?>
Pagina 4
Stap 6) Forum overzicht (interface)
Natuurlijk moeten we ook nog een Overzichts pagina maken waar de bezoeker alle topics kan bekijken. Dat doen we met dit script:
======
forum.php
======
======
forum.php
======
<?php
// met deze pagina gaan we er voor zorgen dat mensen die
// deze pagina gaan bezoeken een volledig overzicht
// krijgen van alle topics die in de database staan
// hoe we dat doen zie je hieronder.
//===============================================
include('verbinden.php');
//verbinden met de database
$sql="SELECT * FROM vraag ORDER BY id DESC";
$resultaat=mysql_query($sql)or die(mysql_error());
// met de code bedoelen we:
// Selecteer ALLES van de tabel 'vraag' en zet ze op volgorde van het
// veldje 'id' aflopend
// DESC is aflopend en ASC kan ook dat is Aflopend, maar wij
// gebruiken DESC (aflopend) omdat wij het hoogste id
// (het meest nieuwe topic dus) bovenaan willen hebben,
// met de met de syntax erbij zou het dus betekenen:
// SELECT (selecteer) * (alles) FROM (van) vraag (de tabel vraag)
// ORDER BY (op volgorde van) id (veldje id) DESC (aflopend)...
?>
<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td width="6%" align="center" bgcolor="#E6E6E6"><strong>#</strong></td>
<td width="53%" align="center" bgcolor="#E6E6E6"><strong>Topic</strong></td>
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>Bekeken</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>Reacties</strong></td>
<td width="13%" align="center" bgcolor="#E6E6E6"><strong>Datum/Tijd</strong></td>
</tr>
<?php
// hierboven maken we de kopjes aan die de gebruiker zal
// zien bovenaan de lijst met alle topics..
// het onderstaande stukje code is nodig om ELK topic
// onder elkaar te plaatsen, anders krijg je bijvoorbeeld
// alles achter elkaar en heel onoverzichtelijk op je
// beeldscherm. als je wat verder bent in het php'en
// dit wel duidelijker worden...
while($rij=mysql_fetch_array($resultaat)){
?>
<tr>
<td bgcolor="#FFFFFF"><? echo $rij['id']; ?></td>
<td bgcolor="#FFFFFF"><a href="bekijk_topic.php?id=<? echo $rij['id']; ?>"><? echo $rij['topic']; ?></a><BR></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rij['bekeken']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rij['reacties']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rij['datumtijd']; ?></td>
</tr>
<?php
// als je hierboven goed kijkt kom je deze regel tegen:
// <a href="bekijk_topic.php?id=<? echo $rij['id']; ? >">< ? echo $rij['topic']; ? ></a><br>
// deze regel zorgt ervoor dat als je er op klikt dat hij dan
// het topic ID naar de adres balk van je browser stuurt,
}
mysql_close();
// hier stopt de loop, (als het laatste topic is opgehaald)
// en de verbinding met de database word weer verbroken.
// en hieronder laten we een link op het beeldscherm plaatsen
// die het mogelijk maakt voor de gebruiker om een nieuw topic
// aan te maken.
//
//by MarViiN's
?>
<tr>
<td colspan="5" align="right" bgcolor="#E6E6E6"><a href="maak_topic.php"><strong>Maak een nieuw Topic aan</strong> </a></td>
</tr>
</table>
Pagina 5
Stap 2) Maak topic (interface)
Een forum moet een pagina hebben waar je een nieuw topic kan beginnen.
Door middel van onderstaand script kun je een pagina maken die de benodigdheden vraagt waarmee je een topic kan aanmaken in je database.
==========
maak_topic.php
==========
<?php
include('verbinden.php');
// eerst maken we verbinding met de database want
// we willen wat toe gaan voegen dus dan moet er wel
// een verbinding zijn
echo '
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr><form id="form1" name="form1" method="post" action="toevoegen_topic.php"><td>';
// bovenstaande regel bevat 'action="toevoegen_topic.php"
// dat geeft de pagina aan WAAR de ingevulde gegevens
// naar toe moeten worden verzonden na het drukken op de
// knop.. door middel van method="POST" word aangegeven
// dat de informatie verstuur moet worden.
echo '
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3" bgcolor="#E6E6E6"><strong>Maak Nieuw Topic</strong> </td>
</tr>
<tr>
<td width="14%"><strong>Titel</strong></td>
<td width="2%">:</td>
<td width="84%"><input name="topic" type="text" size="50" /></td>
</tr>
<tr>
<td valign="top"><strong>Bericht</strong></td>
<td valign="top">:</td>
<td><textarea name="bericht" cols="50" rows="3"></textarea></td>
</tr>
<tr>
<td><strong>Naam</strong></td>
<td>:</td>
<td><input name="naam" type="text" id="name" size="50" /></td>
</tr>
<tr>
<td><strong>Email</strong></td>
<td>:</td>
<td><input name="email" type="text" id="email" size="50" /></td>
</tr>
';
// in het grote stuk code hierboven worden de
// invulvelden gemaakt en weergegeven. Als
// je hier een beetje mee speelt krijg je al
// snel door hoe je bepaalde dingen anders
// kunt weergeven.
echo'<tr><td></td><td> </td>
<td>
<input type="submit" name="toevoegen" value="Toevoegen" />
<input type="reset" name="Submit2" value="Wis velden" /></td>
';
// hierboven is de knop aangemaakt om alles
// te versturen, een knop die iets moet versturen
// moet altijd type="submit" zijn, er zijn meer
// mogelijkheden maar dit is een basic regel.
// het type="reset" spreekt denk ik voor zich, dit reset
// alle ingevulde waardes, en dus is je formulier
// weer leeg.
echo'</tr></table></td></form></tr></table>';
?>
Door middel van onderstaand script kun je een pagina maken die de benodigdheden vraagt waarmee je een topic kan aanmaken in je database.
==========
maak_topic.php
==========
<?php
include('verbinden.php');
// eerst maken we verbinding met de database want
// we willen wat toe gaan voegen dus dan moet er wel
// een verbinding zijn
echo '
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr><form id="form1" name="form1" method="post" action="toevoegen_topic.php"><td>';
// bovenstaande regel bevat 'action="toevoegen_topic.php"
// dat geeft de pagina aan WAAR de ingevulde gegevens
// naar toe moeten worden verzonden na het drukken op de
// knop.. door middel van method="POST" word aangegeven
// dat de informatie verstuur moet worden.
echo '
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3" bgcolor="#E6E6E6"><strong>Maak Nieuw Topic</strong> </td>
</tr>
<tr>
<td width="14%"><strong>Titel</strong></td>
<td width="2%">:</td>
<td width="84%"><input name="topic" type="text" size="50" /></td>
</tr>
<tr>
<td valign="top"><strong>Bericht</strong></td>
<td valign="top">:</td>
<td><textarea name="bericht" cols="50" rows="3"></textarea></td>
</tr>
<tr>
<td><strong>Naam</strong></td>
<td>:</td>
<td><input name="naam" type="text" id="name" size="50" /></td>
</tr>
<tr>
<td><strong>Email</strong></td>
<td>:</td>
<td><input name="email" type="text" id="email" size="50" /></td>
</tr>
';
// in het grote stuk code hierboven worden de
// invulvelden gemaakt en weergegeven. Als
// je hier een beetje mee speelt krijg je al
// snel door hoe je bepaalde dingen anders
// kunt weergeven.
echo'<tr><td></td><td> </td>
<td>
<input type="submit" name="toevoegen" value="Toevoegen" />
<input type="reset" name="Submit2" value="Wis velden" /></td>
';
// hierboven is de knop aangemaakt om alles
// te versturen, een knop die iets moet versturen
// moet altijd type="submit" zijn, er zijn meer
// mogelijkheden maar dit is een basic regel.
// het type="reset" spreekt denk ik voor zich, dit reset
// alle ingevulde waardes, en dus is je formulier
// weer leeg.
echo'</tr></table></td></form></tr></table>';
?>
Pagina 6
Stap 3) Toevoegen Topic (script)
we hebben net gezien hoe we de gegevens konden versturen met een invulformulier. het zou makkelijk zijn om te weten hoe we deze verstuurde
gegevens weer op konden vangen om er verder mee te werken...
hoe dat moet, zie je heel uitgebreid uitgelegd hieronder.
=============
toevoegen_topic.php
=============
gegevens weer op konden vangen om er verder mee te werken...
hoe dat moet, zie je heel uitgebreid uitgelegd hieronder.
=============
toevoegen_topic.php
=============
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// verbinding maken met de database
include('verbinden.php');
// ingevulde waardes 'opvangen' en tijdelijk opslaan
$topic=$_POST['topic'];
$bericht=$_POST['bericht'];
$naam=$_POST['naam'];
$email=$_POST['email'];
// Bovenstaande gegevens komen uit het invulformulier
// overal waar je hier beneden nu nog '$topic' tegenkomt
// staat dus eigenlijk:
// "de inhoud van het hokje 'topic' van het invulformulier
// op de vorige pagina".
// voor de andere drie geld hetzelfde.
$datumtijd=date("d/m/y h:i:s"); //create date time
// hier word de datum van de server opgeslagen, dit gaat
// automatisch en je merkt hier dus niets van, dit is alleen
// wel nodig om de datum weer te kunnen geven bij het topic
// gegevens wegschrijven naar de database 'forum'
$sqlcode="INSERT INTO vraag (topic, bericht, naam, email, datumtijd)VALUES('$topic', '$bericht', '$naam', '$email', '$datumtijd')";
$resultaat=mysql_query($sqlcode)or die(mysql_error());
// hier worden de ingevulde velden van het invulformulier
// opgeslagen in de database en het resultaat daarvan wordt
// even onthouden.
if($resultaat){
echo "Toevoegen Gelukt!!<BR>";
echo "<a href=forum.php>Topic Overzicht</a>";
}
else {
echo "Toevoegen Mislukt";
}
// als het topic succesvol is toegevoegd in de database
// krijgt de gebruiker de melding 'Toevoegen gelukt' te zien
// als het fout ging zie je 'Toevoegen Mislukt'..
mysql_close();
// hiermee kun je de verbinding met de database weer verbreken
}
?>
Pagina 7
Stap 4) Topic bekijken & maak Reacties (interface)
als iemand de lijst heeft opgevraagd wil diegene ook vast en zeker
een topic willen openen die hem/haar aanspreekt. als iemand dan op
1 van de topics klikt word er een ID van dat topic naar de adresbar in de internetbrowser gestuurd... hieronder vertel ik tussen de codes door wat er daarna gebeurd.
==========
bekijk_topic.php
==========
een topic willen openen die hem/haar aanspreekt. als iemand dan op
1 van de topics klikt word er een ID van dat topic naar de adresbar in de internetbrowser gestuurd... hieronder vertel ik tussen de codes door wat er daarna gebeurd.
==========
bekijk_topic.php
==========
<?php
if(!isset($_GET['id']))
{
echo 'dit kan niet, ga terug waar je vandaan kwam';
}else{
// als eerst vraag ik natuurlijk dat ID nummer zodat ik
// weet over welk topic het gaat.. dit id slaan we op
// als $id
$id=$_GET['id']; // dmv van dit regeltje
// merk op dat de POST is veranderd in de GET!!
include('verbinden.php');
// nu even verbinden met de database
$sql="SELECT * FROM vraag WHERE id=".$id.";";
// hier zorg ik ervoor dat precies DAT id word
// opgevraagd uit de database er staat nu dus:
// selecteer alles van de tabel vraag waar het veldje id
// gelijk is aan mijn opgevraagd id uit de adresbalk
// (namelijk $id).
$resultaat=mysql_query($sql)or die(mysql_error());
$rij=mysql_fetch_array($resultaat);
// hier laten we die query $sql weer uitvoeren
// en hieronder word het topic weergegeven op je beeldscherm
echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"><tr><td>';
echo '<table width="100%" border="0" cellpadding="3" cellspacing="1" bordercolor="1" bgcolor="#FFFFFF">';
echo '<tr><td bgcolor="#F8F7F1"><strong>';
echo $rij['topic'];
echo '</strong></td></tr><tr><td bgcolor=#F8F7F1>';
echo $rij['bericht'];
echo '</td></tr><tr><td bgcolor=#F8F7F1><strong>Door :</strong>';
echo $rij['naam'];
echo '<strong>Email : </strong>';
echo $rij['email'];
echo '</td></tr><tr><td bgcolor=#F8F7F1><strong>Datum/tijd : </strong>';
echo $rij['datumtijd'];
echo '</td></tr></table></td></tr></table><BR>';
$sql2="SELECT * FROM antwoord WHERE vraag_id=".$id.";";
$resultaat2=mysql_query($sql2)or die(mysql_error());
while($rij2=mysql_fetch_array($resultaat2)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="18%" bgcolor="#F8F7F1"><strong>Naam</strong></td>
<td width="5%" bgcolor="#F8F7F1">:</td>
<td width="77%" bgcolor="#F8F7F1"><? echo $rij2['antwoord_naam'];//gegevens laten zien uit rij 'antwoord_naam'?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Email</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rij2['antwoord_email'];//gegevens laten zien uit rij 'antwoord_email'?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Reactie</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rij2['antwoord_antwoord'];//gegevens laten zien uit rij 'antwoord_antwoord'?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Datum/Tijd</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rij2['antwoord_datumtijd'];//gegevens laten zien uit rij 'antwoord_datumtijd'?></td>
</tr>
</table></td>
</tr>
</table><br>
<?
}
// we willen nu even zien hoevaak het topic is gezien dus
// vragen we op in de database het veldje 'bekeken'
// (daar staat een getal in weetje nog)
$rij=mysql_fetch_array($resultaat);
$bekeken=$rij['bekeken'];
// als het veldje 'bekeken' nog leeg is en dus de eerste
// bezoeker hem bekijkt,
// laten we in het legen veldje een '1' zetten
if(empty($bekeken)){
$bekeken=1;
$sql4="INSERT INTO vraag (bekeken) VALUES ('$bekeken') WHERE id='$id'";
$result4=mysql_query($sql4);
// er staat dus ongeveer in het nederlands:
// "zet een 1 in het veldje 'bekeken' die bij dit topic hoort"
}else{
// Als er al een 1 (of hoger) staat dan moet die opgehoogd
// worden met 1
$eenerbij=$bekeken+1;
$sql5="UPDATE vraag SET bekeken='$eenerbij' WHERE id='$id'";
$resultaat5=mysql_query($sql5)or die(mysql_error());
// in het nederlands weer:
// Update het veldje 'bekeken' door hem op te hogen met 1,
// MAAAAAAR alleen die hoort bij dit topic (WHERE id='$id')
}
mysql_close();
// de verbinding met de database mag weer verbroken worden..
// hieronder hebben we weer een nieuw formulier, die
// maakt het mogelijk voor bezoekers om te antwoorden..
// op het topic
?>
<BR>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="toevoegen_antwoord.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="18%"><strong>Naam</strong></td>
<td width="3%">:</td>
<td width="79%"><input name="antwoord_naam" type="text"size="45"></td>
</tr>
<tr>
<td><strong>Email</strong></td>
<td>:</td>
<td><input name="antwoord_email" type="text"size="45"></td>
</tr>
<tr>
<td valign="top"><strong>Reactie</strong></td>
<td valign="top">:</td>
<td><textarea name="antwoord_antwoord" cols="45" rij="3"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input name="id" type="hidden" value="<? echo $id; ?>"></td>
<td><input type="submit" name="Submit" value="Toevoegen"> <input type="reset" name="Submit2" value="Wis velden"></td>
</tr>
</table>
</td>
</form>
</tr>
<tr>
<td colspan="5" align="right" bgcolor="#E6E6E6"><a href="forum.php"><strong>Topic Overzicht</strong> </a></td>
</tr>
</table>
<?php
}
?>
Reacties
0