[myphp] formulier laat de som van de twee velden niet zien.

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Hakuna-Matata
  • Registratie: April 2016
  • Laatst online: 14-02 17:27
Ik heb een vraag over programmeren met php.
Voor een opdracht moet ik een formulier maken met twee tekstvelden en een verzendknop maken.
De uitkomst van het formulier laat de som van de twee velden zien.
Alleen hij laat helaas de uitkomst van de som niet zien.
Wat ik heb geprobeerd is:
code:
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
<?php   // alle php-logica komt eerst
    if( empty($POST['button'])) {
        $_POST['Som'] = "";
    }
?>
<!DOCTYPE html><!--alles wat in de browser moet worden weergegeven komt nu. -->
<html>
<body>
    <form action="opdracht3.php" method="post">
        Name:   <input type="text" name="$18"><br>
        Name2: <input type="text" name="$5"><br>
        Send:   <input type="submit" name="button"><br>
        <?php
            if( empty($_POST["button"])) {
                $Name=18;
                $Name2=5;
                echo $Som=$Name+Name2;
                    echo $Som;
            }
                        print_r($_POST);    //programmer inside view of an array

        ?>
    </form>


</body>
</html>

Beste antwoord (via Hakuna-Matata op 23-09-2016 22:35)


  • Stroopwafels
  • Registratie: September 2009
  • Laatst online: 19:07
Er klopt helemaal niks van.

Op de eerste regel gebruik je al $POST ipv $_POST;

Tip: wat je als name kenmerk geeft aan een input veld, kan je vervolgens gebruiken in $_POST.
Dus... <input type="text" name="nummer1"> kan je in PHP ophalen met $_POST['nummer1'];

Daarnaast controleer je of $_POST['button'] leeg is, je wilt juist controleren of beide nummers ingevuld zijn om vervolgens de berekening te doen. Ook is het niet echt OK om variables met een hoofdletter te benoemen, gewoon $num1 = $_POST['nummer1']; gebruiken en eigenlijk is het niet eens nodig om variables te defineren. Je kunt gelijk echo $_POST['nummer1'] + $_POST['nummer2'] doen, maar dan zou ik wel eerst controleren of beide variables nummers zijn met de functie ctype_digit.

[ Voor 19% gewijzigd door Stroopwafels op 23-09-2016 22:01 ]

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Stroopwafels
  • Registratie: September 2009
  • Laatst online: 19:07
Er klopt helemaal niks van.

Op de eerste regel gebruik je al $POST ipv $_POST;

Tip: wat je als name kenmerk geeft aan een input veld, kan je vervolgens gebruiken in $_POST.
Dus... <input type="text" name="nummer1"> kan je in PHP ophalen met $_POST['nummer1'];

Daarnaast controleer je of $_POST['button'] leeg is, je wilt juist controleren of beide nummers ingevuld zijn om vervolgens de berekening te doen. Ook is het niet echt OK om variables met een hoofdletter te benoemen, gewoon $num1 = $_POST['nummer1']; gebruiken en eigenlijk is het niet eens nodig om variables te defineren. Je kunt gelijk echo $_POST['nummer1'] + $_POST['nummer2'] doen, maar dan zou ik wel eerst controleren of beide variables nummers zijn met de functie ctype_digit.

[ Voor 19% gewijzigd door Stroopwafels op 23-09-2016 22:01 ]


Acties:
  • 0 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Nu online
Dit klinkt als een huiswerk opdracht, en die moet je natuurlijk gewoon zelf maken. Daarbij is er zoveel fout aan deze code, dat ik mij afvraag of je überhaupt wel een idee hebt wat je aan het doen bent.

Ik stel voor dat je hier naar kijkt, en op basis daarvan je eigen opdracht in elkaar zet:

Acties:
  • 0 Henk 'm!

  • Hakuna-Matata
  • Registratie: April 2016
  • Laatst online: 14-02 17:27
Stroopwafels schreef op vrijdag 23 september 2016 @ 21:59:
Er klopt helemaal niks van.

Op de eerste regel gebruik je al $POST ipv $_POST;

Tip: wat je als name kenmerk geeft aan een input veld, kan je vervolgens gebruiken in $_POST.
Dus... <input type="text" name="nummer1"> kan je in PHP ophalen met $_POST['nummer1'];

Daarnaast controleer je of $_POST['button'] leeg is, je wilt juist controleren of beide nummers ingevuld zijn om vervolgens de berekening te doen. Ook is het niet echt OK om variables met een hoofdletter te benoemen, gewoon $num1 = $_POST['nummer1']; gebruiken en eigenlijk is het niet eens nodig om variables te defineren. Je kunt gelijk echo $_POST['nummer1'] + $_POST['nummer2'] doen, maar dan zou ik wel eerst controleren of beide variables nummers zijn met de functie ctype_digit.
Ik probeer heel erg dat boekje van php te volgen, en ik lees echt zo goed mogelijk.
Ik lees vaak niet goed i.v.m. faalangst, maar daar ga ik wat aan doen.
Moet $_POST eigenlijk net grote of kleine letter, want de ene zegt van wel en de andere zegt van niet?

Acties:
  • 0 Henk 'm!

  • Stroopwafels
  • Registratie: September 2009
  • Laatst online: 19:07
Hakuna-Matata schreef op vrijdag 23 september 2016 @ 22:17:
[...]

Ik probeer heel erg dat boekje van php te volgen, en ik lees echt zo goed mogelijk.
Ik lees vaak niet goed i.v.m. faalangst, maar daar ga ik wat aan doen.
Moet $_POST eigenlijk net grote of kleine letter, want de ene zegt van wel en de andere zegt van niet?
http://php.net/manual/en/reserved.variables.post.php

Gebruik php.net, staat vol met voorbeelden en uitleg.

Acties:
  • 0 Henk 'm!

  • Hakuna-Matata
  • Registratie: April 2016
  • Laatst online: 14-02 17:27
Ik heb de code opnieuw ingevoerd.
Als ik niks invoer in die formulieren krijg ik nul, omdat ik niks heb ingevuld.
Als ik bij Name 18 invul, en bij Name2 5 invul.
Dan klik ik op verzenden, en onder de knop van verzenden komt het getal 23 uit.
En als ik andere getallen uitvoer rekent hij het ook uit.
Dus ik hoop dat het goed is.
code:
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
<?php   // alle php-logica komt eerst
    if( empty($_POST['button'])) {
        $_POST['Som'] = "";
    }
?>
<!DOCTYPE html><!--alles wat in de browser moet worden weergegeven komt nu. -->
<html>
<body>
    <form action="opdracht3.php" method="post">
        Name:   <input type="text" name="$18"><br>
        Name2: <input type="text" name="$5"><br>
        Send:   <input type="submit" name="button"><br>
        <?php
            if( empty($_POST["button"]))
              $_POST['$18'];
              $_POST['$5'];
                echo$_POST['$18']+$_POST['$5']


        ?>
    </form>


</body>
</html>

[ Voor 3% gewijzigd door Hakuna-Matata op 24-09-2016 00:02 ]


Acties:
  • 0 Henk 'm!

  • Stroopwafels
  • Registratie: September 2009
  • Laatst online: 19:07
Waarom gebruik je $18 en $5 als name? Noem het gewoon num1 en num2, is een stuk duidelijker.

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 20:11

AW_Bos

Liefhebber van nostalgie... 🕰️

En zet je code tussen [code] en [/code] tags in het forum. Dan kunnen we meteen ook regelnummers zien.
Stroopwafels schreef op vrijdag 23 september 2016 @ 23:27:
Waarom gebruik je $18 en $5 als name? Noem het gewoon num1 en num2, is een stuk duidelijker.
name1 en name2 vind ik al duidelijker.

[ Voor 51% gewijzigd door AW_Bos op 23-09-2016 23:32 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • Hakuna-Matata
  • Registratie: April 2016
  • Laatst online: 14-02 17:27
Ik heb de namen veranderd naar number1 en number2.
Bedankt voor de tip.

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 20:11

AW_Bos

Liefhebber van nostalgie... 🕰️

pas ook even je forumposts aan met code-tags. Dat refereert wat makkelijker voor ons naar je lijnen waar wij commentaar op hebben.

[ Voor 48% gewijzigd door AW_Bos op 23-09-2016 23:56 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Misschien ook nog even kijken naar je if-statement. Die doet nu waarschijnlijk iets anders dan je verwacht (error_reporting aanzetten).

PHP:
1
2
3
4
5
6
if( empty($_POST["button"])) {
    $_POST['$18']; // Doe niks
}

$_POST['$5']; // Doe niks
echo $_POST['$18']+$_POST['$5'] // Print variabelen ongeacht of ze ingevuld zijn

  • Hakuna-Matata
  • Registratie: April 2016
  • Laatst online: 14-02 17:27
Feanathiel schreef op zaterdag 24 september 2016 @ 20:17:
Misschien ook nog even kijken naar je if-statement. Die doet nu waarschijnlijk iets anders dan je verwacht (error_reporting aanzetten).

PHP:
1
2
3
4
5
6
if( empty($_POST["button"])) {
    $_POST['$18']; // Doe niks
}

$_POST['$5']; // Doe niks
echo $_POST['$18']+$_POST['$5'] // Print variabelen ongeacht of ze ingevuld zijn
Ik ga ernaar kijken.
Ik heb 2x if-statement, en ik heb er 1 weggehaald, en mijn code doet het nog.
Ik ben aan het kijken of ik een melding kan maken als ik iets anders invul dan een getal.

[ Voor 6% gewijzigd door Hakuna-Matata op 24-09-2016 23:25 ]


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Hakuna-Matata schreef op vrijdag 23 september 2016 @ 21:48:
Voor een opdracht moet ik een formulier maken met twee tekstvelden en een verzendknop maken.
Hakuna-Matata schreef op zaterdag 24 september 2016 @ 23:12:
Ik ben aan het kijken of ik een melding kan maken als ik iets anders invul dan een getal.
Ehmmm je bedoelt dus twee number velden ipv tekstvelden. Dat kan zo:
PHP:
1
2
3
4
5
        Name:   <input type="number" name="numbers[]"><br>
        Name2: <input type="number" name="numbers[]"><br>
<?php
    array_sum($_POST['numbers']);
?>


Ik denk dat de opleiding een beetje achter loopt qua techniek als er nog steeds wordt gesproken over "textvelden"

[ Voor 7% gewijzigd door DJMaze op 25-09-2016 00:59 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Hakuna-Matata
  • Registratie: April 2016
  • Laatst online: 14-02 17:27
DJMaze schreef op zondag 25 september 2016 @ 00:58:
[...]


[...]

Ehmmm je bedoelt dus twee number velden ipv tekstvelden. Dat kan zo:
PHP:
1
2
3
4
5
        Name:   <input type="number" name="numbers[]"><br>
        Name2: <input type="number" name="numbers[]"><br>
<?php
    array_sum($_POST['numbers']);
?>


Ik denk dat de opleiding een beetje achter loopt qua techniek als er nog steeds wordt gesproken over "textvelden"
In dat boekje stond maak een formulier aan met 2 tekstvelden, die de uitkomst van de som laat zien/
Die laatste regel heb ik niet.'
Dat is bij mij number1+number 2 in mijn code.
Wat doet die laatste regel eigenlijk?

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
<input type="number"> zorgt er voor dat het een nummer invoer is.

name="numbers[]" door de haken is het een array, zie het als:
$_POST['numbers'][0]
$_POST['numbers'][1]

$_POST['numbers'] is dan dus een array.

Zie voor de laatste regel https://php.net/array_sum

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • Hakuna-Matata
  • Registratie: April 2016
  • Laatst online: 14-02 17:27
DJMaze schreef op zondag 25 september 2016 @ 18:49:
<input type="number"> zorgt er voor dat het een nummer invoer is.

name="numbers[]" door de haken is het een array, zie het als:
$_POST['numbers']\[0]
$_POST['numbers']\[1]

$_POST['numbers'] is dan dus een array.

Zie voor de laatste regel https://php.net/array_sum
Moet ik die laatste regels dan weer weghalen, en die in de plaats zetten?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
DJMaze schreef op zondag 25 september 2016 @ 18:49:
<input type="number"> zorgt er voor dat het een nummer invoer is.
...wat niemand tegen zal houden alsnog ';-- drop table users; (bij wijze van) te posten. Never trust user input, end of story.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
RobIII schreef op maandag 26 september 2016 @ 02:02:
...wat niemand tegen zal houden alsnog ';-- drop table users; (bij wijze van) te posten. Never trust user input, end of story.
True, maar volgens mij schieten we dan wel erg ver door voor zo'n simpele school opdracht. En wij weten niet of dat in de volgende les wordt behandeld. En er is totaal geen File/DB interactie whatsover en waarschijnlijk ook nog niet behandeld.
TS had al moeite met mijn eerdere antwoord en onderstaand maakt het niet makkelijker:
PHP:
1
array_sum(array_map('floatval', $_POST['numbers']));

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 18:20

DataGhost

iPL dev

Hakuna-Matata schreef op vrijdag 23 september 2016 @ 22:17:
[...]

Moet $_POST eigenlijk net grote of kleine letter, want de ene zegt van wel en de andere zegt van niet?
Welke zegt dan van niet?

Acties:
  • 0 Henk 'm!

  • Hakuna-Matata
  • Registratie: April 2016
  • Laatst online: 14-02 17:27
mensen uit m'n klas

Acties:
  • 0 Henk 'm!

  • Hakuna-Matata
  • Registratie: April 2016
  • Laatst online: 14-02 17:27
DJMaze schreef op maandag 26 september 2016 @ 12:22:
[...]

True, maar volgens mij schieten we dan wel erg ver door voor zo'n simpele school opdracht. En wij weten niet of dat in de volgende les wordt behandeld. En er is totaal geen File/DB interactie whatsover en waarschijnlijk ook nog niet behandeld.
TS had al moeite met mijn eerdere antwoord en onderstaand maakt het niet makkelijker:
PHP:
1
array_sum(array_map('floatval', $_POST['numbers']));
Wij beginnen net vandaag met de else en if.
Ik doe applicatie-en mediaontwikkelaar.
Ik oefen er regelmatig mee, want ik wil uiteindelijk het wel kunnen.

Acties:
  • 0 Henk 'm!

Verwijderd

Handige groep voor relevantie info :) *snip spam*

[ Voor 43% gewijzigd door RobIII op 27-09-2016 14:26 ]

Pagina: 1