Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Šimon Adámek
Tvůrce
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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
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
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
19.10.2018 9:05
Avatar
Šimon Adámek
Tvůrce
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
Odpovídá na Šimon Adámek
Neaktivní uživatel: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
Neaktivní uživatelský účet
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
Tvůrce
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.