Stránka: 1 z 1
| [ Príspevkov: 17 ] | |
| Autor | Správa |
|---|
Registrovaný: 21.06.14 Prihlásený: 28.03.15 Príspevky: 25 Témy: 4 | 4 |
Potrebovala by som poradit : Kód: if(isset($_POST['typ'])&& $_POST['typ'] == $row['id']){ echo "<input type='checkbox' checked=\"checked\" name='typ[]' value=" . $row['id'] . "><label>".$row['nazov']."</label>"; echo '<br>'; }else{ echo "<input type='checkbox' name='typ[]' value=" . $row['id'] . ">".$row['nazov']; echo '<br>'; } potrebovala by som to po odoslani nechať zasrktnute ale neviem ako ..pri poli ..checked nefunguje
|
|
Registrovaný: 08.08.09 Príspevky: 12446 Témy: 38 | 38 |
Prosím ťa, skús ešte raz napísať čo chceš. Aké pole? Keď máš v <input> elemente definované name='typ[]' (typ[] nie je pole, ale reťazec), tak musíš v post testovať na $_POST['typ[]']. btw. label vypisuješ len pre jeden zaškrtnutý checkbox? A vidím tam duplicitný kód. Kód patrí do [code], upravené.
| Naposledy upravil killer dňa 06.11.2014 9:12, celkovo upravené 1 | | Pravda no, s PHP som už dávno nerobil |
_________________ always is always wrong |
|
Registrovaný: 21.06.14 Prihlásený: 28.03.15 Príspevky: 25 Témy: 4 | 4 |
Teraz ked odskrtnem dajme tomu checkbox hrusky a odoslem to ..v tom istom file.php...tak mi po odoslani sice vypise to co ma...ale tie boxi uz neostanu zaskrtnute...
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
killer píše: Keď máš v <input> elemente definované name='typ[]' (typ[] nie je pole, ale reťazec), tak musíš v post testovať na $_POST['typ[]']. Nespráva sa php pri takom názve špeciálne a nevytvára pole?
|
|
Registrovaný: 01.05.05 Príspevky: 13557 Témy: 1483 | 1483 Bydlisko: Bratislava |
Mne sa tiez zda ze pri typ[] to php berie ako pole a nie retazec.
_________________ Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 11 Enterprise | APC Back-UPS BE-850 VA | Lenovo ThinkPad X1 Carbon | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA & Samsung SSD 860 1 TB | Ubuntu 24.04 LTS | Dell Wyse 3040 | Intel Atom x5-Z8350 | 2 GB DDR3 1600 MHz | 16 GB eMMC | 24" EIZO FlexScan EV2451 | Alpine Linux + XFCE4 |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
$_POST['typ'] je pole, takze to musis kontrolovat napr. cez in_array($row['id'], $_POST['typ'])
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 21.06.14 Prihlásený: 28.03.15 Príspevky: 25 Témy: 4 | 4 |
 stratila som sa v tom uz
|
|
|
Kód: if(isset($_POST['typ'])&& $_POST['typ'] == $row['id']){ echo "<input type='checkbox' checked=\"checked\" name='typ[]' value=" . $row['id'] . "><label>".$row['nazov']."</label>"; echo '<br>'; }else{ echo "<input type='checkbox' name='typ[]' value=" . $row['id'] . ">".$row['nazov']; echo '<br>'; } Načo tam je tá dvojitá podmienka? Chceš celé toto spustiť len ak je nastavená premenná typ a zároveň, ak premenná typ je rovná $row["id"]. To ti síce pôjde, ale toto prvé isset je tam zbytočne. Ak totiž $_POST["typ"] sa bude rovnať $riw['id'], tak prvý isset naberá vždy pravdu, pretože táto premenná bude vždy nastavená... A k tým checkboxom: $row["id"] vyzerá byť pole, takže musíš checked vypísať podľa toho, či daná hodnota v poli je, alebo nie je. Na to slúži funkcia in_array($ihla,$kopaSena),Trošku sa mi to asi pletie, lebo netuším, čo je v $row["id"]. Ale raw kód by som spravil nejako takto: Kód: if($_POST['typ'] == $row['id']){ echo "<input type='checkbox' ".((in_array($_POST["typ"],$row["id"]))? "checked":"")." name='typ[]' value=" . $row['id'] . "><label>".$row['nazov']."</label>"; echo '<br>'; }else{ echo "<input type='checkbox' name='typ[]' value=" . $row['id'] . ">".$row['nazov']; echo '<br>'; } Hádam to v dačom pomôže BTW: Nemusíš písať checked="checked", stačí priamo checked (a v selectoch priamo selected) a odpadne ti kopec syntaktických problémov s riešením úvodzoviek
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
Mego píše: prvý isset naberá vždy pravdu, pretože táto premenná bude vždy nastavená... Omyl. Ked by nebol formular este odoslany, tak by tvoj kod vyhodil "chybu" (okrem ineho)
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
|
ee, kód sa nespustí, pokial v $_POST nebude $row["id"]. A ten sa tam dostane práve cez formulár, či nie?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
Pred odoslanim formulara premenna $_POST['typ'] neexistuje
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
|
No a ak neexistuje, tak if($_POST["typ"]==$row["id"]) je FALSE a teda sa ten kód neprevedie... či? Nechápem teraz, čo chceš povedať
// Spojený príspevok 07 Nov 2014, 11:24
Nemalo by vyhodiť nijakú chybu... či?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
Co sa stane, ked v kode pouzijes neexistujucu premennu (v tomto pripade v samotnej podmienke, nie v tele vetvy)? Vyhodi ti to "chybu" (samozrejme, ak nemas zobrazovanie tychto hlasok vypnute). Preto sa na kontrolu pouziva isset.
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
|
Hej? A ja som celý život v tom, že sa správa ako NULL
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
Ano, ale to nic nemeni na tom, ze sa notice vygeneruje. Aby som to uzavrel, isset pri NULL nevracia TRUE, ako si ty pisal, a preto to nie je "dvojita podmienka".
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
|
Jaj no dobre teda... aj tak to nebol hlavný problém tejto témy
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
Mas pravdu. Reagoval som hlavne preto, lebo aj ked si sa snazil pomoct (co je chvalyhodne), boli tam chyby, ktore by pri rieseni problemu nepomohli. Nejedna sa len o spominanu podmienku, ale napr. aj o in_array, ale to som zbytocne nerozoberal, lebo spravny zapis si hadam vie kazdy vyhladat aj sam.
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Stránka: 1 z 1
| [ Príspevkov: 17 ] | |
|