Autor | Zpráva | ||
---|---|---|---|
Lion76 Profil * |
#1 · Zasláno: 22. 12. 2007, 14:24:16
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 |
#2 · Zasláno: 22. 12. 2007, 14:31:43
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 * |
#3 · Zasláno: 22. 12. 2007, 15:07:28
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 |
#4 · Zasláno: 22. 12. 2007, 15:33:34
Čo ti vypíše toto:
print_r($_POST['oznaceno']); print_r($_SESSION['oznaceno']); |
||
Lion76 Profil * |
#5 · Zasláno: 22. 12. 2007, 15:45:49
tiso
print_r($_POST['oznaceno']); Array ( [0] => 1 [1] => 2 ) print_r($_SESSION['oznaceno']); nevypise nic. |
||
tiso Profil |
#6 · Zasláno: 22. 12. 2007, 15:58:53
Pardón, $_SESSION['oznaceno'] nie je pole, takže tam malo byť echo $_SESSION['oznaceno'];
Máš tam vôbec session_start ? |
||
Lion76 Profil * |
#7 · Zasláno: 22. 12. 2007, 16:09:32
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 * |
#8 · Zasláno: 22. 12. 2007, 16:11:20
Neni pole, ale takhle ho prece vytvoris explode(";", $_SESSION['oznaceno']).
|
||
tiso Profil |
#9 · Zasláno: 22. 12. 2007, 16:19:19
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 * |
#10 · Zasláno: 22. 12. 2007, 16:27:42
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 |
#11 · Zasláno: 22. 12. 2007, 16:34:56
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 * |
#12 · Zasláno: 22. 12. 2007, 16:44:24
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 |
#13 · Zasláno: 22. 12. 2007, 16:54:09
Lion76 - ani ja.
|
||
Lion76 Profil * |
#14 · Zasláno: 22. 12. 2007, 16:57:31
tiso
Jeste si s tim pohraji. Jinak dekuji za pomoc a hezky svatky preji. |
||
tiso Profil |
#15 · Zasláno: 22. 12. 2007, 17:36:22
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 * |
#16 · Zasláno: 22. 12. 2007, 21:00:43
tiso
I ja dekuji. No chci 2, jdu si s tim trosku pohrat, ted jsem nemel cas. |
||
Časová prodleva: 16 let
|
0