Variabele waarden vermenigvuldigen in tekstvakken

Overzicht

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Kevin W

Kevin W

06/10/2015 14:37:22
Anchor link
Hoi,

Graag zou ik hier hulp willen vragen met het vermenigvuldigen van 2 tekstvakken en de uitkomst te laten zien in een 3de tekstvak.

De personen in kwestie zouden een hoogte en een breedte moeten opgeven en dan zou het totaal automatich moeten uitgerekend worden maar na verschillende mislukte pogingen is het me nog steeds niet gelukt.

Alvast bedank.
Gewijzigd op 06/10/2015 14:41:14 door Kevin W
 
PHP hulp

PHP hulp

29/03/2024 02:46:14
 

06/10/2015 14:41:02
Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$eerste_tekstvariabele
= '3';
$tweede_tekstvariabele = '4';
$derde_tekstvariabele = intval($eerste_tekstvariabele) + intval($tweede_tekstvariabele);
print 'Totaal: ' . $derde_tekstvariabele;
?>
 
Kevin W

Kevin W

06/10/2015 14:43:45
Anchor link
Met vaste variabele lukt me dat maar de eerste en tweede tekstvariabele zijn altijd verschillend en daar zit de moeilijkheid.
 
Joni Fleischer
Moderator

Joni Fleischer

06/10/2015 15:11:40
Anchor link
Ook hier gaat het weer om een huiswerk opdracht zie ik.

Je klasgenootjes hebben al een topic lopen.

http://www.phphulp.nl/php/forum/topic/oppervlakte-berekene-dmv-function/98694/last/
 

06/10/2015 15:18:42
Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
// init
define('EOL', "\n");
$totaal = 0;
$var1 = 0; if (isset($_POST['var1'])) $var1 = intval($_POST['var1']);
$var2 = 0; if (isset($_POST['var2'])) $var2 = intval($_POST['var2']);
$totaal = $var1 + $var2;
// formuliertje
print '<!DOCYTYPE html>' . EOL;
print '<html>' . EOL;
print '  <head>' . EOL;
print '    <title>Variabele tekstvelden optellen</title>' . EOL;
print '  </head>' . EOL;
print '  <body>' . EOL;
print '    <form action="?" method="post">' . EOL;
print '      <label for="var1">Eerste variabele: </label>' . EOL;
print '      <input id="var1" name="var1" type="text" value="' . $var1 . '" />' . EOL;
print '      <br/>' . EOL;
print '      <label for="var2">Tweede variabele: </label>' . EOL;
print '      <input id="var2" name="var2" type="text" value="' . $var2 . '" />' . EOL;
print '      <br/>' . EOL;
print '      Totaal: ' . $totaal . EOL;
print '    </form>' . EOL;
print '  </body>' . EOL;
print '</html>' . EOL;
?>
 
Joni Fleischer
Moderator

Joni Fleischer

06/10/2015 15:24:54
Anchor link
@An tje

Zet dan meteen neer dat je ook kan kiezen of je wilt delen, optellen, vermenigvuldigen en etc...
 
Kevin W

Kevin W

06/10/2015 18:48:50
Anchor link
Het is gelukt!! Bedankt allemaal.
 

07/10/2015 11:13:34
Anchor link
Moest het een calculator worden?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
// init
define('EOL', "\n");
$vars = array('var1', 'var2', 'totaal');
foreach ($vars as $v) $$v = 0;
if (isset($_POST['var1'])) $var1 = $_POST['var1'];
if (isset($_POST['var2'])) $var2 = $_POST['var2'];
foreach ($vars as $v) $$v = floatval(str_replace(',', '.', $$v));
$ops = array('*' => 'X', '/' => '/', '+' => '+', '-' => '-', '%' => 'mod', '**' => 'exp', /* PHP 5.6+ */);
$op = '+'; $totaal = '#Foutje'; $foutje = '';
if (isset($_POST['op']) && array_key_exists($_POST['op'], $ops)) $op = $_POST['op'];
if ($var2 == 0 && ($op == '/' || $op == '%')) $totaal = 'Delen door nul is flauwekul.';
else {
  try {
    $rc = @eval('$totaal = $var1 ' . $op . ' $var2;');
    if ($rc === false) throw new Exception('PHP 5.6+ is hiervoor nodig.');
  }

  catch (\Exception $e) {$foutje = 'window.alert("' . $e->getMessage() . '")';}
  finally {foreach ($vars as $v) $$v = str_replace('.', ',', $$v);}
}

// formuliertje
print '<!DOCYTYPE html>' . EOL;
print '<html>' . EOL;
print '  <head>' . EOL;
print '    <title>Variabele tekstvelden optellen</title>' . EOL;
print '    <style type="text/css">' . EOL;
print '      * {font-size:12pt; font-family:monospace;}' . EOL;
print '      body {margin:3em;}' . EOL;
print '      select, input {border-radius:0.5em;outline:0;' . EOL;
print '        width:15em; text-align:right; box-shadow:none; margin:0.33em; border:1px solid lightgrey; padding:0.4em 0.6em;}' . EOL;
print '      select {width:4em; text-align:left;}' . EOL;
print '      select:focus,input:focus {animation: foc 0.5s ease;box-shadow:0 0 0.2em rgba(0,127,0,1);background:#F3FFF3;}' . EOL;
print '      @keyframes foc{0%{box-shadow:0 0 2em rgba(0,0,255,0);} 100%{box-shadow:0 0 0.2em rgba(0,127,0,1);}}' . EOL;
print '      option{background:white;}' . EOL;
print '      option[selected]{background:lightgreen;}' . EOL;
print '      input[readonly]{background:#F3F3F3;}' . EOL;
print '      hr {display:block; height:0.15em; border:0; padding:0; margin:0.5em 0; background:grey; width:21em; }' . EOL;
print '    </style>' . EOL;
print '  </head>' . EOL;
print '  <body>' . EOL;
print '    <script type="text/javascript">' . EOL;
print '      ' . $foutje . EOL;
print '    </script>' . EOL;
print '    <form action="" method="post">' . EOL;
print '      <input name="var1" type="text" value="' . $var1 . '" onchange="form.submit();" />' . EOL;
print '      <br/>' . EOL;
print '      <input name="var2" type="text" value="' . $var2 . '" onchange="form.submit();" />' . EOL;
print '      <select id="op" name="op" onchange="form.submit();">' . EOL;
foreach($ops as $k => $v) {
  $s = ''; if ($op == $k) $s = 'selected="selected"';
  print '        <option value="' . $k . '"' . $s .'>' . $v . '</option>' . EOL;
}

print '      </select>' . EOL;
print '      <hr/>' . EOL;
print '      <input type="text" readonly="readonly" value="' . $totaal . '" />' . EOL;
print '    </form>' . EOL;
print '  </body>' . EOL;
print '</html>' . EOL;
exit(0);
?>
 
Joni Fleischer
Moderator

Joni Fleischer

07/10/2015 11:40:16
Anchor link
@An tje

Nice! :)
 
Thomas van den Heuvel

Thomas van den Heuvel

07/10/2015 12:07:09
Anchor link
Dat is een manier om HTML compleet onleesbaar te maken, I suppose.
 
Joni Fleischer
Moderator

Joni Fleischer

07/10/2015 13:48:25
Anchor link
Thomas van den Heuvel op 07/10/2015 12:07:09:
Dat is een manier om HTML compleet onleesbaar te maken, I suppose.


Zou leuk zijn dat als je het anders ziet, je dan ook met de naar in jouw ogen juiste oplossing komt?

Alleen maar commentaar geven op anderen helpt het probleem niet op te lossen?
 
- Ariën  -
Beheerder

- Ariën -

07/10/2015 14:40:43
Anchor link
Ten eerste zou het een stuk leesbaarder worden als je niet voor elke lijn een print of echo gebruikt.

Verder is het ook aan te raden of if-elseif-else- statement en while/for loops etc netjes uit te lijnen met de TAB-toets, zodat je precies onder elkaar kan zien welke bij elkaar hoort.

Ik weet niet welke editor je gebruikt, maar een goede fatsoenlijke PHP-editor heeft de mogelijkheid voor 'formatting' in een handomdraai.
 
Thomas van den Heuvel

Thomas van den Heuvel

07/10/2015 14:44:27
Anchor link
Als je een beetje had rondgekeken had je gezien dat ik niet "alleen maar commentaar geef".

Dit probleem is redelijk triviaal, daarnaast vraagt de topicstarter om een (complete) oplossing onder het mom van "hulp", zonder te laten zien wat deze zelf geprobeerd heeft. Dat komt dan bij mij over (en dit is een indruk die verkeerd kan zijn) alsof de topicstarter geen moeite wil doen of heeft gedaan om zelf tot een antwoord te komen. Je geeft nota bene zelf aan dat het waarschijnlijk om een huiswerkopdracht gaat.

Simpelweg omdat een oplossing werkt, maakt dit nog niet juist of "goed". De bovenstaande code mag dan wellicht werken, maar deze is gewoon totaal onleesbaar. Het is helemaal niet nodig om statische HTML te echo'en of te printen, het dient geen enkel doel. En voordat je begint te klagen dat ik enkel over esthetische kwesties aan het zwetsen ben: stel dat dit een applicatie is die ook onderhouden moet worden en waarbij AL je code zo geschreven is... dat is niet bepaald prettig werken wel?

Ik had liever gezien dat de topicstarter met fragmenten kwam en aangaf waar precies het probleem zat en dat als vertrekpunt te nemen in plaats van deze knip-en-plak-cultuur die er tegenwoordig steeds meer lijkt te ontstaan. Mensen zijn niet meer geinteresseerd in de (achterliggende) werking of de vorm, men wil direct een kant-en-klare oplossing. Het nadeel van dat soort mensen bedienen is dat ze morgen, nee, vandaag alweer achteraan in de rij aansluiten voor hun volgende probleem in plaats van zelf eens na te denken.

Ik zou zeggen, kijk eens wat verder dan je neus lang is voordat je de moraalridder uit gaat hangen.
Gewijzigd op 07/10/2015 14:48:41 door Thomas van den Heuvel
 
Kevin W

Kevin W

07/10/2015 18:17:12
Anchor link
Eventjes reageren op Thomas van den Heuvel.

Ik heb niet gevraagd achter een kant en klare oplossing. Enkel om hulp. Het is toch phpHULP??
De code die ik heb gekregen moet ik nog aanpassen zodat deze werkt zoals ik het wil.

Ik wou weten hoe ik tekstvakken kon koppelen aan een variabele. Ik was al een tijdje op zoek naar een oplossing (php.net, documentatie,...) maar zonder resultaat dus richt ik me tot jullie en ik ben ook dankbaar voor de hulp.

Het is gemakkelijk om commentaar te geven als je het allemaal al weet maar iedereen moet beginnen van 0 en ik doe mijn best om eerst zelf naar de oplossing te zoeken voor ik hulp vraag.
 

07/10/2015 18:46:08
Anchor link
Quote:
Ik weet niet welke editor je gebruikt, maar een goede fatsoenlijke PHP-editor heeft de mogelijkheid voor 'formatting' in een handomdraai.

Voor dit voorbeeld heb ik de textarea van phphulp gebruikt, maar ik heb de formatting-button nog niet gevonden.
Quote:
De bovenstaande code mag dan wellicht werken, maar deze is gewoon totaal onleesbaar.

Een developer moet elke code kunnen lezen die de parser snapt, want die regels zijn gewoon van te voren afgesproken. Welke delen van mijn voorbeeld snap je niet? Ik wil het wel verder toelichten.
 
Thomas van den Heuvel

Thomas van den Heuvel

07/10/2015 19:59:13
Anchor link
Quote:
Een developer moet elke code kunnen lezen die de parser snapt, want die regels zijn gewoon van te voren afgesproken.

Ik weet niet met wat voor developers jij normaal werkt, maar als ik van een collega dit soort code krijg om mee te werken, dan zou ik hem/haar vriendelijk doch dringend verzoeken eerst e.e.a. te fatsoeneren als deze verwacht dat ik hier ook maar iets mee ga doen.

Fijn dat machines hier chocola van kunnen maken, maar het zijn ook mensen die hier naar kijken (en in dit geval mensen die er iets van willen leren, daarom denk ik ook dat dit niet de makkelijkste vorm is).

Daarnaast denk ik dat er op deze site niet zo gek veel developers zitten, dus het lijkt me handiger om je code wat toegankelijker te houden.

Het is makkelijk om iets moeilijk(er) te maken, het is de kunst om zaken zo eenvoudig mogelijk te houden.
 

07/10/2015 20:10:48
Anchor link
Ik denk niet dat de print-regels nou zo ingewikkeld zijn.
Nogmaals, welk deel is onduidelijk? En hoe zou jij het beter doen?
 
Marthijn Buijs

Marthijn Buijs

07/10/2015 20:51:28
Anchor link
@An tje:

Zo zou ik het doen (en ik denk ook wel de voorkeur van de meeste mensen):
- niet bakkenvol html echo-en
- overzichtelijker php-code schrijven
 

07/10/2015 21:21:24
Anchor link
Maar nu heb je het over een voorkeur. Niemand die ingaat op wat onduidelijk is?
En nogmaals, je kunt wel commentaar geven maar waar is een beter codevoorbeeld?
 
Daan Slagter

Daan Slagter

07/10/2015 21:29:07
Anchor link
Dit lijkt mij veel leesbaarder:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<?php
// init
$vars = array('var1', 'var2', 'totaal');
foreach($vars as $v){
    $$v = 0;
}


if(isset($_POST['var1'])){
    $var1 = $_POST['var1'];
}

if(isset($_POST['var2'])){
    $var2 = $_POST['var2'];
}


foreach($vars as $v){
    $$v = floatval(str_replace(',', '.', $$v));
}


$ops = array('*' => 'X', '/' => '/', '+' => '+', '-' => '-', '%' => 'mod', '**' => 'exp', /* PHP 5.6+ */);
$op = '+';
$totaal = '#Foutje';
$foutje = '';

if(isset($_POST['op']) && array_key_exists($_POST['op'], $ops)){
    $op = $_POST['op'];
}

if($var2 == 0 && ($op == '/' || $op == '%')){
    $totaal = 'Delen door nul is flauwekul.';
}

else{
    try{
        $rc = @eval('$totaal = $var1 ' . $op . ' $var2;');
        if($rc === false){
            throw new Exception('PHP 5.6+ is hiervoor nodig.');
        }
    }

    catch(\Exception $e){
        $foutje = 'window.alert("' . $e->getMessage() . '")';
    }

    finally{
        foreach($vars as $v){
            $$v = str_replace('.', ',', $$v);
        }
    }
}


// formuliertje
?>


<!DOCYTYPE html>
<html>
    <head>
        <title>
            Variabele tekstvelden optellen
        </title>
        <style type="text/css">
            *{
                font-size:12pt;
                font-family:monospace;
            }
            
            body{
                margin:3em;
            }
            
            select, input{
                border-radius:0.5em;
                outline:0;
                width:15em;
                text-align:right;
                box-shadow:none;
                margin:0.33em;
                border:1px solid lightgrey;
                padding:0.4em 0.6em;
            }
            
            select{
                width:4em;
                text-align:left;
            }
            
            select:focus, input:focus{
                animation:foc 0.5s ease;
                box-shadow:0 0 0.2em rgba(0,127,0,1);
                background:#F3FFF3;
            }
            
            @keyframes foc{
                0%{
                    box-shadow:0 0 2em rgba(0,0,255,0);
                }
                
                100%{
                    box-shadow:0 0 0.2em rgba(0,127,0,1);
                }
            }
            
            option{
                background:white;
            }
            
            option[selected]{
                background:lightgreen;
            }
            
            input[readonly]{
                background:#F3F3F3;
            }
            
            hr{
                display:block;
                height:0.15em;
                border:0;
                padding:0;
                margin:0.5em 0;
                background:grey;
                width:21em;
            }
        </style>
    </head>
    <body>
        <script type="text/javascript">
          <?=$foutje; ?>
        </script>
        <form action="" method="post">
            <input name="var1" type="text" value="<?=$var1; ?>" onchange="form.submit();" />
            <br/>
            <input name="var2" type="text" value="<?=$var2; ?>" onchange="form.submit();" />
            <select id="op" name="op" onchange="form.submit();">
                <?php
                foreach($ops as $k => $v){
                    ?>

                    <option value="<?=$k; ?>" <?=$op == $k ? "selected" : ""; ?>><?=$k; ?></option>
                    <?php
                }
                ?>

            </select>
            <hr/>
            <input type="text" readonly="readonly" value="<?=$totaal; ?>" />
        </form>
</body>
</html>
 

07/10/2015 22:04:54
Anchor link
Dat gaat in tegen het basisprincipe van HTML en PHP gescheiden houden?
 

Pagina: 1 2 volgende »

 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.