Autor | Zpráva | ||
---|---|---|---|
krejcimara Profil |
#1 · Zasláno: 14. 1. 2015, 11:59:11
Zdravím všechny,
mám problém s polem. Deklaroval jsem toto pole: $pole = array ( 'krok2' => ' ', 'krok3' => ' ', 'kork4'=> array ( 'jmeno' => " ", 'prijmeni' => " ", 'adresa1' => " ", 'adresa2' => " ", 'psc' => " ", 'textarea' => " " ), 'krok5' => ' ' ); $_SESSION['kroky']=$pole; no a pak se ho snažím naplnit: if (isset($_POST['odeslat'])){ $pole=$_SESSION['kroky']; foreach ($pole['krok4'] as $key => $value){ unset($pole['krok4']['$key']); } $pole['krok4']['jmeno']=$_POST['jmeno']; $pole['krok4']['prijmeni']=$_POST['prijmeni']; $pole['krok4']['adresa1']=$_POST['adresa1']; $pole['krok4']['adresa2']=$_POST['adresa2']; $pole['krok4']['telefon']=$_POST['telefon']; $pole['krok4']['psc']=$_POST['psc']; $pole['krok4']['textarea']=$_POST['poznamkastepfor']; $_SESSION['kroky']=$pole; } problém je v tom, že mi to vypíše toto: Warning: Invalid argument supplied for foreach() in /data/www/konemikulov.cz/nette.konemikulov.cz/php/steps4.php on line 12 Warning: Illegal string offset 'jmeno' in /data/www/konemikulov.cz/nette.konemikulov.cz/php/steps4.php on line 17 M Warning: Illegal string offset 'prijmeni' in /data/www/konemikulov.cz/nette.konemikulov.cz/php/steps4.php on line 18 K Warning: Illegal string offset 'adresa1' in /data/www/konemikulov.cz/nette.konemikulov.cz/php/steps4.php on line 19 B Warning: Illegal string offset 'adresa2' in /data/www/konemikulov.cz/nette.konemikulov.cz/php/steps4.php on line 20 M Warning: Illegal string offset 'telefon' in /data/www/konemikulov.cz/nette.konemikulov.cz/php/steps4.php on line 21 7 Warning: Illegal string offset 'psc' in /data/www/konemikulov.cz/nette.konemikulov.cz/php/steps4.php on line 22 6 Warning: Illegal string offset 'textarea' in /data/www/konemikulov.cz/nette.konemikulov.cz/php/steps4.php on line 23 Nevíte někdo co stím? |
||
Corwin Profil |
#2 · Zasláno: 14. 1. 2015, 12:38:47
k čemu tam je přesně ten unset? navíc ty uvozovky u $key tam nepatří.
$pole = $_SESSION['pole']; foreach($_POST as $key => $value){ if(isset($pole['krok4'][$key])){ $pole['krok4'][$key] = $value; } } $_SESSION['pole'] = $pole; musí samozřejmě sedět všechny klíče, takže tvá $_POST['poznamkastepfor'] by se měla jmenovat "textarea". |
||
Joker Profil |
#3 · Zasláno: 14. 1. 2015, 13:25:00
krejcimara:
„Nevíte někdo co stím?“ Sjednotit si pojmenování klíčů- krok vs. kork. |
||
krejcimara Profil |
#4 · Zasláno: 14. 1. 2015, 14:49:06 · Upravil/a: krejcimara
Corwin:
No chci před vložením dat z formuláře, vymazat data z pole funkcí unset, je to špatně? Joker: „Sjednotit si pojmenování klíčů- krok vs. kork.“ Udělal jsem, žádná změna :) Moc děkuji, už mi to funguje. Problém byl jednak v těchto překlepech, a v tom že mám platnost session nastavenou na 24 hodin, takže jsem ukládal do neaktuální struktury pole, jestli mi rozumíte. Děkuji :) |
||
Corwin Profil |
#5 · Zasláno: 14. 1. 2015, 16:20:26
ten unset je přeci zbytečný, když v zápětí tam nastavíš nové hodnoty, ne? pokud je POST proměnná prázdná, bude i výsledný klíč v sešně prázdný. ale aspoň bude existovat a nebude ti to házet warningy.
|
||
Tori Profil |
#6 · Zasláno: 15. 1. 2015, 07:48:39
krejcimara:
„No chci před vložením dat z formuláře, vymazat data z pole funkcí unset“ Špatně to není, jen zbytečně složitě. Tohle bude fungovat stejně: $pole['krok4'] = array();
„Warning: Invalid argument supplied for foreach() + Warning: Illegal string offset“ Bylo by dobře hned na začátku zkontrolovat, jestli v session vůbec takové pole existuje, tj. místo $pole=$_SESSION['kroky']; použít např.:
$pole = isset($_SESSION['kroky']) && is_array($_SESSION['kroky']) ? $_SESSION['kroky'] : array(); (tj. pokud proměnná v session existuje a je to pole, tak se přiřadí do $pole, v ostatních případech se použije nové pole).
|
||
Časová prodleva: 9 let
|
0