Autor | Zpráva | ||
---|---|---|---|
lionel messi Profil |
#1 · Zasláno: 24. 4. 2015, 18:47:00
Zdravím,
trochu sa vŕtam v niektorých mojich starších kódoch a narazil som na kalkulačku v PHP. Kód funguje správne, ale problémom je nepraktické pridanie novej položky (musím ho urobiť na mnohých miestach). Príklad: Formulár: <form method="post"> Lorem: <input type="number" size="1" name="lorem"> ks Ipsum: <input type="number" size="1" name="ipsum"> ks Amen: <input type="number" size="1" name="amen"> ks <input type="submit" name="submit" value="Spočítať cenu fytopufu"> ks </form> Spracovanie formulára: <?php $cenaLorem = 3.89; $cenaIpsum = 4.99; $cenaAmen = 7.99; if(!isset($_POST['submit'])) { include "kalkulacka-formular.php"; } else { $cenaCelkom = 0; $cenaFinalLorem = 0; $cenaFinalIpsum = 0; $cenaFinalAmen = 0; if($_POST['lorem'] > 0) { $cenaFinalLorem = $_POST['lorem'] * $cenaLorem; echo "<p class=\"vypocet\">Lorem: $_POST[lorem] × $cenaLorem € = ". $_POST['lorem'] * $cenaLorem ." €</p>"; } if($_POST['ipsum'] > 0) { $cenaFinalIpsum = $_POST['ipsum'] * $cenaIpsum; echo "<p class=\"vypocet\">Ipsum: $_POST[ipsum] × $cenaIpsum € = ". $_POST['ipsum'] * $cenaIpsum ." €</p>"; } //to isté pre Amen $cenaCelkom += $cenaFinalLorem + $cenaFinalIpsum + $cenaFinalAmen; echo "Celková cena fytopufu: $cenaCelkom €"; } ?> Kód počíta, ale pridanie novej položky (ku ktorému dochádza pomerne často) je zbytočne zložité. Bolo by možné tento kód prepísať do elegantnejšej formy? Uprednostňujem procedurálne riešenie pred OOP, ktoré neovládam. Ďakujem za každú radu. |
||
ŠimizuŠikenze Profil * |
#2 · Zasláno: 24. 4. 2015, 19:35:15
Pole v PHP snad znáš
|
||
Fisir Profil |
#3 · Zasláno: 24. 4. 2015, 19:43:42
Reaguji na lionela messiho:
Rychlý náčrt: <?php $fields = array( 'lorem' => array( 'title' => 'Lorem', 'coefficient' => 3.89 ), 'ipsum' => array( 'title' => 'Ipsum', 'coefficient' => 4.99 ), 'amen' => array( 'title' => 'Amen', 'coefficient' => 7.99 ) ); if(!isset($_POST['submit'])){ echo('<form action="" method="post">'); foreach($fields as $name => $properties){ echo(htmlspecialchars($properties['title']).': <input type="number" size="1" name="'.htmlspecialchars($name, ENT_QUOTES).'"> ks'); } echo('<input type="submit" name="submit" value="Spočítat cenu fytopufu">'); echo('</form>'); } else { $final = 0; $intermediate = array(); foreach($fields as $name => $properties){ $value = $fields[$name]['value'] = floatval($_POST[$name]); $result = $value * $properties['coefficient']; $intermediate[$name] = $result; $final += $result; } foreach($intermediate as $name => $result){ echo('<p class="vypocet">'.htmlspecialchars($fields[$name]['title']).': '.$fields[$name]['value'].' × '.$fields[$name]['coefficient'].' € = '.$result.' €</p>'); } echo('Celková cena fytopufu: '.$final.' €'); } ?> |
||
lionel messi Profil |
#4 · Zasláno: 24. 4. 2015, 20:25:37
ŠimizuŠikenze:
„Pole v PHP snad znáš“ Áno, bolo mi jasné, že cesta na 99,99% povedie týmto smerom, ale stále mi robí problém pochopenie vnorených polí (nemyslím syntaktické, skôr logické — nikdy mi nenapadne ich využiť). Fisir: Ďakujem pekne, funguje bezchybne. |
||
Fisir Profil |
#5 · Zasláno: 24. 4. 2015, 20:32:09
Reaguji na lionela messiho:
„Ďakujem pekne, funguje bezchybne.“ Není zač, ale jak tak koukám, tak jsem místo rychlého náčrtu udělal celý výkres :-). |
||
Časová prodleva: 10 let
|
0