NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: session jako pole

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Mario Brunmayr:7.5.2017 21:59

Ahoj, mám tuto PHP funkci na vložení položek do session. Vložení proběhne úspěšně ale když chci vložit další hodnotu tak se mi nevkládá jako další hodnota v poli ale přepisuje tu původní.

        public function PridejProdukt($produkt)
{
        $produkt = array($produkt);
        $_SESSION['produkt'] = $produkt;
}

Předem děkuji za pomoc
Mario Brunmayr

 
Odpovědět
7.5.2017 21:59
Avatar
Neaktivní uživatel:7.5.2017 22:34

Protože přepisuješ index novým produktem místo toho abys v něm měl pole s prvky a přidával je. Takže vyměnit:

$_SESSION['produkt'] = $produkt;

za

if (empty($_SESSION['produkt'])){
        $_SESSION['produkt'] = [];
}
$_SESSION['produkt'][] = $produkt;

// EDIT
Tenhle řádek chceš dát asi pryč, protože pak přepisuješ $_SESSION['pro­dukt'] novým polem s produktem na indexu 0.

$produkt = array($produkt);
Editováno 7.5.2017 22:36
Nahoru Odpovědět
7.5.2017 22:34
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Mario Brunmayr:7.5.2017 22:44

Podobné řešení jsem zkoušel a toto taky nefeunguje. Vyhodí mi to chybovou hlášku: Fatal error: Uncaught Error: [] operator not supported for strings in
Problém je v posledním řádku

$_SESSION['produkt'][] = $produkt;

A když nepoužiju kod níže, tak se zase hodnota produktu přepíše

$_SESSION['produkt'] = $produkt;
 
Nahoru Odpovědět
7.5.2017 22:44
Avatar
Neaktivní uživatel:7.5.2017 22:49

Pak máš v $_SESSION['pro­dukt'] uložený string, který tam nemá co dělat :) Zavolej si jednou unset($_SESSI­ON['produkt']) a pak to zkus znovu.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
7.5.2017 22:49
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Mario Brunmayr:7.5.2017 23:08

Funguje, děkuji, problém byl v tom že session produkt jsem v aplikaci již používal a nedošlo mi že mám duplicitní název :-) .

 
Nahoru Odpovědět
7.5.2017 23:08
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 5 zpráv z 5.