Autor Zpráva
Lion76
Profil *
Zdravim, proc se nic neulozi, kdyz v $_POST jsou hodnoty, ktere nejsou v $_SESSION?

if(isset($_POST['ulozit'])){
$nove = array();
while(list($klic, $hodnota) = each($_POST['oznaceno'])):
if(in_array($hodnota, explode(";", $_SESSION['oznaceno']))){
continue;
} else {
$nove[] = $hodnota;
}
endwhile;
$_SESSION['oznaceno'] = implode(";", $nove);
}
tiso
Profil
Ten skript je dosť neefektívny:
- pri každom prechode cyklom vytváraš pole pre porovnávanie
- používaš while(list=each) miesto foreach
- prečo pozitívna podmienka s continue a vlastná práca v else? Stačí negatívna podmienka a žiadna else vetva.
Lion76
Profil *
tiso

Neco delam spatne, protoze je to stejna pisnicka.

if(isset($_POST['ulozit'])){
$nove = array();
foreach($_POST['oznaceno'] as $hodnota){
if(!in_array($hodnota, explode(";", $_SESSION['oznaceno']))){
$nove[] = $hodnota;
}
}
$_SESSION['oznaceno'] = implode(";", $nove);
}
tiso
Profil
Čo ti vypíše toto:
print_r($_POST['oznaceno']);
print_r($_SESSION['oznaceno']);
Lion76
Profil *
tiso

print_r($_POST['oznaceno']);

Array ( [0] => 1 [1] => 2 )

print_r($_SESSION['oznaceno']);

nevypise nic.
tiso
Profil
Pardón, $_SESSION['oznaceno'] nie je pole, takže tam malo byť echo $_SESSION['oznaceno'];
Máš tam vôbec session_start ?
Lion76
Profil *
tiso

Ano mam session_start hned na zacatku. Strucne popisi co vlastne chci, asi to bude lepsi.

Data $_POST['oznaceno'] se zkontroluji s $_SESSION['oznaceno'], pokud v $_SESSION['oznaceno'] nejsou zadna data, ktere se shodu s $_POST['oznaceno'], tak se to ulozi do pole. No a hodnoty pole se oddeli strednikem a ulozi se do $_SESSION['oznaceno']. No a $_SESSION['oznaceno'] se musi vlozit do pole, protoze $_POST['oznaceno'] je take pole.
Lion76
Profil *
Neni pole, ale takhle ho prece vytvoris explode(";", $_SESSION['oznaceno']).
tiso
Profil
Lion76 - nepovedal si mi nič nové, chápem o čo sa pokúšaš. Ale nepochopil si ma - čo Ti vypíše echo $_SESSION['oznaceno'];? alebo miesto echa použi var_dump($_SESSION['oznaceno']);
Lion76
Profil *
tiso

Ja se pokusim jeste jednou.

Promenna $_SESSION['oznaceno'] je prazdna, ja odeslu $_POST['oznaceno'], protoze promenna $_SESSION['oznaceno'] je prazdna, tak se ulozi 1;2. Ted odeslu znovu $_POST['oznaceno'] a pole $_POST['oznaceno'] bude Array ( [0] => 2 [1] => 10 ), no a my v tom cyklu vime, ze hodnota 2 tam uz je, tak do $_SESSION['oznaceno'] ulozime 1;2;10 . Rozumis uz tomu?
tiso
Profil
Lion76 - ale tak to nefunguje, výsledkom by bolo 2;10 v $_SESSION['oznaceno'], iba ak by si tam mal
$_SESSION['oznaceno']BODKA= implode(";", $nove);
Lion76
Profil *
tiso

No a ted pokud udelam z toho retezec, jak jsi poradil, tak se to nepridava, ale prepisuje. Takze ja nevim co s tim.
tiso
Profil
Lion76 - ani ja.
Lion76
Profil *
tiso

Jeste si s tim pohraji. Jinak dekuji za pomoc a hezky svatky preji.
tiso
Profil
Lion76 - dík, podobne...
Ja som z tej premennej reťazec nespravil, on už z nej reťazec bol. Rozdiel je asi takýto:
1. bez bodky: v $_SESSION['oznaceno'] budeš mať iba hodnoty ktoré si pridal
2. s bodkou: v $_SESSION['oznaceno'] budeš mať minulé hodnoty + tie čo si pridal (nevieš odobrať hodnoty)
3. bez bodky, zrušíš podmienku if (a teda $nove sa bude napĺňať stále): v $_SESSION['oznaceno'] budeš mať aktuálne hodnoty (vieš pridat i uberať hodnoty)

Čo z tohoto chceš?
Lion76
Profil *
tiso

I ja dekuji. No chci 2, jdu si s tim trosku pohrat, ted jsem nemel cas.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0