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!)
Code (php)
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?
//-- 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.";
}
?>
//-- 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:
Code (php)
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?
//-- 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>";
?>
//-- 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 !
« vorige pagina | volgende pagina »
Inhoudsopgave
- Wat is een database tabel?
- Waarmee maak ik een database tabel?
- Welke SQL codes gebruik ik voor een tabel?
- Het maken van de tweede tabel, reacties
- Met PHP nieuws + reacties uit de database halen
- Tot slot, rijen invoegen