na toevoegen weergeven?
Dit is merkwaardig.
Ik heb een case die reageert op 0 records, 1 record en meer dan1 record.
Als er geen record is, en dat is ook zo, toont hij een form.(administratie0.php)
Die verlaat ik na het invullen door op opslaan te klikken en dan wordt een query uitgevoerd:
administratie0.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
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
<?php
if (isset($_POST['knop_opslaan'])) {
$aantal['aantal'] = $aantal['aantal'] + 1;
include("administraties1.php");
} else {
?><form action="index.php" method="post">
<p><B>Voer hier de administratie gegevens in.<B></p>
<table>
<tr><td>
<div class="pf">Naam</div></td><td><input type="text" id="adm_naam" name="adm_naam" value="" tabindex="1" size="107">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer</div></td><td><input type="text" id="adm_straat" name="adm_straat" value="" tabindex="2" size="90">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" value="" tabindex="3" size="10">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats</div></td><td><input type="text" id="adm_postcode" name="adm_postcode" value="" tabindex="4" size="7">
<input type="text" id="adm_Plaats" name="adm_Plaats" value="" tabindex="5" size="93">
</td></tr><tr><td>
<div class="pf">Telefoonnr</div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" value="" tabindex="6" size="20">
</td></tr><tr><td>
<div class="pf">KvK</div></td><td><input type="text" id="adm_kvk" name="adm_kvk" value="" tabindex="7" size="20">
</td></tr><tr><td>
<div class="pf">BTWnr</div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" value="" tabindex="8" size="20">
</td></tr><tr><td>
<div class="pf">Website</div></td><td><input type="text" id="adm_website" name="adm_website" value="" tabindex="9" size="107">
</td></tr><tr><td>
<div class="pf">e-mail</div></td><td><input type="text" id="adm_email" name="adm_email" value="" tabindex="10" size="107">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
<?php
}
if (isset($_POST['knop_opslaan'])) {
$query01 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_email
) VALUES (
'" . $_POST["adm_naam"] . "', '" . $_POST["adm_straat"] . "', '" . $_POST["adm_huisnummer"] . "', '" . $_POST["adm_postcode"] . "', '" . $_POST["adm_Plaats"] . "', '" . $_POST["adm_telefoonnr"] . "', '" . $_POST["adm_kvk"] . "', '" . $_POST["adm_btwnr"] . "', '" . $_POST["adm_website"] . "', '" . $_POST["adm_email"] . "');";
$stmt = $dbh->prepare($query01);
$stmt->execute();
}?>
</table>
</form>
if (isset($_POST['knop_opslaan'])) {
$aantal['aantal'] = $aantal['aantal'] + 1;
include("administraties1.php");
} else {
?><form action="index.php" method="post">
<p><B>Voer hier de administratie gegevens in.<B></p>
<table>
<tr><td>
<div class="pf">Naam</div></td><td><input type="text" id="adm_naam" name="adm_naam" value="" tabindex="1" size="107">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer</div></td><td><input type="text" id="adm_straat" name="adm_straat" value="" tabindex="2" size="90">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" value="" tabindex="3" size="10">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats</div></td><td><input type="text" id="adm_postcode" name="adm_postcode" value="" tabindex="4" size="7">
<input type="text" id="adm_Plaats" name="adm_Plaats" value="" tabindex="5" size="93">
</td></tr><tr><td>
<div class="pf">Telefoonnr</div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" value="" tabindex="6" size="20">
</td></tr><tr><td>
<div class="pf">KvK</div></td><td><input type="text" id="adm_kvk" name="adm_kvk" value="" tabindex="7" size="20">
</td></tr><tr><td>
<div class="pf">BTWnr</div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" value="" tabindex="8" size="20">
</td></tr><tr><td>
<div class="pf">Website</div></td><td><input type="text" id="adm_website" name="adm_website" value="" tabindex="9" size="107">
</td></tr><tr><td>
<div class="pf">e-mail</div></td><td><input type="text" id="adm_email" name="adm_email" value="" tabindex="10" size="107">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
<?php
}
if (isset($_POST['knop_opslaan'])) {
$query01 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_email
) VALUES (
'" . $_POST["adm_naam"] . "', '" . $_POST["adm_straat"] . "', '" . $_POST["adm_huisnummer"] . "', '" . $_POST["adm_postcode"] . "', '" . $_POST["adm_Plaats"] . "', '" . $_POST["adm_telefoonnr"] . "', '" . $_POST["adm_kvk"] . "', '" . $_POST["adm_btwnr"] . "', '" . $_POST["adm_website"] . "', '" . $_POST["adm_email"] . "');";
$stmt = $dbh->prepare($query01);
$stmt->execute();
}?>
</table>
</form>
Dit werkt, want daarna zie ik in de tabel 1 record staan.
Maar aansluitend wil ik de informatie in een ander form weer tonen. Maar die blijkt dan leeg te zijn, terwijl ik toch echt een gevuld record in de tabel zie staan. Met F5 krijg ik het wel in beeld.
Als ik het hele programma opnieuw start, kom ik weer door de case, maar dit keer ziet hij dat er 1 record is en toont hij die met het zelfde form als dat ik eerder gebruikte nadat ik een record had toegevoegd. Maar dit keer zie ik het record wel in het form. Hier volgt de code om het ingevulde record te tonen.
administratie1.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
?php
$query01 = "SELECT * FROM tabel_administraties";
$stmt = $dbh->prepare($query01);
$stmt->execute();
//PDO::FETCH_ASSOC: returns an array indexed by column name as returned in your result set
$record = $stmt->fetch(PDO::FETCH_ASSOC);
echo "<table>";
echo "<tr><td>Administratie van: </td><td>" . $record['administraties_naam'] . "</TD></TR>";
echo "<tr><td>adres is: </td><td>" . $record['administraties_straat'] . " " . $record['administraties_huisnr'] . "</TD></TR>";
echo "<tr><td></td><td>" . $record['administraties_postcode'] . " " . $record['administraties_plaats'] . "</TD></TR>";
echo "<tr><td>Telefoonnr.: </td><td>" . $record['administraties_telefoonnr'] . "</TD></TR>";
echo "<tr><td>K.v.K. nr.: </td><td>" . $record['administraties_kvk'] . "</TD></TR>";
echo "<tr><td>B.T.W. nr.: </td><td>" . $record['administraties_btwnr'] . "</TD></TR>";
echo "<tr><td>e-mail adres: </td><td>" . $record['administraties_email'] . "</TD></TR>";
echo "</table>";
?>
$query01 = "SELECT * FROM tabel_administraties";
$stmt = $dbh->prepare($query01);
$stmt->execute();
//PDO::FETCH_ASSOC: returns an array indexed by column name as returned in your result set
$record = $stmt->fetch(PDO::FETCH_ASSOC);
echo "<table>";
echo "<tr><td>Administratie van: </td><td>" . $record['administraties_naam'] . "</TD></TR>";
echo "<tr><td>adres is: </td><td>" . $record['administraties_straat'] . " " . $record['administraties_huisnr'] . "</TD></TR>";
echo "<tr><td></td><td>" . $record['administraties_postcode'] . " " . $record['administraties_plaats'] . "</TD></TR>";
echo "<tr><td>Telefoonnr.: </td><td>" . $record['administraties_telefoonnr'] . "</TD></TR>";
echo "<tr><td>K.v.K. nr.: </td><td>" . $record['administraties_kvk'] . "</TD></TR>";
echo "<tr><td>B.T.W. nr.: </td><td>" . $record['administraties_btwnr'] . "</TD></TR>";
echo "<tr><td>e-mail adres: </td><td>" . $record['administraties_email'] . "</TD></TR>";
echo "</table>";
?>
Wie heeft er een tip.
Alvast bedankt.
Gewijzigd op 24/08/2017 23:15:28 door Frits van Leeuwen
- administratie0.php#4: Hier toon je de informatie via administraties1.php. Die is dan echter nog niet opgeslagen (= leeg).
- administratie0.php#34+: Hier sla je de informatie pas op.
Daarom zie je de info een 2e keer wel; als ie dan langs regel 4 komt is er wel wat te tonen.
Je zult je 'opslaan' code (blok na regel 34) dus voor je 'toon' code (regel 4) moeten plaatsen (meestal is het sowieso handig om eerst alle 'afhandeling' te doen, en dan pas met je presentatie/weergave aan de slag te gaan.
Verder kun je nog naar SQL-injectie kijken (voer maar eens een "'s Hertogenbosch" in) en Cross Site Scripting (voer maar eens <script>alert("XSS")</script> in).
Index.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
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
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
?>
<!DOCTYPE html>
<html>
<head>
<title>Basisbestand</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<header>
</header>
<content>
<?php
include("databaseopenen.php");
echo $b['algemeen']['programmanaam'] . " " . $b['algemeen']['versienummer'];
?>
<table class="empty">
<tr>
<td width="240" class="vak1">
</td>
<td class="programmadeel">
<form action="index.php" method="post">
<?php
if ($file_exist) {
$einde = false;
//aantal record tellen in een tabel
do {
$query00 = "SELECT COUNT(*) as aantal FROM tabel_administraties";
$stmt = $dbh->prepare($query00);
$stmt->execute();
//PDO::FETCH_ASSOC: returns an array indexed by column name as returned in your result set
$aantal = $stmt->fetch(PDO::FETCH_ASSOC);
switch($aantal['aantal']) :
case 0:
include("administraties0.php");
break;
case 1:
include("administraties1.php");
break;
default:
echo "<p>Er zijn meerdere administraties aanwezig.</p>";
//hier volgt een keuze knop van administraties
break;
endswitch;
} while ($einde);
} else {
echo "<p>Vermoedelijk is er iets mis gegaan bij de installatie.</p>";
//knop naar de installatie
echo "<p><button type="submit" formaction=install.php>Click hier om te installeren</button></p>";
}?>
</form>
</td>
</tr>
</table>
</content>
<footer>
</footer>
</body>
</html>
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
?>
<!DOCTYPE html>
<html>
<head>
<title>Basisbestand</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<header>
</header>
<content>
<?php
include("databaseopenen.php");
echo $b['algemeen']['programmanaam'] . " " . $b['algemeen']['versienummer'];
?>
<table class="empty">
<tr>
<td width="240" class="vak1">
</td>
<td class="programmadeel">
<form action="index.php" method="post">
<?php
if ($file_exist) {
$einde = false;
//aantal record tellen in een tabel
do {
$query00 = "SELECT COUNT(*) as aantal FROM tabel_administraties";
$stmt = $dbh->prepare($query00);
$stmt->execute();
//PDO::FETCH_ASSOC: returns an array indexed by column name as returned in your result set
$aantal = $stmt->fetch(PDO::FETCH_ASSOC);
switch($aantal['aantal']) :
case 0:
include("administraties0.php");
break;
case 1:
include("administraties1.php");
break;
default:
echo "<p>Er zijn meerdere administraties aanwezig.</p>";
//hier volgt een keuze knop van administraties
break;
endswitch;
} while ($einde);
} else {
echo "<p>Vermoedelijk is er iets mis gegaan bij de installatie.</p>";
//knop naar de installatie
echo "<p><button type="submit" formaction=install.php>Click hier om te installeren</button></p>";
}?>
</form>
</td>
</tr>
</table>
</content>
<footer>
</footer>
</body>
</html>
Er zijn geen records aanwezig en ik ga dan naar administraties0.php Er is nog niet op opslaan geklikt, dus val ik eerst in het invulscherm.
Daar vul ik de gegevens in en klik op opslaan.
(Als ik in de tabel kijk, zie ik dat hij daadwerkelijk is opgeslagen.)
Als ik dan opnieuw administraties0.php in ga, is de knop opslaan dus aangeklikt en open ik dus administraties1.php en wordt dit gepubliceerd als of er niets is ingevuld. (Na F5 zie ik in administraties1.php wel het ingevulde record.)
Als ik in de browser het tabblad sluit en opnieuw index.php open, krijg ik ook direct administraties1.php opgestart met daarin het ingevulde record.
Gewijzigd op 25/08/2017 14:15:49 door Frits van Leeuwen
- één URL is één pagina. Een indexpagina waar dus een keuze gemaakt kan worden uit verschillende administraties OF een formulier A getoond wordt OF formulier B getoond wordt is een slechte keuze. Maak hier aparte pagina's van en gebruik een REDIRECT om de gebruiker door te sturen naar een andere pagina als dat nodig is.
- Laat formulieren POSTEN naar dezelfde URL. Dus op pagina mysite.nl/new-administration.php post je je formulier naar dezelfde url: ook mysite.nl/new-administration.php. Je action attribuut kun je dan gewoon leeg laten <form action="" method="post">.
- gebruik if($_SERVER['REQUEST_METHOD'] == 'POST') om te checken of je formulier verzonden is
- Nadat een formulier verzonden is ga je de verzonden data VALIDEREN. Dat wil zeggen dat je de invoer controleert op onjuistheden en als die er zijn toon je je formulier opnieuw met een foutmelding. (handig feitje is dat je toch nog steeds op dezelfde URL bent gebleven). Als de gegevens correct zijn doe je wat nodig is zoals gegevens opslaan in de database of het verzenden van een email.
- Nadat een formulier voltooid en verwerkt is REDIRECT ALTIJD de gebruiker. Hiermee voorkom je voor een belangrijk deel dat formulieren twee of meerdere keren in je database toegevoegd worden. Bovendien zal je gebruiker niet meer zo een vervelende alert van zijn browser krijgen met de vraag of die de gegevens opnieuw wil indienen.
- Zet de HTML of de OUTPUT van je webpagina helemaal onder in. Bovenin je code komt je PHP logica (bijvoorbeeld om je formulier te verwerken)
Gewijzigd op 25/08/2017 18:06:49 door Frank Nietbelangrijk
Als ik het zo lees, lijkt het me allemaal wel heel logisch. Ik zal mijn kijk op het php programmeren wat moeten wijzigen. Ik begon al steeds meer het gevoel te krijgen dat ik een andere weg in moest slaan, maar zover was ik nog niet. Heb je ook wat tips op dat REDIRECT? Want daar heb ik wel oren naar. Onnodig klikken vind ik niet fijn in mijn programma.
Twee belangrijke dingen:
- voordat je de header() functie gebruikt mag je nog geen enkele OUTPUT verzonden hebben. Dat wil zeggen: geen HTML en geen echo's. ook geen spatie e.d. Dat is (o.a.) waarom ik ook hamer op php logica boven in je code en output onder in je code.
- voeg ook een exit() toe na een redirect om je code dan ook werkelijk te beëindigen.
Ook zijn mijn pagina's duidelijke en overzichtelijker geworden (in de code natuurlijk)
Bedankt.
Door het verder doorvoeren van dat wat ik er van heb begrepen of dacht begrepen te hebben, kreeg ik een oud probleem weer terug.
Als ik nu op "opslaan" klik, krijg ik weer een scherm, waarin alle velden van het form weer leeg zijn.
Ook in de database is het nu niet opgeslagen. De nieuwe versie van administratie0.php heb ik hier onder geplaatst. Is dit een beetje wat je bedoelde "Frans Nietbelangrijk"? En wie kan mij vertellen waar ik nu de mist in ga?
administratie0.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
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
<?php
if (isset($_POST['knop_opslaan'])) {
include("databaseopenen.php");
$query01 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_email
) VALUES (
'" . $_POST["adm_naam"] . "', '" . $_POST["adm_straat"] . "', '" . $_POST["adm_huisnummer"] . "', '" . $_POST["adm_postcode"] . "', '" . $_POST["adm_Plaats"] . "', '" . $_POST["adm_telefoonnr"]. "', '" . $_POST["adm_kvk"] . "', '" . $_POST["adm_btwnr"] . "', '" . $_POST["adm_website"] . "', '" . $_POST["adm_email"] . "');";
$stmt = $dbh->prepare($query01);
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$stmt->execute();
header("Location:index.php");
exit;
}
}
?>
<html>
<head>
<meta charset="utf-8">
<title>Administratie 0</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<table class="empty">
<tr>
<td width="250" class="vak1">
</td>
<td class="programmadeel">
<form action="" method="post">
<p><B>Voer hier de administratie gegevens in.<B></p>
<table>
<tr><td>
<div class="pf">Naam</div></td><td><input type="text" id="adm_naam" name="adm_naam" value="" tabindex="1" size="107">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer</div></td><td><input type="text" id="adm_straat" name="adm_straat" value="" tabindex="2" size="90">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" value="" tabindex="3" size="10">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats</div></td><td><input type="text" id="adm_postcode" name="adm_postcode" value="" tabindex="4" size="7">
<input type="text" id="adm_Plaats" name="adm_Plaats" value="" tabindex="5" size="93">
</td></tr><tr><td>
<div class="pf">Telefoonnr</div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" value="" tabindex="6" size="20">
</td></tr><tr><td>
<div class="pf">KvK</div></td><td><input type="text" id="adm_kvk" name="adm_kvk" value="" tabindex="7" size="20">
</td></tr><tr><td>
<div class="pf">BTWnr</div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" value="" tabindex="8" size="20">
</td></tr><tr><td>
<div class="pf">Website</div></td><td><input type="text" id="adm_website" name="adm_website" value="" tabindex="9" size="107">
</td></tr><tr><td>
<div class="pf">e-mail</div></td><td><input type="text" id="adm_email" name="adm_email" value="" tabindex="10" size="107">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
if (isset($_POST['knop_opslaan'])) {
include("databaseopenen.php");
$query01 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_email
) VALUES (
'" . $_POST["adm_naam"] . "', '" . $_POST["adm_straat"] . "', '" . $_POST["adm_huisnummer"] . "', '" . $_POST["adm_postcode"] . "', '" . $_POST["adm_Plaats"] . "', '" . $_POST["adm_telefoonnr"]. "', '" . $_POST["adm_kvk"] . "', '" . $_POST["adm_btwnr"] . "', '" . $_POST["adm_website"] . "', '" . $_POST["adm_email"] . "');";
$stmt = $dbh->prepare($query01);
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$stmt->execute();
header("Location:index.php");
exit;
}
}
?>
<html>
<head>
<meta charset="utf-8">
<title>Administratie 0</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<table class="empty">
<tr>
<td width="250" class="vak1">
</td>
<td class="programmadeel">
<form action="" method="post">
<p><B>Voer hier de administratie gegevens in.<B></p>
<table>
<tr><td>
<div class="pf">Naam</div></td><td><input type="text" id="adm_naam" name="adm_naam" value="" tabindex="1" size="107">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer</div></td><td><input type="text" id="adm_straat" name="adm_straat" value="" tabindex="2" size="90">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" value="" tabindex="3" size="10">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats</div></td><td><input type="text" id="adm_postcode" name="adm_postcode" value="" tabindex="4" size="7">
<input type="text" id="adm_Plaats" name="adm_Plaats" value="" tabindex="5" size="93">
</td></tr><tr><td>
<div class="pf">Telefoonnr</div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" value="" tabindex="6" size="20">
</td></tr><tr><td>
<div class="pf">KvK</div></td><td><input type="text" id="adm_kvk" name="adm_kvk" value="" tabindex="7" size="20">
</td></tr><tr><td>
<div class="pf">BTWnr</div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" value="" tabindex="8" size="20">
</td></tr><tr><td>
<div class="pf">Website</div></td><td><input type="text" id="adm_website" name="adm_website" value="" tabindex="9" size="107">
</td></tr><tr><td>
<div class="pf">e-mail</div></td><td><input type="text" id="adm_email" name="adm_email" value="" tabindex="10" size="107">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
en dan kijk je of het formulier via POST verstuurd is:
Best onlogisch.
Gebruik enkel alleen maar de tweede manier met REQUEST_METHOD bovenaan je script.
Verder lijkt het mij niet de bedoeling of de redirecten naar index, want zo gaat je $_POST waarde verloren, die je prima gebruiken in je formulier, om de ingevulde velden automatisch in te vullen als de validatie niet klopt.
gebruik, weet de pagina toch niet welke knop ik gedrukt heb? En onderaan werd mij geadviseerd om zo min mogelijk php code te hebben. Dus ik breng veel naar de bovenkant van de code.
Ik wil de input die op dit formulier gegeven wordt, in een database hebben, die ik vervolgens op index.php weer uitlees en ga tonen. Dit werkt al wel. Door het omgooien van de structuur bedacht ik weer nieuwe mogelijkheden. En 1 daar van is het presenteren van de administratie op de eerste pagina. En dat gedeelte werkt al wel.
Gewijzigd op 27/08/2017 22:56:10 door - Ariën -
Heb je dan meerdere submit-knoppen in je formulier? Ik tel er maar eentje.
aministratie0.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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
include("databaseopenen.php");
$query01 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_email
) VALUES (
'" . $_POST["adm_naam"] . "', '" . $_POST["adm_straat"] . "', '" . $_POST["adm_huisnummer"] . "', '" . $_POST["adm_postcode"] . "', '" . $_POST["adm_Plaats"] . "', '" . $_POST["adm_telefoonnr"]. "', '" . $_POST["adm_kvk"] . "', '" . $_POST["adm_btwnr"] . "', '" . $_POST["adm_website"] . "', '" . $_POST["adm_email"] . "');";
$stmt = $dbh->prepare($query01);
$stmt->execute();
}
?>
<html>
<head>
<meta charset="utf-8">
<title>index</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<table class="empty">
<tr>
<td width="250" class="vak1">
</td>
<td class="programmadeel">
<form action="index.php" method="post">
<p><B>Voer hier de administratie gegevens in.<B></p>
<table>
<tr><td>
<div class="pf">Naam</div></td><td><input type="text" id="adm_naam" name="adm_naam" value="" tabindex="1" size="107">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer</div></td><td><input type="text" id="adm_straat" name="adm_straat" value="" tabindex="2" size="90">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" value="" tabindex="3" size="10">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats</div></td><td><input type="text" id="adm_postcode" name="adm_postcode" value="" tabindex="4" size="7">
<input type="text" id="adm_Plaats" name="adm_Plaats" value="" tabindex="5" size="93">
</td></tr><tr><td>
<div class="pf">Telefoonnr</div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" value="" tabindex="6" size="20">
</td></tr><tr><td>
<div class="pf">KvK</div></td><td><input type="text" id="adm_kvk" name="adm_kvk" value="" tabindex="7" size="20">
</td></tr><tr><td>
<div class="pf">BTWnr</div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" value="" tabindex="8" size="20">
</td></tr><tr><td>
<div class="pf">Website</div></td><td><input type="text" id="adm_website" name="adm_website" value="" tabindex="9" size="107">
</td></tr><tr><td>
<div class="pf">e-mail</div></td><td><input type="text" id="adm_email" name="adm_email" value="" tabindex="10" size="107">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
if($_SERVER['REQUEST_METHOD'] == 'POST') {
include("databaseopenen.php");
$query01 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_email
) VALUES (
'" . $_POST["adm_naam"] . "', '" . $_POST["adm_straat"] . "', '" . $_POST["adm_huisnummer"] . "', '" . $_POST["adm_postcode"] . "', '" . $_POST["adm_Plaats"] . "', '" . $_POST["adm_telefoonnr"]. "', '" . $_POST["adm_kvk"] . "', '" . $_POST["adm_btwnr"] . "', '" . $_POST["adm_website"] . "', '" . $_POST["adm_email"] . "');";
$stmt = $dbh->prepare($query01);
$stmt->execute();
}
?>
<html>
<head>
<meta charset="utf-8">
<title>index</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<table class="empty">
<tr>
<td width="250" class="vak1">
</td>
<td class="programmadeel">
<form action="index.php" method="post">
<p><B>Voer hier de administratie gegevens in.<B></p>
<table>
<tr><td>
<div class="pf">Naam</div></td><td><input type="text" id="adm_naam" name="adm_naam" value="" tabindex="1" size="107">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer</div></td><td><input type="text" id="adm_straat" name="adm_straat" value="" tabindex="2" size="90">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" value="" tabindex="3" size="10">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats</div></td><td><input type="text" id="adm_postcode" name="adm_postcode" value="" tabindex="4" size="7">
<input type="text" id="adm_Plaats" name="adm_Plaats" value="" tabindex="5" size="93">
</td></tr><tr><td>
<div class="pf">Telefoonnr</div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" value="" tabindex="6" size="20">
</td></tr><tr><td>
<div class="pf">KvK</div></td><td><input type="text" id="adm_kvk" name="adm_kvk" value="" tabindex="7" size="20">
</td></tr><tr><td>
<div class="pf">BTWnr</div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" value="" tabindex="8" size="20">
</td></tr><tr><td>
<div class="pf">Website</div></td><td><input type="text" id="adm_website" name="adm_website" value="" tabindex="9" size="107">
</td></tr><tr><td>
<div class="pf">e-mail</div></td><td><input type="text" id="adm_email" name="adm_email" value="" tabindex="10" size="107">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
Maar nu even lekker slapen, dan hoop ik morgen weer verder te kunnen puzzelen.
Gewijzigd op 29/08/2017 20:55:03 door Frits van Leeuwen
Maar laten we niet alleen commentaar geven. Ik zie namelijk zeker al een verbetering :-) Je hebt het heel erg goed voor elkaar gekregen om de HTML (output) onderin te plaatsen. Het ziet er al zonder dat ik je code ga doorploegen veel logischer uit.
Ik wilde aan mijn vorige bericht nog een voorbeeldje toevoegen maar door gebeurtenissen in real life ben ik dat vergeten om te doen. Hier komt het:
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
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
<?php
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email)
{
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 2)
$errors[] = 'U heeft geen naam ingevuld.';
// validatieregels voor het mailadres
if(!strlen($email))
$errors[] = 'U heeft geen email adres ingevuld.';
else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
// geef de array met foutmeldingen terug
return $errors;
}
// initialisatie van de variabelen (zorgt er voor dat variabelen altijd bestaan en een standaardwaarde hebben).
$naam = '';
$email = '';
$errors = array();
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
$naam = $_POST['naam'];
$email = $_POST['email'];
// valideer de ingevulde gegevens
$errors = validate($naam, $email);
// als er dan geen fouten zijn stuur de gebruiker door naar een bedank pagina
if(!count($errors))
{
// Verwerk hier je formulier, bijvoorbeeld een email versturen of de gegevens opslaan in de database
header('Location: bedankt.html');
exit;
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>een titel</title>
</head>
<body>
<?php
if(count($errors)) {
echo '<ul id="errors">';
foreach($errors as $error) {
echo '<li>' . $error . '</li>';
}
echo '</ul>';
}
?>
<form action="" method="post">
<input type="text" name="naam" value="<?php echo htmlspecialchars($naam); ?>" />
<input type="email" name="email" value="<?php echo $email; ?>" />
<button type="submit">Verzenden</button>
</form>
</body>
</html>
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email)
{
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 2)
$errors[] = 'U heeft geen naam ingevuld.';
// validatieregels voor het mailadres
if(!strlen($email))
$errors[] = 'U heeft geen email adres ingevuld.';
else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
// geef de array met foutmeldingen terug
return $errors;
}
// initialisatie van de variabelen (zorgt er voor dat variabelen altijd bestaan en een standaardwaarde hebben).
$naam = '';
$email = '';
$errors = array();
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
$naam = $_POST['naam'];
$email = $_POST['email'];
// valideer de ingevulde gegevens
$errors = validate($naam, $email);
// als er dan geen fouten zijn stuur de gebruiker door naar een bedank pagina
if(!count($errors))
{
// Verwerk hier je formulier, bijvoorbeeld een email versturen of de gegevens opslaan in de database
header('Location: bedankt.html');
exit;
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>een titel</title>
</head>
<body>
<?php
if(count($errors)) {
echo '<ul id="errors">';
foreach($errors as $error) {
echo '<li>' . $error . '</li>';
}
echo '</ul>';
}
?>
<form action="" method="post">
<input type="text" name="naam" value="<?php echo htmlspecialchars($naam); ?>" />
<input type="email" name="email" value="<?php echo $email; ?>" />
<button type="submit">Verzenden</button>
</form>
</body>
</html>
Toevoeging op 27/08/2017 23:14:57:
Oh en deze regel:
Maak het jezelf niet te moeilijk en plaats deze gewoon boven in je code. en niet in een if statement want dan moet je daar de rest van je leven aan blijven denken ;-)
Als je op een knop Opslaan klikt, creëer je een nieuwe record met een nieuwe ID in de database of wijzig je een bestaande record met een bestaande ID uit de database. Die ID moet je hergebruiken in de redirect na het opslaan om een gevuld formulier weer te geven; je doet dat nu nog niet, waardoor je na het opslaan een leeg formulier ziet.
Ja klopt die logica zit hier niet in. Maar het is mijn bedoeling om de pagina, waarmee ik het record toevoeg, te sluiten. In een andere pagina (index.php) roep ik deze vervolgens op uit de database en toon ik hem als tekst. Er moet daar dan een knopje gaan komen om hem weer te kunnen wijzigen, maar zover ben ik nu nog niet. Ik wil eerst dat de toevoeg pagina administraties0.php een record kan toevoegen en dat ik die daarna dus verlaat.
Dit zijn de vier actions die meestal nodig zijn voor iedere "entiteit". Daarnaast is er vaak nog een pagina die alle adressen onder elkaar in tabelvorm laat zien met pagination.
Je hebt nu Create gedaan. Je kan dus nog drie pagina's maken:
- edit-address
- show-address
- delete-address
Er is echter wel een dingetje. Om een nieuw adres te maken hoeft je applicatie geen adres te laden uit de database maar om die andere drie acties te doen moet je applicatie wel weten WELK adres je wilt wijzigen/laten zien/verwijderen.
Die drie pagina's die gaan komen hebben dus een extra GET variabele nodig. Bijvoorbeeld:
http://my-site/show-address.php?id=5
In php ga je dan een SELECT of DELETE query toepassen die adres met id 5 uit de database haalt dan wel verwijderd.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
// show address
include("databaseopenen.php");
// initialisatie
$id = 0;
// probeer de GET variabele te verkrijgen. Het is nooit zeker dat je die meekrijgt dus testen!
if(isset($_GET['id']) {
$id = intval($_GET['id']);
}
$stmt = $dbh->prepare("SELECT * FROM tabel_administraties WHERE id=" . $id . " LIMIT 1");
$stmt->execute();
$row = $stmt->fetch();
if($row === false) {
// rij niet gevonden in de database
header('Location: index.php');
exit;
}
echo '<pre>' . print_r($row, true) . '</pre>';
?>
// show address
include("databaseopenen.php");
// initialisatie
$id = 0;
// probeer de GET variabele te verkrijgen. Het is nooit zeker dat je die meekrijgt dus testen!
if(isset($_GET['id']) {
$id = intval($_GET['id']);
}
$stmt = $dbh->prepare("SELECT * FROM tabel_administraties WHERE id=" . $id . " LIMIT 1");
$stmt->execute();
$row = $stmt->fetch();
if($row === false) {
// rij niet gevonden in de database
header('Location: index.php');
exit;
}
echo '<pre>' . print_r($row, true) . '</pre>';
?>
Gewijzigd op 28/08/2017 09:16:53 door Frank Nietbelangrijk
Als je verantwoordelijkheden netjes scheidt, moet het voor de voorkant niet uitmaken of de achterkant bij 'Opslaan' of 'Save' nu een INSERT of een UPDATE uitvoert. Zou je het objectgeoriënteerd bouwen, dan moet je bijvoorbeeld een user-object of een data-object aan een mapper kunnen doorgeven en moet die mapper vervolgens zelfstandig bepalen waar en hoe de data worden opgeslagen, zonder dat andere objecten zich daarover hoeven te bekommeren en zonder dat ze weten hoe de mapper intern werkt.
Ik kan nu even de wijzigingen niet doorvoeren. Maar als ik vanavond thuis ben wil ik het zeker gaan proberen. Ik hoop dan ook dat ik na het wijzigen van mijn code, na het toevoegen van het record door stap naar index.php . Ik hoef de informatie niet nog eens te bekijken.
CRUD.... de R is in orde.
CUD hou ik over. ;-)
De volgende stap wordt idd een lijstje tonen. van alle records en er daar 1 van kiezen. Maar dan wil ik die gekozen administratie tonen in index.php
Als dat gelukt is, ga ik ook om de E en de D er aan toe te voegen, om zo CRUD te voltooien. Ik wil dan in index.php knopjes plaatsen om te bewerken en te verwijderen.
Welke schermen ik dan nodig ga hebben, dat ga ik dan bekijken.
Maar dat zijn dingen die ik zelf heb ingepland om zo langzaam maar zeker vooruit te komen. Dit noem ik hier niet om er in het forum iets mee te doen. Maar alle tip zijn natuurlijk welkom.
- Waarom in index.php ?
>> Als dat gelukt is, ga ik ook om de E en de D er aan toe te voegen, om zo CRUD te voltooien. Ik wil dan in index.php knopjes plaatsen om te bewerken en te verwijderen.
- goed plan maar die knopjes maak je gewoon met <a href="http://my-site/show-address.php?id=5">show</a>. en met css kun je er de look aan geven alsof het een knop is.
Ik was idd. van plan mooie knopjes te maken met html en css
Maar het effect is toch nog steeds dat als ik een nieuw record (eerste record) toevoeg door hier de velden te vullen, dat ik daarna een schoon formulier krijg te zien en dat de database nog geen record bevat.
Wat is er dan toch mis? Kan iemand dat verklaren?
administraties0.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
include("databaseopenen.php");
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email) {
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 1) {
$errors[] = 'U heeft geen naam ingevuld.';
}
// validatieregels voor het mailadres
if(!strlen($email)) :
$errors[] = 'U heeft geen email adres ingevuld.';
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)):
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
endif;
// geef de array met foutmeldingen terug
return $errors;
}
// initialisatie van de variabelen (zorgt er voor dat variabelen altijd bestaan en een standaardwaarde hebben).
$naam = '';
$straat = '';
$huisnummer = '';
$postcode = '';
$plaats = '';
$telefoonnr = '';
$kvk = '';
$btwnr = '';
$website = '';
$email = '';
$errors = array();
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
$naam = $_POST["adm_naam"];
$straat = $_POST["adm_straat"];
$huisnummer = $_POST["adm_huisnummer"];
$postcode = $_POST["adm_postcode"];
$plaats = $_POST["adm_plaats"];
$telefoonnr = $_POST["adm_telefoonnr"];
$kvk = $_POST["adm_kvk"];
$btwnr = $_POST["adm_btwnr"];
$website = $_POST["adm_website"];
$email = $_POST["adm_email"];
// valideer de ingevulde gegevens
$errors = validate($naam, $email);
// als er dan geen fouten zijn stuur de gebruiker door naar een bedank pagina
if(!count($errors)) {
// Verwerk hier je formulier, bijvoorbeeld een email versturen of de gegevens opslaan in de database
$query01 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_email
) VALUES (
'" . $_POST["adm_naam"] . "', '" . $_POST["adm_straat"] . "', '" . $_POST["adm_huisnummer"] . "', '" . $_POST["adm_postcode"] . "', '" . $_POST["adm_plaats"] . "', '" . $_POST["adm_telefoonnr"]. "', '" . $_POST["adm_kvk"] . "', '" . $_POST["adm_btwnr"] . "', '" . $_POST["adm_website"] . "', '" . $_POST["adm_email"] . "');";
$stmt = $dbh->prepare($query01);
$stmt->execute();
header('Location: index.php');
exit;
}
}
?><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>administraties0</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<?php
if(count($errors)) {
echo '<ul id="errors">';
foreach($errors as $error) {
echo '<li>' . $error . '</li>';
}
echo '</ul>';
}
?>
<table class="empty">
<tr>
<td width="250" class="vak1">
</td>
<td class="programmadeel">
<form action="" method="post">
<p><B>Voer hier de administratie gegevens in.<B></p>
<table>
<tr><td>
<div class="pf">Naam</div></td><td><input type="text" id="adm_naam" name="adm_naam" value="" tabindex="1" size="107">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer</div></td><td><input type="text" id="adm_straat" name="adm_straat" value="" tabindex="2" size="90">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" value="" tabindex="3" size="10">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats</div></td><td><input type="text" id="adm_postcode" name="adm_postcode" value="" tabindex="4" size="7">
<input type="text" id="adm_Plaats" name="adm_plaats" value="" tabindex="5" size="93">
</td></tr><tr><td>
<div class="pf">Telefoonnr</div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" value="" tabindex="6" size="20">
</td></tr><tr><td>
<div class="pf">KvK</div></td><td><input type="text" id="adm_kvk" name="adm_kvk" value="" tabindex="7" size="20">
</td></tr><tr><td>
<div class="pf">BTWnr</div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" value="" tabindex="8" size="20">
</td></tr><tr><td>
<div class="pf">Website</div></td><td><input type="text" id="adm_website" name="adm_website" value="" tabindex="9" size="107">
</td></tr><tr><td>
<div class="pf">e-mail</div></td><td><input type="text" id="adm_email" name="adm_email" value="" tabindex="10" size="107">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
</table>
</form>
</td>
</tr>
</table>
</body>
</html>[\code]
include("databaseopenen.php");
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email) {
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 1) {
$errors[] = 'U heeft geen naam ingevuld.';
}
// validatieregels voor het mailadres
if(!strlen($email)) :
$errors[] = 'U heeft geen email adres ingevuld.';
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)):
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
endif;
// geef de array met foutmeldingen terug
return $errors;
}
// initialisatie van de variabelen (zorgt er voor dat variabelen altijd bestaan en een standaardwaarde hebben).
$naam = '';
$straat = '';
$huisnummer = '';
$postcode = '';
$plaats = '';
$telefoonnr = '';
$kvk = '';
$btwnr = '';
$website = '';
$email = '';
$errors = array();
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
$naam = $_POST["adm_naam"];
$straat = $_POST["adm_straat"];
$huisnummer = $_POST["adm_huisnummer"];
$postcode = $_POST["adm_postcode"];
$plaats = $_POST["adm_plaats"];
$telefoonnr = $_POST["adm_telefoonnr"];
$kvk = $_POST["adm_kvk"];
$btwnr = $_POST["adm_btwnr"];
$website = $_POST["adm_website"];
$email = $_POST["adm_email"];
// valideer de ingevulde gegevens
$errors = validate($naam, $email);
// als er dan geen fouten zijn stuur de gebruiker door naar een bedank pagina
if(!count($errors)) {
// Verwerk hier je formulier, bijvoorbeeld een email versturen of de gegevens opslaan in de database
$query01 = "INSERT INTO tabel_administraties (
administraties_naam, administraties_straat, administraties_huisnr, administraties_postcode, administraties_plaats, administraties_telefoonnr, administraties_kvk, administraties_btwnr, administraties_email
) VALUES (
'" . $_POST["adm_naam"] . "', '" . $_POST["adm_straat"] . "', '" . $_POST["adm_huisnummer"] . "', '" . $_POST["adm_postcode"] . "', '" . $_POST["adm_plaats"] . "', '" . $_POST["adm_telefoonnr"]. "', '" . $_POST["adm_kvk"] . "', '" . $_POST["adm_btwnr"] . "', '" . $_POST["adm_website"] . "', '" . $_POST["adm_email"] . "');";
$stmt = $dbh->prepare($query01);
$stmt->execute();
header('Location: index.php');
exit;
}
}
?><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>administraties0</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<?php
if(count($errors)) {
echo '<ul id="errors">';
foreach($errors as $error) {
echo '<li>' . $error . '</li>';
}
echo '</ul>';
}
?>
<table class="empty">
<tr>
<td width="250" class="vak1">
</td>
<td class="programmadeel">
<form action="" method="post">
<p><B>Voer hier de administratie gegevens in.<B></p>
<table>
<tr><td>
<div class="pf">Naam</div></td><td><input type="text" id="adm_naam" name="adm_naam" value="" tabindex="1" size="107">
</td></tr><tr><td>
<div class="pf">Straat + Huisnummer</div></td><td><input type="text" id="adm_straat" name="adm_straat" value="" tabindex="2" size="90">
<input type="text" id="adm_huisnummer" name="adm_huisnummer" value="" tabindex="3" size="10">
</td></tr><tr><td>
<div class="pf">Postcode + Plaats</div></td><td><input type="text" id="adm_postcode" name="adm_postcode" value="" tabindex="4" size="7">
<input type="text" id="adm_Plaats" name="adm_plaats" value="" tabindex="5" size="93">
</td></tr><tr><td>
<div class="pf">Telefoonnr</div></td><td><input type="text" id="adm_telefoonnr" name="adm_telefoonnr" value="" tabindex="6" size="20">
</td></tr><tr><td>
<div class="pf">KvK</div></td><td><input type="text" id="adm_kvk" name="adm_kvk" value="" tabindex="7" size="20">
</td></tr><tr><td>
<div class="pf">BTWnr</div></td><td><input type="text" id="adm_btwnr" name="adm_btwnr" value="" tabindex="8" size="20">
</td></tr><tr><td>
<div class="pf">Website</div></td><td><input type="text" id="adm_website" name="adm_website" value="" tabindex="9" size="107">
</td></tr><tr><td>
<div class="pf">e-mail</div></td><td><input type="text" id="adm_email" name="adm_email" value="" tabindex="10" size="107">
</td></tr><tr><td>
<input type="reset" value="Velden legen" id="knop_reset" name="knop_reset" alt="Alle velden terug zetten in de default waarde" tabindex="11">
</td><td>
<input type="submit" value="Opslaan"; id="knop_opslaan" name="knop_opslaan" alt="Administratie opslaan" tabindex="12">
</table>
</form>
</td>
</tr>
</table>
</body>
</html>[\code]