Gegevens aan database toevoegen lukt niet.
Ik heb een script gemaakt waarbij je je bmi kan berekenen, je feedback krijgt en je gegevens dan toegevoegd zouden moeten worden aan de database. Bij dat laatste zit ik strop en ik kan niet vinden waar de fout ligt. Laat ik het stukje over de feedback weg, lukt toevoegen wel. Wil ik het toevoegen erbij, dan komt er geen feedback meer. De combinatie van en feedback en toevoegen lukt dus niet.
Zou iemand mij op weg kunnen zetten aub? Alvast heel erg bedankt!
Mijn index-bestand :
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
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
<?php
include 'includes/config.inc.php';
include 'includes/functies.inc.php';
include 'includes/foutmeldingen.inc.php';
$query = 'SELECT * FROM gegevens;';
$stmt = $conn->prepare($query);
$stmt->execute();
$gegevens = $stmt->fetchALL();
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title> BMI-gegevens</title>
<link rel="stylesheet" type="text/css" href="css/opmaak.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
</head>
<body>
<h1>bereken jouw bmi</h1>
<h2>vul onderstaand formulier in om je bmi te berekenen</h2>
<form method="post">
<p>
<label for="naam">Naam</label>
<input type="text" id="naam" name="naam"
value="<?php if(!empty($_POST['naam'])) { print $_POST['naam']; } ?>" required>
</p>
<p>
<label for="lengte">Ik meet</label>
<input type="text" name="lengte" id="lengte"
value="<?php if(!empty($_POST['lengte'])) { print $_POST['lengte']; } ?>" required> cm.
</p>
<p>
<label for="gewicht">Ik weeg</label>
<input type="text" name="gewicht" id="gewicht" required
value="<?php if(!empty($_POST['gewicht'])) { print $_POST['gewicht']; } ?>"> kg.
</p>
<input type="submit" name="submit" value="Bereken mijn bmi" id="verzenden">
</form>
<div class="feedback">
<?php
if($_POST) {
if(empty($error)){
print "Hallo" . " " . $data['naam'] . "!";
print "<p>Je BMI bedraagt " . bereken_bmi($lengte, $gewicht) . ".</p>";
print "<p>" . feedback($bmi) . "!</p>";
} elseif (!empty($error)){
print "Je hebt niet alles (correct) ingevuld :";
foreach ($error as $error) {
print "<p>" . $error . "</p>";
}
}
}
?>
</div>
<table>
<tr>
<th>Datum</th>
<th>Naam</th>
<th>Lengte</th>
<th>Gewicht</th>
<th>Verwijder</th>
</tr>
<?php foreach($gegevens as $data): ?>
<tr>
<td><?php echo date('d-m-Y')?></td>
<td><?php print $data ['naam']?></td>
<td><?php print $data ['lengte']?></td>
<td><?php print $data ['gewicht']?></td>
<td><a href="verwijderen.php?id=<?php print $data['id'] ?>"><i class="fa fa-minus-circle"></i></a> </td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
include 'includes/config.inc.php';
include 'includes/functies.inc.php';
include 'includes/foutmeldingen.inc.php';
$query = 'SELECT * FROM gegevens;';
$stmt = $conn->prepare($query);
$stmt->execute();
$gegevens = $stmt->fetchALL();
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title> BMI-gegevens</title>
<link rel="stylesheet" type="text/css" href="css/opmaak.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
</head>
<body>
<h1>bereken jouw bmi</h1>
<h2>vul onderstaand formulier in om je bmi te berekenen</h2>
<form method="post">
<p>
<label for="naam">Naam</label>
<input type="text" id="naam" name="naam"
value="<?php if(!empty($_POST['naam'])) { print $_POST['naam']; } ?>" required>
</p>
<p>
<label for="lengte">Ik meet</label>
<input type="text" name="lengte" id="lengte"
value="<?php if(!empty($_POST['lengte'])) { print $_POST['lengte']; } ?>" required> cm.
</p>
<p>
<label for="gewicht">Ik weeg</label>
<input type="text" name="gewicht" id="gewicht" required
value="<?php if(!empty($_POST['gewicht'])) { print $_POST['gewicht']; } ?>"> kg.
</p>
<input type="submit" name="submit" value="Bereken mijn bmi" id="verzenden">
</form>
<div class="feedback">
<?php
if($_POST) {
if(empty($error)){
print "Hallo" . " " . $data['naam'] . "!";
print "<p>Je BMI bedraagt " . bereken_bmi($lengte, $gewicht) . ".</p>";
print "<p>" . feedback($bmi) . "!</p>";
} elseif (!empty($error)){
print "Je hebt niet alles (correct) ingevuld :";
foreach ($error as $error) {
print "<p>" . $error . "</p>";
}
}
}
?>
</div>
<table>
<tr>
<th>Datum</th>
<th>Naam</th>
<th>Lengte</th>
<th>Gewicht</th>
<th>Verwijder</th>
</tr>
<?php foreach($gegevens as $data): ?>
<tr>
<td><?php echo date('d-m-Y')?></td>
<td><?php print $data ['naam']?></td>
<td><?php print $data ['lengte']?></td>
<td><?php print $data ['gewicht']?></td>
<td><a href="verwijderen.php?id=<?php print $data['id'] ?>"><i class="fa fa-minus-circle"></i></a> </td>
</tr>
<?php endforeach; ?>
</table>
</body>
</html>
Mijn config.inc bestand :
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
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
<?php
$dbUser= 'root';
$dbPass = 'root';
$dbName = 'bmi';
$conn = new PDO("mysql:host=localhost;dbname=$dbName", $dbUser, $dbPass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>
[b]Mijn functies-bestand : [/b]
<?php
function bereken_bmi($lengte, $gewicht) {
$lengte = $_POST['lengte'];
$gewicht = $_POST['gewicht'];
$bmi = $gewicht / (($lengte / 100) * ($lengte / 100));
return $bmi;
}
function feedback($bmi){
$lengte = $_POST['lengte'];
$gewicht = $_POST['gewicht'];
$bmi = $gewicht / (($lengte / 100) * ($lengte / 100));
if($bmi < 18){
$message = "je bent te mager";
return $message;
} elseif ($bmi >= 18 && $bmi <= 25){
$message = "je hebt een normaal gewicht";
return $message;
} elseif ($bmi > 25){
$message = "je hebt overgewicht";
return $message;
}
}
?>
$dbUser= 'root';
$dbPass = 'root';
$dbName = 'bmi';
$conn = new PDO("mysql:host=localhost;dbname=$dbName", $dbUser, $dbPass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>
[b]Mijn functies-bestand : [/b]
<?php
function bereken_bmi($lengte, $gewicht) {
$lengte = $_POST['lengte'];
$gewicht = $_POST['gewicht'];
$bmi = $gewicht / (($lengte / 100) * ($lengte / 100));
return $bmi;
}
function feedback($bmi){
$lengte = $_POST['lengte'];
$gewicht = $_POST['gewicht'];
$bmi = $gewicht / (($lengte / 100) * ($lengte / 100));
if($bmi < 18){
$message = "je bent te mager";
return $message;
} elseif ($bmi >= 18 && $bmi <= 25){
$message = "je hebt een normaal gewicht";
return $message;
} elseif ($bmi > 25){
$message = "je hebt overgewicht";
return $message;
}
}
?>
En mijn foutmeldingen-bestand :
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
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
<?php
$error=array();
$form_verzonden = false;
$data = [
'lengte'=>'',
'gewicht'=>'',
'naam'=>''
];
if($_POST){
$data = $_POST;
if(empty($_POST['naam'])) {
$error['naam'] = "Het ingeven van je naam is verplicht!";
} elseif (!preg_match("/^[a-zA-Z ]*$/", $_POST['naam'])) {
$error['naam'] = "De ingegeven naam is niet correct. Enkel letters en spaties kunnen gebruikt worden!";
}
if(empty($_POST['lengte'])) {
$error['lengte'] = "Het ingeven van je lengte is verplicht!";
} elseif (!preg_match("/^[0-9]*$/", $_POST['lengte'])) {
$error['lengte'] = "Je ingegeven lengte kan alleen cijfers bevatten!";
} elseif (strlen ($_POST['lengte'])>3 || strlen ($_POST['lengte'])<2){
$error['lengte'] = "Je ingegeven lengte moet minimum 2 en maximum 3 cijfers bevatten";
}
if(empty($_POST['gewicht'])) {
$error['gewicht'] = "Het ingeven van je gewicht is verplicht!";
} elseif (!preg_match("/^[0-9]*$/", $_POST['gewicht'])) {
$error['gewicht'] = "Je ingegeven gewicht kan alleen cijfers bevatten!";
}
if (empty($error)) {
$lengte = $_POST['lengte'];
$gewicht = $_POST['gewicht'];
$bmi = $gewicht / (($lengte/100) * ($lengte/100));
}
}
?>
$error=array();
$form_verzonden = false;
$data = [
'lengte'=>'',
'gewicht'=>'',
'naam'=>''
];
if($_POST){
$data = $_POST;
if(empty($_POST['naam'])) {
$error['naam'] = "Het ingeven van je naam is verplicht!";
} elseif (!preg_match("/^[a-zA-Z ]*$/", $_POST['naam'])) {
$error['naam'] = "De ingegeven naam is niet correct. Enkel letters en spaties kunnen gebruikt worden!";
}
if(empty($_POST['lengte'])) {
$error['lengte'] = "Het ingeven van je lengte is verplicht!";
} elseif (!preg_match("/^[0-9]*$/", $_POST['lengte'])) {
$error['lengte'] = "Je ingegeven lengte kan alleen cijfers bevatten!";
} elseif (strlen ($_POST['lengte'])>3 || strlen ($_POST['lengte'])<2){
$error['lengte'] = "Je ingegeven lengte moet minimum 2 en maximum 3 cijfers bevatten";
}
if(empty($_POST['gewicht'])) {
$error['gewicht'] = "Het ingeven van je gewicht is verplicht!";
} elseif (!preg_match("/^[0-9]*$/", $_POST['gewicht'])) {
$error['gewicht'] = "Je ingegeven gewicht kan alleen cijfers bevatten!";
}
if (empty($error)) {
$lengte = $_POST['lengte'];
$gewicht = $_POST['gewicht'];
$bmi = $gewicht / (($lengte/100) * ($lengte/100));
}
}
?>
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Toevoeging op 24/11/2015 21:10:10:
Bedankt, ik was mijn bericht al aan het wijzigen, want dat zag er echt niet goed uit, maar vond niet hoe dit moest.
Gewijzigd op 24/11/2015 21:08:37 door - Ariën -
Ik zie nergens een INSERT sql.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
include 'includes/config.inc.php';
if (!empty($_POST)) {
$data = $_POST;
$query = 'INSERT INTO gegevens (naam, lengte, gewicht)
VALUES (:naam, :lengte, :gewicht)';
$stmt = $conn->prepare($query);
$stmt->execute([
'naam' => $data['naam'],
'lengte' => $data['lengte'],
'gewicht' => $data['gewicht']
]);
if($stmt->rowCount()){
header('location: index.php');
}
}
?>
include 'includes/config.inc.php';
if (!empty($_POST)) {
$data = $_POST;
$query = 'INSERT INTO gegevens (naam, lengte, gewicht)
VALUES (:naam, :lengte, :gewicht)';
$stmt = $conn->prepare($query);
$stmt->execute([
'naam' => $data['naam'],
'lengte' => $data['lengte'],
'gewicht' => $data['gewicht']
]);
if($stmt->rowCount()){
header('location: index.php');
}
}
?>
Wanneer ik bij mijn form: action="toevoegen.php" toevoeg, worden er wel gegevens ingediend bij de database (ook al zijn mijn velden leeg, maar zodra ik op de submit-knop druk, gebeurt dit toch) en mijn feedback wordt niet meer getoond.
Toevoeging op 24/11/2015 22:52:26:
Inmiddels ben ik een stapje verder geraakt. Door mijn toevoegen.php op deze manier op te stellen, worden er alleen gegevens toegevoegd indien alles correct is ingevuld. Nu nog een oplossing vinden voor het feit dat wanneer iets niet correct ingevuld is, ik geen foutmeldingen krijg. Erger nog, ik zie gewoon een witte pagina.
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
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
<?php
include 'includes/config.inc.php';
$error=array();
$data = [
'lengte'=>'',
'gewicht'=>'',
'naam'=>''
];
if($_POST){
$data = $_POST;
if(empty($_POST['naam'])) {
$error['naam'] = "Het ingeven van je naam is verplicht!";
} elseif (!preg_match("/^[a-zA-Z ]*$/", $_POST['naam'])) {
$error['naam'] = "De ingegeven naam is niet correct. Enkel letters en spaties kunnen gebruikt worden!";
}
if(empty($_POST['lengte'])) {
$error['lengte'] = "Het ingeven van je lengte is verplicht!";
} elseif (!preg_match("/^[0-9]*$/", $_POST['lengte'])) {
$error['lengte'] = "Je ingegeven lengte kan alleen cijfers bevatten!";
} elseif (strlen ($_POST['lengte'])>3 || strlen ($_POST['lengte'])<2){
$error['lengte'] = "Je ingegeven lengte moet minimum 2 en maximum 3 cijfers bevatten";
}
if(empty($_POST['gewicht'])) {
$error['gewicht'] = "Het ingeven van je gewicht is verplicht!";
} elseif (!preg_match("/^[0-9]*$/", $_POST['gewicht'])) {
$error['gewicht'] = "Je ingegeven gewicht kan alleen cijfers bevatten!";
}
if (empty($error)) {
$lengte = $_POST['lengte'];
$gewicht = $_POST['gewicht'];
$bmi = $gewicht / (($lengte/100) * ($lengte/100));
$query = 'INSERT INTO gegevens (naam, lengte, gewicht)
VALUES (:naam, :lengte, :gewicht)';
$stmt = $conn->prepare($query);
$stmt->execute([
'naam' => $data['naam'],
'lengte' => $data['lengte'],
'gewicht' => $data['gewicht']
]);
if($stmt->rowCount()) {
header('location:index.php');
}
}
}
include 'includes/config.inc.php';
$error=array();
$data = [
'lengte'=>'',
'gewicht'=>'',
'naam'=>''
];
if($_POST){
$data = $_POST;
if(empty($_POST['naam'])) {
$error['naam'] = "Het ingeven van je naam is verplicht!";
} elseif (!preg_match("/^[a-zA-Z ]*$/", $_POST['naam'])) {
$error['naam'] = "De ingegeven naam is niet correct. Enkel letters en spaties kunnen gebruikt worden!";
}
if(empty($_POST['lengte'])) {
$error['lengte'] = "Het ingeven van je lengte is verplicht!";
} elseif (!preg_match("/^[0-9]*$/", $_POST['lengte'])) {
$error['lengte'] = "Je ingegeven lengte kan alleen cijfers bevatten!";
} elseif (strlen ($_POST['lengte'])>3 || strlen ($_POST['lengte'])<2){
$error['lengte'] = "Je ingegeven lengte moet minimum 2 en maximum 3 cijfers bevatten";
}
if(empty($_POST['gewicht'])) {
$error['gewicht'] = "Het ingeven van je gewicht is verplicht!";
} elseif (!preg_match("/^[0-9]*$/", $_POST['gewicht'])) {
$error['gewicht'] = "Je ingegeven gewicht kan alleen cijfers bevatten!";
}
if (empty($error)) {
$lengte = $_POST['lengte'];
$gewicht = $_POST['gewicht'];
$bmi = $gewicht / (($lengte/100) * ($lengte/100));
$query = 'INSERT INTO gegevens (naam, lengte, gewicht)
VALUES (:naam, :lengte, :gewicht)';
$stmt = $conn->prepare($query);
$stmt->execute([
'naam' => $data['naam'],
'lengte' => $data['lengte'],
'gewicht' => $data['gewicht']
]);
if($stmt->rowCount()) {
header('location:index.php');
}
}
}
Gewijzigd op 24/11/2015 21:23:55 door NIne Viaene
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$test = "hoi'";
if(empty($test)) {
$error['naam'] = "Het ingeven van je naam is verplicht!";
} elseif (!preg_match("/^[a-zA-Z ]*$/", $test)) {
$error['naam'] = "De ingegeven naam is niet correct. Enkel letters en spaties kunnen gebruikt worden!";
} else {
$error['naam'] = "Geen error bekend";
}
print_r($error);
?>
$test = "hoi'";
if(empty($test)) {
$error['naam'] = "Het ingeven van je naam is verplicht!";
} elseif (!preg_match("/^[a-zA-Z ]*$/", $test)) {
$error['naam'] = "De ingegeven naam is niet correct. Enkel letters en spaties kunnen gebruikt worden!";
} else {
$error['naam'] = "Geen error bekend";
}
print_r($error);
?>
Je zult dan zien dat hij het netjes laat zien zodra je $test veranderd.
Een aantal schoonheidsdingen:
Om te controleren of een POST gedaan is het netter om op regel 12 het volgende te doen:
Op regel 14 staat:
In het hele stuk er onder werk je gewoon met $_POST['veldnaam'].
Op regel 44 begin je vervolgens weer met $data['veldnaam'].
Dankjewel voor je reactie! Het is intussen gelukt om alles te laten functioneren, maar bedankt voor de 'testversie'! Die kan ik volgende keer goed gebruiken om te zien of alles correct werkt, het is een hele goeie tip! En inderdaad zo'n 'schoonheidsfoutjes' sluipen er bij een beginneling zoals ik vaak in....maar ze moeten er uit!