Rekenmachine
Hallo. Ik ben Willem, zeventien jaar oud, en ik heb een brandende vraag over 'PHP'. Nou is het zo dat ik een rekenmachine aan de praat wil krijgen, maar de code (zie bijlage 1) doet het helaas niet. Ik zie niet wat er fout aan is. Als ik willekeurig waarden invul telt hij ze niet op, maar krijg ik een ERROR-pagina.
Alvast bedankt,
Willem,
Assen.
Bijlage 1:
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
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
<TITLE>Page title</TITLE>
<meta charset="UTF-8">
</HEAD>
<BODY background="http://pad2.whstatic.com/images/thumb/7/7b/Make-a-Rainbow-Step-1-Version-3.jpg/aid258833-v4-728px-Make-a-Rainbow-Step-1-Version-3.jpg.webp">
<h1 style="color:blue;">This is a heading</h1>
<p style="color:olive;">This is a paragraph.</p>
<img src="https://jakevdp.github.io/images/mario.gif" alt="W3Schools.com" width="300" height="142">
<h2 style="font-family:verdana;">This is a heading</h2>
<p style="font-family:courier;">This is another paragraph.</p>
<hr>
<p title="About W3Schools">
W3Schools is a web developer's site.
It provides tutorials and references covering
many aspects of web programming,
including HTML, CSS, JavaScript, XML, SQL, PHP, ASP, etc.
</p>
<h3 style="font-size:300%;">This is a heading</h3>
<p title="John 'ShotGun' Nelson">
<p>
This paragraph
contains<br>a<br>lot of lines
in the source code,
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1 ">
<title>Rekenmachine</title>
</head>
<body>
<form action="rekenmachine1.php" method="post">
Getal 1: <input type="text" name="getal1" /><br /><img src="http://www.world-birds.com/files/comworld-birds/database/photo-cotingidae-rupicola-peruvianus-6709_large.jpg"><br />
Getal 2: <input type="text" name="getal2" /><br /><br />
<input type="submit" name="verzend" value="TEL OP" />
</form>
<br /><br />
<?php
// Hier wordt gecontroleerd of er op de verzendknop is geklikt
if(isset($_POST["verzend"]))
{
// Hier wordt alle input opgehaald
$getal1 = $_POST["getal1"];
$getal2 = $_POST["getal2"];
// Hier wordt de berekening gemaakt
$antwoord = $getal1 + $getal2;
// Hey Max, hier wordt het antwoord getoond!
echo "$getal1 + $getal2 = $antwoord";
}
?>
</body>
</html>
<meta charset="UTF-8">
</HEAD>
<BODY background="http://pad2.whstatic.com/images/thumb/7/7b/Make-a-Rainbow-Step-1-Version-3.jpg/aid258833-v4-728px-Make-a-Rainbow-Step-1-Version-3.jpg.webp">
<h1 style="color:blue;">This is a heading</h1>
<p style="color:olive;">This is a paragraph.</p>
<img src="https://jakevdp.github.io/images/mario.gif" alt="W3Schools.com" width="300" height="142">
<h2 style="font-family:verdana;">This is a heading</h2>
<p style="font-family:courier;">This is another paragraph.</p>
<hr>
<p title="About W3Schools">
W3Schools is a web developer's site.
It provides tutorials and references covering
many aspects of web programming,
including HTML, CSS, JavaScript, XML, SQL, PHP, ASP, etc.
</p>
<h3 style="font-size:300%;">This is a heading</h3>
<p title="John 'ShotGun' Nelson">
<p>
This paragraph
contains<br>a<br>lot of lines
in the source code,
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1 ">
<title>Rekenmachine</title>
</head>
<body>
<form action="rekenmachine1.php" method="post">
Getal 1: <input type="text" name="getal1" /><br /><img src="http://www.world-birds.com/files/comworld-birds/database/photo-cotingidae-rupicola-peruvianus-6709_large.jpg"><br />
Getal 2: <input type="text" name="getal2" /><br /><br />
<input type="submit" name="verzend" value="TEL OP" />
</form>
<br /><br />
<?php
// Hier wordt gecontroleerd of er op de verzendknop is geklikt
if(isset($_POST["verzend"]))
{
// Hier wordt alle input opgehaald
$getal1 = $_POST["getal1"];
$getal2 = $_POST["getal2"];
// Hier wordt de berekening gemaakt
$antwoord = $getal1 + $getal2;
// Hey Max, hier wordt het antwoord getoond!
echo "$getal1 + $getal2 = $antwoord";
}
?>
</body>
</html>
- 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!
Gewijzigd op 21/09/2017 19:50:47 door - Ariën -
Willem van Oosterhout op 19/09/2017 13:55:13:
krijg ik een ERROR-pagina.
En wat is die error ?
De opbouw van je code lijkt me niet goed.
Ik zie bijvoorbeeld 2x </head> in je code en 2x <body>.
Controleren of een formulier verzonden is:
Verder controleer je niet of de beide POST-waarden zijn gevuld en of het een getal is.
Het aanmaken / kopiëren van de nieuwe variabelen is in dit geval niet zo zinvol.
Gewijzigd op 19/09/2017 14:15:51 door Obelix Idefix
Behalve de laatste regel met de echo, die mag wel tussen je HTML.
Gewijzigd op 19/09/2017 18:03:30 door Frank Nietbelangrijk
Alvast bedankt,
Willem, Assen.
De rest is ook geheel terecht, want je HTML klopt van geen kant.
Ben van Velzen op 21/09/2017 11:46:42:
Het antwoord van Mitch geeft precies aan wat je moet veranderen om het in de huidige vorm werkend te krijgen.
Met die echo is niks mis. Hint: (string-)interpolatie, maar dat is iets waar men op dit forum allergisch voor schijnt te zijn. Ten onrechte, want ik zie in een heleboel topics code langskomen die er een stuk leesbaarder door zou worden. En ik zie ook, zoals hier, alternatieven voor geïnterpoleerde strings die de code alleen maar onleesbaarder maken. Afgezien van het al dan niet leesbaarder zijn, lost het antwoord dat Mitch hierboven geeft in ieder geval niets op.
Met de oorspronkelijk geposte code is eigenlijk niets mis (*). Het enige probleem dat erin zit, is dat er teveel is meegekopieerd van de W3Schools-pagina (o.i.d.) maar als je alle regels vóór <!DOCTYPE html> verwijdert, werkt de pagina prima. Het zou niet mijn ding zijn om een levensgrote kop van een rode rotshaan tussen de twee invoervelden te plaatsen, maar dat doet niets af aan de functionaliteit.
(*) Oke, er zijn dingetjes die ik anders zou doen... ;-)
Gewijzigd op 21/09/2017 15:44:16 door Willem vp
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
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
<?php
/*
* Initialisatie van de variabele $uitkomst. Dit doen we om te zorgen dat de variabele $uitkomst altijd bestaat
* ook als de pagina de eerste keer in de GET methode wordt aangeroepen in plaats van in de POST methode.
* Tevens kunnen we de variabele direct voorzien van een standaard waarde. Als we de initialisatie achterwege laten
* krijgen we foutmelingen.
*/
$uitkomst = '';
// Controleer of er iets gePOST is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Hier wordt alle input opgehaald
$getal1 = intval($_POST["getal1"]); // intval maakt van iedere waarde een getal.
$getal2 = intval($_POST["getal2"]);
// Hier wordt de berekening gemaakt
$antwoord = $getal1 + $getal2;
// Hier wordt een string (stuk tekst) gemaakt
$uitkomst = $getal1 . ' + ' . $getal2 . ' = ' . $antwoord;
}
?>
<!doctype>
<html>
<head>
<meta charset="UTF-8">
<title>Rekenmachine</title>
<style>
h1 {
color: blue;
}
.uitkomst {
color: purple;
}
</style>
</head>
<body>
<h1>Rekenmachine</h1>
<form action="" method="post">
Getal 1: <input type="text" name="getal1" /><br>
Getal 2: <input type="text" name="getal2" /><br><br>
<input type="submit" name="verzend" value="TEL OP">
</form>
<br><br>
<p class="uitkomst"><?php echo $uitkomst; ?></p>
</body>
</html>
/*
* Initialisatie van de variabele $uitkomst. Dit doen we om te zorgen dat de variabele $uitkomst altijd bestaat
* ook als de pagina de eerste keer in de GET methode wordt aangeroepen in plaats van in de POST methode.
* Tevens kunnen we de variabele direct voorzien van een standaard waarde. Als we de initialisatie achterwege laten
* krijgen we foutmelingen.
*/
$uitkomst = '';
// Controleer of er iets gePOST is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Hier wordt alle input opgehaald
$getal1 = intval($_POST["getal1"]); // intval maakt van iedere waarde een getal.
$getal2 = intval($_POST["getal2"]);
// Hier wordt de berekening gemaakt
$antwoord = $getal1 + $getal2;
// Hier wordt een string (stuk tekst) gemaakt
$uitkomst = $getal1 . ' + ' . $getal2 . ' = ' . $antwoord;
}
?>
<!doctype>
<html>
<head>
<meta charset="UTF-8">
<title>Rekenmachine</title>
<style>
h1 {
color: blue;
}
.uitkomst {
color: purple;
}
</style>
</head>
<body>
<h1>Rekenmachine</h1>
<form action="" method="post">
Getal 1: <input type="text" name="getal1" /><br>
Getal 2: <input type="text" name="getal2" /><br><br>
<input type="submit" name="verzend" value="TEL OP">
</form>
<br><br>
<p class="uitkomst"><?php echo $uitkomst; ?></p>
</body>
</html>
Toevoeging op 21/09/2017 18:36:21:
Je had zoals Willem aangaf een beetje veel oude shit gekopieerd en geplakt.
De opmaak regel je bij voorkeur in een apart .css bestand of zoals hier boven gebruik je <style></style> tags in de <head> sectie.
Aan het begin van je pagina plaats je de doctype en open je de html pagina met <html>. Als allerlaatste eindig je de pagina met </html>. In de <html> sectie begin je voorts altijd eerst met de <head> sectie en daarna met de <body>. Het beste is om als eerste je characterset kenbaar te maken in de <head> sectie. Je zou dus kunnen zeggen dat de volgorde van de eerste vier regels min of meer verplicht is en zo ook de laatste twee regels.