Autor | Zpráva | ||
---|---|---|---|
TomasRe Profil |
#1 · Zasláno: 22. 1. 2015, 00:23:00 · Upravil/a: Moderátor (editace znemožněna) 23. 1. 2015, 09:59:38
Můžete mi prosím poradit? Ve formuláři se mi načítá do jednotlivých input name=dni.$i, kde $i je od 1 do 5. Při odeslání formuláře pak chci načíst všech 5 proměnných způsobem:
for ($i=1;$i<=5;$i++){$dni.$i.=$_REQUEST["dni".$i]; echo $ponor.$i;} to však vypíše 10 místo 5 hodnot Moderátor Alphard: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na
![]() |
||
Alphard Profil |
Snaha číslovat proměnné je naprosto špatná, opravdu, naučte se pracovat s poli.
Formulářové inputy si můžete také pojmenovat jako pole name="den[1]" a pak hned pracovat s polem $_REQUEST['den'] .
|
||
TomasRe Profil |
Alphard:
Rozumím. To určitě použiji, ale zasekl jsem se již při tvorbě polí. Pro vysvětlení - připojím se k databázi a chci vytvořit pole: <?php $vysledek = mysql_query("SELECT * FROM tabulka WHERE cena!=0 ORDER BY poradi"); while ($zaznam = mysql_fetch_array($vysledek)): $pole = array (1 => $zaznam["id"]); echo implode(", ", array_keys($pole)); endwhile; ?> což vypíše 11111 |
||
xROAL Profil |
#4 · Zasláno: 22. 1. 2015, 15:22:59
<?php $pole = array(); // vytvoríme prázdne pole $vysledek = mysql_query("SELECT * FROM tabulka WHERE cena!=0 ORDER BY poradi"); while ($zaznam = mysql_fetch_array($vysledek)): $pole[] = $zaznam['id']; // zápis $pole[] znamená "pridaj na koniec pola" endwhile; echo implode(", ", array_keys($pole)); // výpis dáme až keď skončí celý cyklus a pole bude naplnené ?> V pôvodnom zápise si zakaždým vytváral nové pole, ktorého jediným prvkom bol kľúč "1" s hodnotou $znaznam["id"] - resp. si si toto pole stále dookola prepisoval novým. |
||
TomasRe Profil |
xROAL:
Moc děkuju za radu. V cyklu pak vložím <input name="$pole[$i]", kde $i je proměnná podle počtu prvků v poli. Když to pak načítám na další stránce: $pole = $_REQUEST['pole']; echo $pole[2]; jak můžu vypsat jednotlivé proměnné? $pole[2] mi přijde jako nesmysl a i tak se to chová. |
||
TomasRe Profil |
#6 · Zasláno: 23. 1. 2015, 08:57:29
Našel jsem nápovědu
foreach($_REQUEST['pole'] as $pole); ale to hází chybu: Invalid argument supplied for foreach() |
||
lionel messi Profil |
#7 · Zasláno: 23. 1. 2015, 11:08:54
TomasRe:
„to hází chybu: Invalid argument supplied for foreach()“ Čo vypíše var_dump($_REQUEST['pole']); ? Podľa chyby sa zdá, akoby to v tom okamihu nebolo pole, ale iný dátový typ.
|
||
TomasRe Profil |
lionel messi:
To vrací NULL :-(. Abych nemátl - pole jsem přejmenoval na "posob" - viz.: <?php $posob = array();$text = array();$dni = array(); $vysledek = mysql_query("SELECT * FROM cenik_ponor WHERE cena!=0 ORDER BY poradi"); while ($zaznam = mysql_fetch_array($vysledek)): $posob[] = "posob".$zaznam['id']; $text[] = $zaznam['text']; $dni[] = "dni".$zaznam['id']; endwhile; $pocet = mysql_result(mysql_query("SELECT COUNT(*) FROM cenik_ponor WHERE cena!=0"), 0); settype ($pocet, integer); $i=0; for ($j=1;$j<=$pocet;$j++){ echo "<tr><td><strong>".$text[$i]." </strong></td><td class='tab_10'></td><td><strong>osob:</strong> </td><td><select name='".$posob[$i]."'>"; for ($k=0;$k<15;$k++) echo "<option value='".$k."'>".$k."</option>"; echo "</select></td><td class='tab_10'></td><td><strong> dní:</strong> </td><td><select name='".$dni[$i]."'>"; for ($k=1;$k<15;$k++) echo "<option value='".$k."'>".$k."</option>"; echo "</select></td></tr>"; $i++; } ?> |
||
TomasRe Profil |
#9 · Zasláno: 23. 1. 2015, 14:20:11
Ale chyba musí být v přijmutí dat. Pro zjednodušení jsem udělal stránku:
<form action="test4.php" method="post"> <?php $pos = array(); $pos = array (1 => "posoa","posob","posoc"); echo "<input type='text' name='".$pos[1]."'>"; echo "<input type='text' name='".$pos[2]."'>"; echo "<input type='text' name='".$pos[3]."'>"; ?> <input type="submit"> </form> a její zpracování: <?php var_dump($_REQUEST['pos']); $vypis = $_REQUEST['pos']; echo "<br>dynamicky: ".$vypis[0]; ?> <? $vypis2 = $_REQUEST['posoa']; echo "<br>staticky: ".$vypis2; ?> výpis je pak ale negativní - tedy NULL |
||
Keeehi Profil |
formulář
<form action="test4.php" method="post"> <input type='text' name="pos[]"'> <input type='text' name="pos[]"'> <input type='text' name="pos[]"'> <input type="submit"> </form> zpracování <?php var_dump($_POST['pos']); for( $i=0 ; $i < 3 ; ++$i ) { echo "pos ".($i+1).": $_POST[pos][$i]<br>"; } ?> |
||
Kajman Profil |
#11 · Zasláno: 23. 1. 2015, 14:37:28
Navíc v name můžete použít jako klíč toho pole id z databáze...
<?php $opt_dni=$opt_osob=''; for ($k=0;$k<15;$k++) $opt_osob.="<option value='".$k."'>".$k."</option>"; for ($k=1;$k<15;$k++) $opt_dni.="<option value='".$k."'>".$k."</option>"; $vysledek = mysql_query("SELECT * FROM cenik_ponor WHERE cena!=0 ORDER BY poradi"); while ($zaznam = mysql_fetch_array($vysledek)) { echo "<tr><td><strong>".htmlspecialchars($zaznam['text'])." </strong></td><td class='tab_10'></td><td><strong>osob:</strong> </td><td><select name='posob[".$zaznam['id']."]'>"; echo $opt_osob; echo "</select></td><td class='tab_10'></td><td><strong> dní:</strong> </td><td><select name='dni[".$zaznam['id']."]'>"; echo $opt_dni; echo "</select></td></tr>"; } ?> <?php foreach($_POST['posob'] as $id => $pocet_osob) { if($pocet_osob>0) { echo "<br>id:$id, Osob:$pocet_osob, dní:".$_POST['dni'][$id]; } } |
||
TomasRe Profil |
#12 · Zasláno: 23. 1. 2015, 14:52:58 · Upravil/a: TomasRe
Keeehi:
Super. Funguje. Mockrát děkuju... Jsem velkým dlužníkem... Kajman: Naprosto perfektní, mockrát děkuji. Ještě jeden dotaz - u $opt_osob - je ".=" - jak to funguje? Buď neumím hledat na googlu, nebo to nikdo nepíše... |
||
Kajman Profil |
#13 · Zasláno: 23. 1. 2015, 15:15:59
|
||
TomasRe Profil |
#14 · Zasláno: 23. 1. 2015, 16:06:17
Kajman:
Moc děkuju.... |
||
Časová prodleva: 10 let
|
0