Tutorials
MySQL tabellen maken + nieuws systeem
Uitleg over hoe je database tabellen maakt in een MySQL database en hoe je daar nou een nieuws systeem van maakt.
Pagina 1
Wat is een database tabel?
Ten eerste moet je beschikken over een MySQL database. Als je niet weet wat dit is dan zou ik eerst even opzoeken wat een database is.
Een database tabel is een tabel waarin data wordt opgeslagen. Je kunt een database tabel goed vergelijken met een Word tabel of een html tabel. In deze heb je vaak verschillende kolommen. Op de eerste rij van de tabel heb je meestal de namen van elke kolom. Dit is gelijk aan een MySQL database. Als je de database zou benaderen via PHPmyAdmin (de standaard database management programma) zul je zien dat een tabel in een database hetzelfde eruit ziet als dus bijvoorbeeld een Word kolom.
In deze tutorial gaan we twee tabellen maken. Een nieuws tabel en een reactie tabel.
Een database tabel is een tabel waarin data wordt opgeslagen. Je kunt een database tabel goed vergelijken met een Word tabel of een html tabel. In deze heb je vaak verschillende kolommen. Op de eerste rij van de tabel heb je meestal de namen van elke kolom. Dit is gelijk aan een MySQL database. Als je de database zou benaderen via PHPmyAdmin (de standaard database management programma) zul je zien dat een tabel in een database hetzelfde eruit ziet als dus bijvoorbeeld een Word kolom.
In deze tutorial gaan we twee tabellen maken. Een nieuws tabel en een reactie tabel.
Pagina 2
Waarmee maak ik een database tabel?
Een tabel maak je met SQL codes. Dit zijn codes waarmee je dus commando's kunt uitvoeren in een database. Van een tabel maken tot een nieuwe rij invoegen, van een rij zoeken tot een rij verwijderen, alles wat je kunt doen binnen in een database, is hier mee mogelijk.
Pagina 3
Welke SQL codes gebruik ik voor een tabel?
Nogmaals, in deze tutorial gaan we twee tabellen maken. Een nieuws tabel en een reactie tabel.
Een tabel begin je met de volgende code. Hiermee maak (CREATE) je een table (TABLE) met een specifieke naam. Deze naam kun je zelf verzinnen dus (in dit geval nieuws).
<?
CREATE TABLE nieuws (
?>
Dit commando alleen zal niet werken. Je moet nu ook nog kolommen aanmaken. Deze kolom namen kunnen ook elke naam krijgen die ze willen. Let wel op bestaande SQL commando's zoals: date, table, create etc. want hierdoor zou je misschien een error kunnen krijgen. Het is aan te raden om als eerste kolom de kolom naam: id te gebruiken. Dit zodat elke rij (ook wel record genoemd) een uniek nummer heeft (een id dus). Zo heb je in een later stadium de mogelijkheid om een andere rij, uit dezelfde of een ander tabel, te linken. Hier kom ik later op terug bij het maken van de reactie kolom. Nu eerst dus de kolom: id, let er op dat je kolom namen altijd met kleine letters doet!! Zo kun je je nooit vergissen met het oproepen van een kolom in PHP.
<?
id int(11) auto_increment primary key,
?>
Met dit stukje hierboven maak ik de kolom id aan. De id is een INTEGER. Dit wil zeggen dat de waarde in deze kolom altijd een nummer moet bevatten en geen letters/tekens kan bevatten. Dit geef ik dus aan via: int(11). De 11 tussen haakjes geeft de hoeveelheid aan. De int(11) kan dus gaan tot id nummer: 999999999. Iets wat vrijwel niet snel gehaald wordt. Er staat ook auto_increment achter. Dit betekend dat als er een nieuwe rij wordt toegevoegd, de id kolom automatisch wordt opgeteld met 1. Dus als je drie rijen in je tabel hebt bestaan er 3 id's, 1, 2 en 3. Als er vervolgens een nieuwe rij wordt toegevoegd, krijgt de vierde rij, automatisch het id nummer 4. Als laatste staat er primary key in (dit mag ook alleen key zijn als je een MySQL versie hebt grooter dan 4.1). Het primary key gedeelte geeft aan dat de id uniek moet zijn.
Nu maken we de kolom titel. Hier komt de titel in van het nieuwsbericht.
<?
titel varchar(50) not null,
?>
Natuurlijk weer als eerste de kolom naam, dit is in dit geval titel. Varchar(50) geeft aan dat deze kolom naam cijfers, letters en tekens mag bevatten (varchar is dus cijfers,letters,tekens en int is dus alleen cijfers). De 50 tussen haakjes geeft aan dat de titel maximaal 50 karakters lang mag zijn. Varchar heeft een maximum van 255. Ga je hierboven dan moet je de attribute text gebruiken, hier in de volgende kolom meer over. De not null attribute geeft aan dat de kolom niet null mag zijn.
Bij een titel hoort ook een bericht. Dit doen we als volgt:
<?
bericht text not null,
?>
Als eerste weer de naam, dit is bericht. De attribute text geeft aan dat het een text is. We gebruiken hier geen varchar omdat varchar vast zit aan maximaal 255 tekens. Een bericht is meestal veel langer. Voor grote teksten dus het attribute text. Not null betekend weer dat het veld niet null mag zijn.
Het is ook altijd leuk om de datum te zien waarop iets is geplaatst. Dit doen we zo:
<?
datum varchar(16) not null
?>
Het valt je nu natuurlijk op dat er geen komma achter de null staat. Dit omdat ik zometeen van plan ben om de tabel te sluiten. Dit is dus de laatste kolom die ik aanmaak. Ik heb nu voor de lengte van 16 gekozen omdat een datum + tijd in de syntax die ik altijd gebruik 16 tekens heeft (spaties meegerekend): 05-09-2003 09:20. (tel maar :)).
Als je een naam bij een nieuwsbericht wil, kun je natuurlijk ook een extra kolom aanmaken die: naam heet. Hiervan maak je dan dus een varchar met de lengte van 30 ongeveer en deze mag dan ook niet null zijn. Probeer dit later maar eens, eerst verder met de tutorial. Vergeet als je dit later gaat doen niet de komma na het datum veld als je copy/paste.
Nu sluiten we de tabel. Dit doen we zo:
<?
);
?>
We hebben nu dus de volgende SQL code gemaakt:
<?
CREATE TABLE tabel_naam (
id int(11) auto_increment primary key,
titel varchar(50) not null,
bericht text not null,
datum varchar(16) not null
);
?>
Een tabel begin je met de volgende code. Hiermee maak (CREATE) je een table (TABLE) met een specifieke naam. Deze naam kun je zelf verzinnen dus (in dit geval nieuws).
<?
CREATE TABLE nieuws (
?>
Dit commando alleen zal niet werken. Je moet nu ook nog kolommen aanmaken. Deze kolom namen kunnen ook elke naam krijgen die ze willen. Let wel op bestaande SQL commando's zoals: date, table, create etc. want hierdoor zou je misschien een error kunnen krijgen. Het is aan te raden om als eerste kolom de kolom naam: id te gebruiken. Dit zodat elke rij (ook wel record genoemd) een uniek nummer heeft (een id dus). Zo heb je in een later stadium de mogelijkheid om een andere rij, uit dezelfde of een ander tabel, te linken. Hier kom ik later op terug bij het maken van de reactie kolom. Nu eerst dus de kolom: id, let er op dat je kolom namen altijd met kleine letters doet!! Zo kun je je nooit vergissen met het oproepen van een kolom in PHP.
<?
id int(11) auto_increment primary key,
?>
Met dit stukje hierboven maak ik de kolom id aan. De id is een INTEGER. Dit wil zeggen dat de waarde in deze kolom altijd een nummer moet bevatten en geen letters/tekens kan bevatten. Dit geef ik dus aan via: int(11). De 11 tussen haakjes geeft de hoeveelheid aan. De int(11) kan dus gaan tot id nummer: 999999999. Iets wat vrijwel niet snel gehaald wordt. Er staat ook auto_increment achter. Dit betekend dat als er een nieuwe rij wordt toegevoegd, de id kolom automatisch wordt opgeteld met 1. Dus als je drie rijen in je tabel hebt bestaan er 3 id's, 1, 2 en 3. Als er vervolgens een nieuwe rij wordt toegevoegd, krijgt de vierde rij, automatisch het id nummer 4. Als laatste staat er primary key in (dit mag ook alleen key zijn als je een MySQL versie hebt grooter dan 4.1). Het primary key gedeelte geeft aan dat de id uniek moet zijn.
Nu maken we de kolom titel. Hier komt de titel in van het nieuwsbericht.
<?
titel varchar(50) not null,
?>
Natuurlijk weer als eerste de kolom naam, dit is in dit geval titel. Varchar(50) geeft aan dat deze kolom naam cijfers, letters en tekens mag bevatten (varchar is dus cijfers,letters,tekens en int is dus alleen cijfers). De 50 tussen haakjes geeft aan dat de titel maximaal 50 karakters lang mag zijn. Varchar heeft een maximum van 255. Ga je hierboven dan moet je de attribute text gebruiken, hier in de volgende kolom meer over. De not null attribute geeft aan dat de kolom niet null mag zijn.
Bij een titel hoort ook een bericht. Dit doen we als volgt:
<?
bericht text not null,
?>
Als eerste weer de naam, dit is bericht. De attribute text geeft aan dat het een text is. We gebruiken hier geen varchar omdat varchar vast zit aan maximaal 255 tekens. Een bericht is meestal veel langer. Voor grote teksten dus het attribute text. Not null betekend weer dat het veld niet null mag zijn.
Het is ook altijd leuk om de datum te zien waarop iets is geplaatst. Dit doen we zo:
<?
datum varchar(16) not null
?>
Het valt je nu natuurlijk op dat er geen komma achter de null staat. Dit omdat ik zometeen van plan ben om de tabel te sluiten. Dit is dus de laatste kolom die ik aanmaak. Ik heb nu voor de lengte van 16 gekozen omdat een datum + tijd in de syntax die ik altijd gebruik 16 tekens heeft (spaties meegerekend): 05-09-2003 09:20. (tel maar :)).
Als je een naam bij een nieuwsbericht wil, kun je natuurlijk ook een extra kolom aanmaken die: naam heet. Hiervan maak je dan dus een varchar met de lengte van 30 ongeveer en deze mag dan ook niet null zijn. Probeer dit later maar eens, eerst verder met de tutorial. Vergeet als je dit later gaat doen niet de komma na het datum veld als je copy/paste.
Nu sluiten we de tabel. Dit doen we zo:
<?
);
?>
We hebben nu dus de volgende SQL code gemaakt:
<?
CREATE TABLE tabel_naam (
id int(11) auto_increment primary key,
titel varchar(50) not null,
bericht text not null,
datum varchar(16) not null
);
?>
Pagina 4
Het maken van de tweede tabel, reacties
We maken nu de tabel reacties. We gaan dit straks linken met de tabel nieuws. Zulke systemen gebruik ik voordurend. Erg handig en nuttig om te weten dus! Als je eenmaal het principe weet kun je hier alles mee maken.
<?
CREATE TABLE reacties (
id int(11) auto_increment primary key,
naam varchar(30) not null,
bericht text not null,
ipadres varchar(20) not null,
tid int(11) not null
);
?>
Dit is dus de tabel reacties. Je ziet twee bekende kolommen, namelijk id en bericht. Je ziet ook drie andere kolommen. Ten eerste naam, hier komt de naam van de persoon die een reactie plaatst in, lijkt me duidelijk. De syntax die er achter staat moet nu ook duidelijk voor je zijn. De tweede kolom die niet in de eerste stond is ipadres. Als er een reactie wordt geplaatst is het handig om de ipadres van de afzender op te slaan. Dit om misbruik te voorkomen.
Als laatste het veld: tid. Dit gebruiken we om de reacties met een nieuws bericht te associƫren. Hier komt een id van een nieuws rij in te staan.
Voorbeeld:
Het volgende staat in de kolom reacties:

Id, naam, bericht, ipadres zijn duidelijk lijkt mij. Het gaat nu om tid. Tid heb ik zo genoemd omdat het staat voor TO ID (naar id nummer in het Nederlands).
Nu de rijen in de kolom nieuws:

Omdat in de kolom tid van de tabel reacties 4 staat (een id nummer uit de tabel nieuws) kun je deze met behulp van een SQL code aan elkaar linken. Als je uit de database bijvoorbeeld nummer 4 opvraagd uit de tabel nieuws, kun je ook alle reacties opvragen uit de tabel reacties waar tid 4 is. Zo krijg je dus de reacties die voor het nieuws bericht met de id nummer 4 zijn gemaakt.. Beetje duidelijk? Ik zal het in een SQL code nogmaals proberen duidelijk te maken.
Als je in je PHP script het volgende hebt:
<?
//-- met deze SQL code haal je dus de rij uit de tabel naam nieuws waar id nummer 4 is
$sql = "SELECT id,titel,bericht,datum FROM nieuws WHERE id = 4";
$res = mysql_query($sql);
//-- laat vervolgens de data zien ..
//-- haal de reacties uit de tabel naam reacties waar tid 4..
$sql = "SELECT id,naam,bericht,ipadres,tid FROM reacties WHERE tid = 4";
$res = mysql_query($sql);
//-- laat vervolgens de reacties zie ..
?>
Voor een compleet overzicht van SQL commando's waarmee je data uit een database kunt halen en hoe je iets zoekt, wijzigd of verwijderd kun je deze tutorial lezen: http://www.phphulp.nl/php/tutorials/index.php?cat=3&id=2
<?
CREATE TABLE reacties (
id int(11) auto_increment primary key,
naam varchar(30) not null,
bericht text not null,
ipadres varchar(20) not null,
tid int(11) not null
);
?>
Dit is dus de tabel reacties. Je ziet twee bekende kolommen, namelijk id en bericht. Je ziet ook drie andere kolommen. Ten eerste naam, hier komt de naam van de persoon die een reactie plaatst in, lijkt me duidelijk. De syntax die er achter staat moet nu ook duidelijk voor je zijn. De tweede kolom die niet in de eerste stond is ipadres. Als er een reactie wordt geplaatst is het handig om de ipadres van de afzender op te slaan. Dit om misbruik te voorkomen.
Als laatste het veld: tid. Dit gebruiken we om de reacties met een nieuws bericht te associƫren. Hier komt een id van een nieuws rij in te staan.
Voorbeeld:
Het volgende staat in de kolom reacties:

Id, naam, bericht, ipadres zijn duidelijk lijkt mij. Het gaat nu om tid. Tid heb ik zo genoemd omdat het staat voor TO ID (naar id nummer in het Nederlands).
Nu de rijen in de kolom nieuws:

Omdat in de kolom tid van de tabel reacties 4 staat (een id nummer uit de tabel nieuws) kun je deze met behulp van een SQL code aan elkaar linken. Als je uit de database bijvoorbeeld nummer 4 opvraagd uit de tabel nieuws, kun je ook alle reacties opvragen uit de tabel reacties waar tid 4 is. Zo krijg je dus de reacties die voor het nieuws bericht met de id nummer 4 zijn gemaakt.. Beetje duidelijk? Ik zal het in een SQL code nogmaals proberen duidelijk te maken.
Als je in je PHP script het volgende hebt:
<?
//-- met deze SQL code haal je dus de rij uit de tabel naam nieuws waar id nummer 4 is
$sql = "SELECT id,titel,bericht,datum FROM nieuws WHERE id = 4";
$res = mysql_query($sql);
//-- laat vervolgens de data zien ..
//-- haal de reacties uit de tabel naam reacties waar tid 4..
$sql = "SELECT id,naam,bericht,ipadres,tid FROM reacties WHERE tid = 4";
$res = mysql_query($sql);
//-- laat vervolgens de reacties zie ..
?>
Voor een compleet overzicht van SQL commando's waarmee je data uit een database kunt halen en hoe je iets zoekt, wijzigd of verwijderd kun je deze tutorial lezen: http://www.phphulp.nl/php/tutorials/index.php?cat=3&id=2
Pagina 5
Met PHP nieuws + reacties uit de database halen
We hebben nu dus twee tabellen, die we met elkaar kunnen linken.. Hoop dat ik het duidelijk heb uitgelegd.. Anders plaats je maar een reactie op deze tutorial.. Eerst maken we overzicht.php (lees de comment tags goed!)
<?
//-- maak eerst de connectie met de database!
$user = "je_database_username";
$pass = "je_database_paswoord";
$host = "localhost";
$dbdb = "je_database_naam";
if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
{
echo "Kan geen verbinding maken met de database.";
exit();
}
unset($user);
unset($pass);
unset($host);
unset($dbdb);
//-- haal de nieuws berichten uit de database
$sql = "SELECT id,titel,datum FROM nieuws ORDER BY id DESC";
//-- via de functie mysql_query() kun je de SQL code
//-- die in $sql staat uitvoeren.
$res = mysql_query($sql);
echo "<b>nieuws overzicht</b><p>";
//-- kijk via de functie mysql_num_rows() hoeveel
//-- rijen er zijn. Deze moet groter of gelijk zijn
//-- aan 1. Is dit dat niet, dan zijn er dus geen
//-- rijen in de tabel nieuws, en dus ook geen
//-- nieuwsberichten.
if (mysql_num_rows($res) >= 1)
{
//-- met de functie mysql_fetch_array()
//-- zet je alle resultaten in een array
//-- en kun je deze aanroepen (in dit geval)
//-- via de variabele $row. Voorbeeld: $row[id]
//-- , $row[datum] en $row[titel] in dit geval omdat
//-- alleen de kolommen id, titel en datum uit
//-- de database worden geselecteerd (zoals
//-- je boven kunt zien in de SQL code).
//-- loop door de resultaten
while ($row = mysql_fetch_array($res))
{
//-- maakt linkje naar nieuws.php?id=<nummer>
//-- pak alleen de eerste 10 karakters van $row['datum']
//-- zodat alleen de datum en niet ook de tijd wordt
//-- getoond.
$row['datum'] = substr($row['datum'], 0, 10);
echo $row['datum'] . " <a href=\"nieuws.php?id=" . $row['id'] . "\">" . htmlentities($row['titel']) . "</a><br>";
}
}
//-- laat dit dus zien als er geen nieuwsberichten
//-- zijn.
else
{
echo "Er zijn geen nieuwsberichten.";
}
?>
Hiermee haal je dus alle nieuwsberichten uit de database. Het maakt van elke nieuws rij een linkje naar nieuws.php?id=<nummer>. Het id van een nieuwsbericht wordt dus meegestuurd aan nieuws.php. Zo kunnen we de juiste SQL code maken waarmee we alleen dat nieuws bericht uit de database selecteren. Ook kunnen we zo alleen de reacties uit de database halen die voor dat specifieke nieuwsbericht zijn bedoelt. Nu dus nieuws.php:
<?
//-- maak eerst de connectie met de database!
$user = "je_database_username";
$pass = "je_database_paswoord";
$host = "localhost";
$dbdb = "je_database_naam";
if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
{
echo "Kan geen verbinding maken met de database.";
exit();
}
unset($user);
unset($pass);
unset($host);
unset($dbdb);
//-- linkje terug naar het nieuws overzicht
echo "<a href=\"overzicht.php\">nieuws overzicht</a><p>";
//-- haal het specifieke nieuwsbericht uit de database
//-- $HTTP_GET_VARS[id] is het id adres die wordt meegegeven in de link.
$sql = "SELECT id,titel,bericht,datum FROM nieuws WHERE id = $HTTP_GET_VARS[id]";
//-- via de functie mysql_query() kun je de SQL code
//-- die in $sql staat uitvoeren.
$res = mysql_query($sql);
//-- via de functie mysql_fetch_array() zet je
//-- alle velden die je zojusit geselecteerd hebt
//-- van het specifieke nieuwsbericht in een array.
//-- je kunt ze dus aanroepen via $row[kolom_naam].
$row = mysql_fetch_array($res);
//-- zet enters om in <br>'s voor een juiste weergave
$row['bericht'] = nl2br(htmlentities($row['bericht']));
echo "<b>" . $row['titel'] . "</b> op " . $row['datum'] . "<p>";
echo $row['bericht'];
//-- dan nu de reacties
echo "------------------<br>";
echo "<b>Reacties:<br></b>";
echo "------------------<p>";
//-- haal alle reacties waarvan tid $HTTP_GET_VARS[id] is
//-- (deze variabele bestaat nog steeds natuurlijk want die
//-- is dus meegegeven in de link van overzicht.php
$sql = "SELECT naam,bericht FROM reacties WHERE tid = " . $_GET['id'];
//-- je weet wat er nu gebeurd met deze functie
$res = mysql_query($sql);
//-- je weet nu wat er gechecked wordt
if (mysql_num_rows($res) >= 1)
{
//-- je weet ook wat hier gebeurt
while ($row = mysql_fetch_array($res))
{
echo "<b>" . $row['naam'] . "</b><br>";
//-- sommige mensen vinden het leuk om
//-- bijvoorbeeld via reacties je layout
//-- te verknoeien. Dit kun je voorkomen
//-- met de functie htmlentities(). Deze
//-- zet namelijk alle HTML codes om in
//-- karakter entities. Dit houdt in dat
//-- van een < %lt; wordt gemaakt. Nu is
//-- het dus onmogelijk om de pagina te
//-- verknoeien via HTML tags..
$row['bericht'] = htmlentities($row['bericht']);
//-- deze moet na de htmlentities() aange-
//-- roepen worden. Dit omdat anders deze
//-- functie weinig zin heeft. Hij zet dan
//-- immers de <br>'s in <br> om :)
$row['bericht'] = nl2br($row['bericht']);
echo $row['bericht'] . "<p>";
}
}
else
{
//-- geen reacties
echo "Er zijn nog geen reacties.";
}
//-- linkje terug naar het nieuws overzicht
echo "<p><a href=\"overzicht.php\">nieuws overzicht</a></p>";
?>
Nu hebben we dus twee tabellen, een overzicht van nieuws berichten, en een overzicht van het specifieke nieuwsbericht met daarop reacties gemaakt. Nogmaals, voor meer SQL commando's tjek: http://www.phphulp.nl/php/tutorials/index.php?cat=3&id=2 !
<?
//-- maak eerst de connectie met de database!
$user = "je_database_username";
$pass = "je_database_paswoord";
$host = "localhost";
$dbdb = "je_database_naam";
if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
{
echo "Kan geen verbinding maken met de database.";
exit();
}
unset($user);
unset($pass);
unset($host);
unset($dbdb);
//-- haal de nieuws berichten uit de database
$sql = "SELECT id,titel,datum FROM nieuws ORDER BY id DESC";
//-- via de functie mysql_query() kun je de SQL code
//-- die in $sql staat uitvoeren.
$res = mysql_query($sql);
echo "<b>nieuws overzicht</b><p>";
//-- kijk via de functie mysql_num_rows() hoeveel
//-- rijen er zijn. Deze moet groter of gelijk zijn
//-- aan 1. Is dit dat niet, dan zijn er dus geen
//-- rijen in de tabel nieuws, en dus ook geen
//-- nieuwsberichten.
if (mysql_num_rows($res) >= 1)
{
//-- met de functie mysql_fetch_array()
//-- zet je alle resultaten in een array
//-- en kun je deze aanroepen (in dit geval)
//-- via de variabele $row. Voorbeeld: $row[id]
//-- , $row[datum] en $row[titel] in dit geval omdat
//-- alleen de kolommen id, titel en datum uit
//-- de database worden geselecteerd (zoals
//-- je boven kunt zien in de SQL code).
//-- loop door de resultaten
while ($row = mysql_fetch_array($res))
{
//-- maakt linkje naar nieuws.php?id=<nummer>
//-- pak alleen de eerste 10 karakters van $row['datum']
//-- zodat alleen de datum en niet ook de tijd wordt
//-- getoond.
$row['datum'] = substr($row['datum'], 0, 10);
echo $row['datum'] . " <a href=\"nieuws.php?id=" . $row['id'] . "\">" . htmlentities($row['titel']) . "</a><br>";
}
}
//-- laat dit dus zien als er geen nieuwsberichten
//-- zijn.
else
{
echo "Er zijn geen nieuwsberichten.";
}
?>
Hiermee haal je dus alle nieuwsberichten uit de database. Het maakt van elke nieuws rij een linkje naar nieuws.php?id=<nummer>. Het id van een nieuwsbericht wordt dus meegestuurd aan nieuws.php. Zo kunnen we de juiste SQL code maken waarmee we alleen dat nieuws bericht uit de database selecteren. Ook kunnen we zo alleen de reacties uit de database halen die voor dat specifieke nieuwsbericht zijn bedoelt. Nu dus nieuws.php:
<?
//-- maak eerst de connectie met de database!
$user = "je_database_username";
$pass = "je_database_paswoord";
$host = "localhost";
$dbdb = "je_database_naam";
if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
{
echo "Kan geen verbinding maken met de database.";
exit();
}
unset($user);
unset($pass);
unset($host);
unset($dbdb);
//-- linkje terug naar het nieuws overzicht
echo "<a href=\"overzicht.php\">nieuws overzicht</a><p>";
//-- haal het specifieke nieuwsbericht uit de database
//-- $HTTP_GET_VARS[id] is het id adres die wordt meegegeven in de link.
$sql = "SELECT id,titel,bericht,datum FROM nieuws WHERE id = $HTTP_GET_VARS[id]";
//-- via de functie mysql_query() kun je de SQL code
//-- die in $sql staat uitvoeren.
$res = mysql_query($sql);
//-- via de functie mysql_fetch_array() zet je
//-- alle velden die je zojusit geselecteerd hebt
//-- van het specifieke nieuwsbericht in een array.
//-- je kunt ze dus aanroepen via $row[kolom_naam].
$row = mysql_fetch_array($res);
//-- zet enters om in <br>'s voor een juiste weergave
$row['bericht'] = nl2br(htmlentities($row['bericht']));
echo "<b>" . $row['titel'] . "</b> op " . $row['datum'] . "<p>";
echo $row['bericht'];
//-- dan nu de reacties
echo "------------------<br>";
echo "<b>Reacties:<br></b>";
echo "------------------<p>";
//-- haal alle reacties waarvan tid $HTTP_GET_VARS[id] is
//-- (deze variabele bestaat nog steeds natuurlijk want die
//-- is dus meegegeven in de link van overzicht.php
$sql = "SELECT naam,bericht FROM reacties WHERE tid = " . $_GET['id'];
//-- je weet wat er nu gebeurd met deze functie
$res = mysql_query($sql);
//-- je weet nu wat er gechecked wordt
if (mysql_num_rows($res) >= 1)
{
//-- je weet ook wat hier gebeurt
while ($row = mysql_fetch_array($res))
{
echo "<b>" . $row['naam'] . "</b><br>";
//-- sommige mensen vinden het leuk om
//-- bijvoorbeeld via reacties je layout
//-- te verknoeien. Dit kun je voorkomen
//-- met de functie htmlentities(). Deze
//-- zet namelijk alle HTML codes om in
//-- karakter entities. Dit houdt in dat
//-- van een < %lt; wordt gemaakt. Nu is
//-- het dus onmogelijk om de pagina te
//-- verknoeien via HTML tags..
$row['bericht'] = htmlentities($row['bericht']);
//-- deze moet na de htmlentities() aange-
//-- roepen worden. Dit omdat anders deze
//-- functie weinig zin heeft. Hij zet dan
//-- immers de <br>'s in <br> om :)
$row['bericht'] = nl2br($row['bericht']);
echo $row['bericht'] . "<p>";
}
}
else
{
//-- geen reacties
echo "Er zijn nog geen reacties.";
}
//-- linkje terug naar het nieuws overzicht
echo "<p><a href=\"overzicht.php\">nieuws overzicht</a></p>";
?>
Nu hebben we dus twee tabellen, een overzicht van nieuws berichten, en een overzicht van het specifieke nieuwsbericht met daarop reacties gemaakt. Nogmaals, voor meer SQL commando's tjek: http://www.phphulp.nl/php/tutorials/index.php?cat=3&id=2 !
Pagina 6
Tot slot, rijen invoegen
Je kunt rijen invoegen met database management progjes. Aan te raden is PHPMyAdmin. Deze heeft bijna elke hosting provider wel die MySQL databases aanbiedt. Heeft jou hosting provider dit niet, dan kun je een programma zoals Mascon downloaden. Kijk voor een trial version op www.download.com.
Ook kun je rijen invoegen via een scriptje die ik gemaakt heb: http://www.phphulp.nl/php/scripts/3/18 .. Hiermee kun je de SQL commando's proberen..
Ik wil je dus leren hoe het principe werkt. Het toevoegen van reacties heb ik hier niet bij toegevoegd. Een compleet nieuws systeem kun je hier vinden: http://www.phphulp.nl/php/scripts/7/72. Maar natuurlijk maak je daar geen gebruik van want je kunt het nu ook zelf maken..
Ik wens je veel succes met de database, tabellen en PHP scriptings.. Heb je nog vragen over deze tutorial dan kun je een reactie achterlaten. BTW, heb alles getest en het werkt.. Daar kan het niet aan liggen dus :)
Je hebt nu de skills om tabellen aan te maken en de inhoud van deze tabellen te tonen via PHP..
Ook kun je rijen invoegen via een scriptje die ik gemaakt heb: http://www.phphulp.nl/php/scripts/3/18 .. Hiermee kun je de SQL commando's proberen..
Ik wil je dus leren hoe het principe werkt. Het toevoegen van reacties heb ik hier niet bij toegevoegd. Een compleet nieuws systeem kun je hier vinden: http://www.phphulp.nl/php/scripts/7/72. Maar natuurlijk maak je daar geen gebruik van want je kunt het nu ook zelf maken..
Ik wens je veel succes met de database, tabellen en PHP scriptings.. Heb je nog vragen over deze tutorial dan kun je een reactie achterlaten. BTW, heb alles getest en het werkt.. Daar kan het niet aan liggen dus :)
Je hebt nu de skills om tabellen aan te maken en de inhoud van deze tabellen te tonen via PHP..
Reacties
0