| 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: 11 let
|
|||
0
).