Gastenboek werkt phpmyadmin vraag
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
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
<?php
error_reporting(E_ALL);
$host = ""; // Je host
$user = ""; // Je MySQL gebruikersnaam
$pass = ""; // Je MySQL wachtwoord
$datb = "deb38778_student"; // Je MySQL database
// Verbinding maken
mysql_connect($host, $user, $pass) or die ("Kan geen connectie maken met MySQL");
mysql_select_db($datb) or die ("Kan database niet selecteren");
// UBB aanmaken
function ubb($string) {
$string = htmlspecialchars($string); // Beveiligen voor XSS injection
$string = stripslashes($string); // Slashes verwijderen
$string = nl2br($string); // Zorgen dat er meerdere regels gebruikt kunnen worden
$string = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $string); // [b][/b] => <b></b>
$string = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $string); // [i][/i] => <i></i>
$string = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $string); // [u][/u] => <u></u>
$string = preg_replace("#\[s\](.+?)\[/s\]#is", "<s>\\1</s>", $string); // [s][/s] => <s></s>
return $string;
}
$dagen = Array("zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gastenboek</title>
</head>
<body>
<h1>Reactie plaatsen</h1>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Als er een veld niet ingevuld is
if (empty($_POST['naam']) || empty($_POST['bericht'])) {
echo '<span style="color:red; font-weight: bold">Je hebt niet alle velden ingevuld!</span>';
} elseif (strlen($_POST['naam']) > 16 || strlen($_POST['bericht']) > 500) {
echo '<span style="color:red; font-weight: bold">De ingevulde velden hebben te veel karakters (naam maximaal 16, bericht maximaal 500)</span>';
} elseif ($_POST['dag'] != $dagen[date('w')]) {
echo '<span style="color:red; font-weight: bold">De ingevulde dagnaam klopt niet!</span>';
} else {
// Als alle velden ingevuld zijn wordt het bericht gefilterd toegevoegd
if (mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', NOW(), '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')")) {
echo '<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>';
} else {
echo '<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>';
}
}
}
?>
<form method="post" action=""><p>
Naam: (maximaal 16 karakters)<br />
<input type="text" name="naam" maxlength="16" /><br /><br />
Welke dag is het vandaag:<br />
<input type="text" name="dag" /><br /><br />
Bericht: (maximaal 500 karakters)<br />
<textarea name="bericht" id="tekst" rows="6" cols="37"></textarea><br /><br />
<input type="submit" value="Toevoegen" onclick="this.value='Reactie wordt geplaatst...';" /> <input type="reset" value="Herstel" />
</p></form>
<hr />
<p>
<?php
// Gegevens ophalen uit de database en sorteren op id
$sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC") or die (mysql_error());
if (mysql_num_rows($sql) == 0) {
// Als er nog geen reacties geplaatst zijn
echo 'We hebben nog geen reacties!';
} else {
while($data = mysql_fetch_assoc($sql)) {
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
echo '<b>Naam:</b> '.htmlspecialchars(stripslashes($data['naam'])).'<br />
<b>Datum:</b> '.htmlspecialchars(stripslashes($data['datum'])).'<br />
<b>Bericht:</b><br />'.ubb($data['bericht']).'<br /><br />';
}
}
?>
</p>
</body>
</html>
error_reporting(E_ALL);
$host = ""; // Je host
$user = ""; // Je MySQL gebruikersnaam
$pass = ""; // Je MySQL wachtwoord
$datb = "deb38778_student"; // Je MySQL database
// Verbinding maken
mysql_connect($host, $user, $pass) or die ("Kan geen connectie maken met MySQL");
mysql_select_db($datb) or die ("Kan database niet selecteren");
// UBB aanmaken
function ubb($string) {
$string = htmlspecialchars($string); // Beveiligen voor XSS injection
$string = stripslashes($string); // Slashes verwijderen
$string = nl2br($string); // Zorgen dat er meerdere regels gebruikt kunnen worden
$string = preg_replace("#\[b\](.+?)\[/b\]#is", "<b>\\1</b>", $string); // [b][/b] => <b></b>
$string = preg_replace("#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $string); // [i][/i] => <i></i>
$string = preg_replace("#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $string); // [u][/u] => <u></u>
$string = preg_replace("#\[s\](.+?)\[/s\]#is", "<s>\\1</s>", $string); // [s][/s] => <s></s>
return $string;
}
$dagen = Array("zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gastenboek</title>
</head>
<body>
<h1>Reactie plaatsen</h1>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Als er een veld niet ingevuld is
if (empty($_POST['naam']) || empty($_POST['bericht'])) {
echo '<span style="color:red; font-weight: bold">Je hebt niet alle velden ingevuld!</span>';
} elseif (strlen($_POST['naam']) > 16 || strlen($_POST['bericht']) > 500) {
echo '<span style="color:red; font-weight: bold">De ingevulde velden hebben te veel karakters (naam maximaal 16, bericht maximaal 500)</span>';
} elseif ($_POST['dag'] != $dagen[date('w')]) {
echo '<span style="color:red; font-weight: bold">De ingevulde dagnaam klopt niet!</span>';
} else {
// Als alle velden ingevuld zijn wordt het bericht gefilterd toegevoegd
if (mysql_query("INSERT INTO gastenboek (naam, bericht, datum, ip) VALUES ('".trim(mysql_real_escape_string($_POST['naam']))."', '".trim(mysql_real_escape_string($_POST['bericht']))."', NOW(), '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."')")) {
echo '<span style="color:green; font-weight: bold"Je reactie is succesvol toegevoegd!</span>';
} else {
echo '<span style="color:green; font-weight: bold">Er is iets fout gegaan en je reactie is niet toegevoegd. Probeer het later opnieuw.</span>';
}
}
}
?>
<form method="post" action=""><p>
Naam: (maximaal 16 karakters)<br />
<input type="text" name="naam" maxlength="16" /><br /><br />
Welke dag is het vandaag:<br />
<input type="text" name="dag" /><br /><br />
Bericht: (maximaal 500 karakters)<br />
<textarea name="bericht" id="tekst" rows="6" cols="37"></textarea><br /><br />
<input type="submit" value="Toevoegen" onclick="this.value='Reactie wordt geplaatst...';" /> <input type="reset" value="Herstel" />
</p></form>
<hr />
<p>
<?php
// Gegevens ophalen uit de database en sorteren op id
$sql = mysql_query("SELECT * FROM gastenboek ORDER BY datum DESC") or die (mysql_error());
if (mysql_num_rows($sql) == 0) {
// Als er nog geen reacties geplaatst zijn
echo 'We hebben nog geen reacties!';
} else {
while($data = mysql_fetch_assoc($sql)) {
// Als er wel reacties zijn geplaatst worden deze nu weergegeven
echo '<b>Naam:</b> '.htmlspecialchars(stripslashes($data['naam'])).'<br />
<b>Datum:</b> '.htmlspecialchars(stripslashes($data['datum'])).'<br />
<b>Bericht:</b><br />'.ubb($data['bericht']).'<br /><br />';
}
}
?>
</p>
</body>
</html>
dit gastenboek wil ik graag online zetten en nu heb ik een vraagje over het invullen van php my admin:
Code (php)
1
2
3
4
2
3
4
ALTER TABLE `gastenboek` CHANGE `naam` `naam` INT( 16 ) NOT NULL ,
CHANGE `bericht` `bericht` INT( 250 ) NOT NULL ,
CHANGE `datum` `datum` INT( 16 ) NOT NULL ,
CHANGE `ip` `ip` INT( 250 ) NOT NULL
CHANGE `bericht` `bericht` INT( 250 ) NOT NULL ,
CHANGE `datum` `datum` INT( 16 ) NOT NULL ,
CHANGE `ip` `ip` INT( 250 ) NOT NULL
zover ben ik gekomen maar er zit een ernstige fout
namelijk:
ik heb twee berichten geplaatst die verschijnen niet
kijk ik in de database dan staat er het volgende:
naam:0 bericht:0 datum 2022 en ip van mijn pc
weet iemand wat ik verkeert doe? hoe zal ik de table moeten maken om mijn berichtbaar wel zichtbaar te krijgen want online staat er precies het zelfde
naam 0 bericht 0 datum 2011 ip van mijn pc
in mijn bericht type ik iets van hoihoi bijv
graag advies
Graag in het vervolg bij code, [code] [/code] tags gebruiken. [/modedit]
Gewijzigd op 27/01/2011 11:28:53 door Bas IJzelendoorn
code] en [/code] tags.
- Error reporting (error_reporting) altijd uit op live website.
- Als je de mysql_connect opslaat in variabele kan je zien of er verbinding is, zie voorbeeld 2 op php.net.
- 'or die' is geen foutafhandeling. Dit kan netter.
- Twee bovenstaande punten geldt ook voor mysql_select_db.
- Inline style is niet handig / net.
- Bij formulierafhandeling kan je nog krijken naar trim.
- Bij dat dag gedoe in formulierafhandeling kan je ook nog strtolower gebruiken.
- Selecteer wat je wilt hebben, gebruik niet *.
- Waarom maak je je velden in je tabel allemaal van het type int? (Hint: voor datum kan je DATETIME gebruiken, heb je gelijk de tijd erbij).
Al met al ziet het er goed uit. Zie ook laatste reactie van mij.
- Code plaats je op het forum tussen [- Error reporting (error_reporting) altijd uit op live website.
- Als je de mysql_connect opslaat in variabele kan je zien of er verbinding is, zie voorbeeld 2 op php.net.
- 'or die' is geen foutafhandeling. Dit kan netter.
- Twee bovenstaande punten geldt ook voor mysql_select_db.
- Inline style is niet handig / net.
- Bij formulierafhandeling kan je nog krijken naar trim.
- Bij dat dag gedoe in formulierafhandeling kan je ook nog strtolower gebruiken.
- Selecteer wat je wilt hebben, gebruik niet *.
- Waarom maak je je velden in je tabel allemaal van het type int? (Hint: voor datum kan je DATETIME gebruiken, heb je gelijk de tijd erbij).
Al met al ziet het er goed uit. Zie ook laatste reactie van mij.
ALTER TABLE `gastenboek` CHANGE `naam` `naam` INT( 16 ) NOT NULL ,
CHANGE `bericht` `bericht` INT( 250 ) NOT NULL ,
CHANGE `datum` `datum` INT( 16 ) NOT NULL ,
CHANGE `ip` `ip` INT( 250 ) NOT NULL
INT staat voor integer (getal). Een naam is geen getal (maar varchar) en een bericht ook niet (is text). Datum moet je opslaan als datum type en IP als varchar.
Ik zou zeggen, begin vanuit hier maar eens te lezen:
http://dev.mysql.com/doc/refman/5.0/en/data-type-overview.html
Ozzie, je mag ook wel eens effe op F5 drukken hoor.
Je bedoelt dat je me voor was? :)
Hartelijk dank voor al jullie hulp bij het verbeteren en de myadmin instellingen
Vriendelijke groet Jeroen