Java týden Java týden
Aprílový black friday tě nenechá v klidu! Až 80 % prémiového obsahu zdarma. Více informací
Pouze tento týden slevy až 80 % na programování v Javě
Avatar
Šimon Adámek
Redaktor
Avatar
Šimon Adámek:18.10.2018 18:17

Ahoj,
snažím se napsat kalkulačku ,která by psala kromě aktuálního výsledku také součet všech předešlých. Hodnoty z $_POST ukládám do pole ,ale poslední hodnota vždy přepíše předešlou ,takže se mi zobrazují dvě stejná čísla.

index.php
Class.php

Zkusil jsem: Zkoušel jsem hledat na google ale nic jsem nenašel.

Chci docílit: Ukládání všech zadaných hodnot do pole.

 
Odpovědět 18.10.2018 18:17
Avatar
Mirek Slouka
Člen
Avatar
Odpovídá na Šimon Adámek
Mirek Slouka:18.10.2018 21:16

Ahoj,
ty hodnoty se ti nepřepisují. Ve chvíli, kdy ty vidíš stránku, která ti vypíše výsledek, tak žádná z těch hodnot na serveru už neexistuje, na co by si to uchovával. Pokud chceš zaznamenávat všechny výsledky a pak je sčítat, tak máš víc možností.

  • Ukládat si data do souboru na serveru odkud je budeš číst
  • Použít superglobální pole $_SESSION (tuhle možnost mám osobně nejradši)
$_SESSION['tvojepole'] = [];
// Samozřejmě prvně musíš session spustit pomocí metody
session_start();
  • Využít v JS local storage, ale to už je mimo řešení pomocí jazyka PHP
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 18.10.2018 21:16
I can explain it to you, but I can't understand it for you.
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:19.10.2018 7:42

A nebo je posilat do stranky do skrytych inputu (type=hidden). Pripadne tam psat primo vzorec.
Pouzil bych spis session, pokud je potrebujes v php. local storage, pokud v js.

 
Nahoru Odpovědět  +1 19.10.2018 7:42
Avatar
Jirka Jr
Člen
Avatar
Odpovídá na Šimon Adámek
Jirka Jr:19.10.2018 9:05

přidám k předchozím návrhům ještě tu možnost uložení, která (dle mé kdysi vlastní zkušenosti :-) ) nejvíc děsí začátečníky:

databáze !

jinak souhlas s předchozími přispěvateli a také doporučuji $_SESSION

 
Nahoru Odpovědět  -1 19.10.2018 9:05
Avatar
Šimon Adámek
Redaktor
Avatar
Šimon Adámek:19.10.2018 16:00

Zdravím,
přepsal jsem kód pomocí $_SESSION, ale asi mám někde chybu protože se mi stále nezobrazuje součet výsledků.

<?php
session_start();

$_SESSION['soucet']=[];
class Class2 {
    private $vysledek;
    public $soucet;

    public function vypocitej($cena, $mnozstvi) {
        $mezi = $mnozstvi * $cena;
        $vysledek = $mezi * 0.21 + $mezi;
        $this->pridej($vysledek);
        $this->vysledek = $vysledek;
    }

    public function pridej($hodnota) {
        $_SESSION["soucet"][]=$hodnota;
    }

    public function soucet() {
        return array_sum($_SESSION["soucet"]);
    }

    public function vypis() {
        echo '<table border="1"><tr>';
        echo '<td>' . $this->vysledek . '</td>';
        echo '<td>' . $this->soucet() . '</td>';
        echo '</tr></table>';
    }

}
 
Nahoru Odpovědět 19.10.2018 16:00
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Šimon Adámek
Daniel Vítek:19.10.2018 20:26

Na 4. řádku si to vždycky vynuluješ.

Jirka Jr pro tento případ se databáze opravdu nehodí :)

Nahoru Odpovědět 19.10.2018 20:26
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Mirek Slouka
Člen
Avatar
Odpovídá na Šimon Adámek
Mirek Slouka:20.10.2018 10:19

A taky v metodě přidej z toho uděláš 2D pole. Podívej se na funkci array_push.

Nahoru Odpovědět 20.10.2018 10:19
I can explain it to you, but I can't understand it for you.
Avatar
Šimon Adámek
Redaktor
Avatar
Šimon Adámek:20.10.2018 11:13

Děkuji všem za rady už mi to funguje. :-)

 
Nahoru Odpovědět 20.10.2018 11:13
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.