| Autor | Zpráva | ||
|---|---|---|---|
| Fanda Profil * |
#1 · Zasláno: 28. 12. 2006, 22:37:04
Mám obyčejný formulář a v něm jako name="pole[]" Zadám do toho formuláře např. 4 hodnoty a odešlu. Na další stránce ho zpracuji jako
$pole[]= $_POST ['pole[]'] Když se zeptám: echo count($pole); Vypíše to 5, i když jsem ve skutečnosti odeslal jen 4 hodnoty. Zkoušel jsem to pole projet i foreach ($pole as $bla) { echo $bla;} a to mi vypsalo sprvávně jen ty 4 hodnoty, které jsem do něj zapsal. Nevíte, kde dělám chybu? |
||
| Peca Profil |
#2 · Zasláno: 28. 12. 2006, 22:43:39
Zkus print_r($pole); Třeba tam jsou nějaké prázdné hodnoty, které se nevypisují.
|
||
| Fanda Profil * |
#3 · Zasláno: 28. 12. 2006, 23:37:05
echo count($pole);
echo print_r($pole); 5 Array ( [0] => Vojta [1] => Fanda [2] => Andre [3] => Hynek [4] => ) Mám tomu rozumět tak, že ta pátá hodnota pole existuje, ale je prázdná? Pokud ano, jak se jí zbavím a jak to, že se mi tam vůbec objevila? Pro doplnění tady je ta část mého formuláře do něhož jsem zadal ta 4 jména. for ($i=1; $i<=4; ++$i) { echo "<tr> <td>Jméno č.",$i,":</td> <td><input type="text" name="pole[]" size="20" maxlength="15" /> </td> </tr>"; } |
||
| D1ce Profil |
#4 · Zasláno: 29. 12. 2006, 02:29:51
Fanda
Někde to páte pole bude skryté. Tento kód je naprosto korektní:
|
||
| D1ce Profil |
#5 · Zasláno: 29. 12. 2006, 03:42:19
Fanda
Jinak pokud neobjevíte, kde máte to skryté pole mohlo by pomoct něco ve stylu:
|
||
| Rellik Profil |
#6 · Zasláno: 29. 12. 2006, 14:57:16 · Upravil/a: Rellik
Pole se vzdy indexuje od 0 takze by melo stacit zmenit radek $pole[]= $_POST ['pole[]'] na
$pole[1]= $_POST ['pole[]'] pak uz by to nemelo pocitat od 0 ale od 1... jiank to pocita od 0 do 4 coz je celkem 5. |
||
| Fanda Profil * |
#7 · Zasláno: 29. 12. 2006, 21:10:26
Na jednu stranu by to všechno vysvětlovalo, ale na druhou mi přijde logičtější, že když mám pole o čtyřech hodnotách, tak se bude počítat od 0 do 3.
Jinak jsem zkoušel ty případné změny, které navrhoval D1ce. Elegantní řešení s podmínkou nemělo žádný účinek. Ten var_dump mi vypsal vždy něco jako string(5) a hodnotu pole. Také sem zjistil, že mi to dělají všechny formuláře, kam zadávám hodnoty jako pole. Pokaždé, když dám count, vypíše se číslo o jednotku vyšší. ps: Rád bych se také zeptal, co znamená tenhle zápis v action u formuláře: <?php echo $_SERVER['REQUEST_URI']; ?> |
||
| Rellik Profil |
#8 · Zasláno: 30. 12. 2006, 00:33:37 · Upravil/a: Rellik
Myslim ze sem vyresil tvuj problem takto:
<?php Je to odskousene a funguje to... ;) A tady toto <?php echo $_SERVER['REQUEST_URI']; ?> vypise jen cestu k souboru ktery je zrovna nacteny a v kterem se to ma zpracovat... |
||
| D1ce Profil |
#9 · Zasláno: 30. 12. 2006, 00:44:06
Fanda
Jestli tohle nevypíše čtyřku, tak už vážně začnu věřit na duchy:
Btw1: nebyl n8hodou dump před tím přiřazením? Btw2: Místo $pole[]= $_POST ['pole[]']; bych dal $pole = $_POST['pole']; a mělo by to fungovat, přetože to zavání Cargo cult programmingem. |
||
| peta Profil |
#10 · Zasláno: 30. 12. 2006, 18:33:37
Fanda
echo count($pole); echo print_r($pole); 5 Array ( [0] => Vojta [1] => Fanda [2] => Andre [3] => Hynek [4] => ) To take znamena: Array ( [0] => "Vojta" [1] => "Fanda" [2] => "Andre" [3] => "Hynek" [4] => "") A pocet polozek je teda 5, count spravne hlasi 5. Jinak teda cteni hodnot z postu provadin $x = isset($POST["hodnota"])?$POST["hodnota"]:""; Nespoleham na globalni promenne, ze to bude v $hodnota; Takze si muzes jako prvni vypsat $_POST a get echo "<hr>POST = "; print_r($_POST); echo "<hr>GET = "; print_r($_GET); Jo, a co kdybys ukazal ten kod? aaa.php -> aaa.php.txt a sup na web, odkaz do diskuze :) |
||
|
Časová prodleva: 19 let
|
|||
Toto téma je uzamčeno. Odpověď nelze zaslat.
0