Autor | Zpráva | ||
---|---|---|---|
PHPlama Profil * |
Zdravím :-)
Vytvářím aplikaci pro odesílání interních správ mezi uživateli. Ve formuláři se každému uživateli vytvoří vlastní checkbox a dotyčný zaškrtne, kterým uživatelům má zprávu poslat. Nyní ale nastal problém, jak takový formulář zpracovat přes PHP, když je počet checkboxů pokaždé jiný. $i="0"; $komu=MySQL_Query("SELECT * FROM friend WHERE kdoid ='$userid' AND typ='1'"); while ($prijemce = MySQL_Fetch_Array($komu)) { $kohoid=$prijemce['kohoid']; ?><br><input type="checkbox" name="<?echo $i++;?>" value="<?echo $kohoid ?>"><?}?> existuje prosím, nějaké řešení? Děkuji :-) Moderátor Majkl578: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
pcmanik Profil |
#2 · Zasláno: 10. 8. 2011, 20:18:01
PHPlama:
Vytvoris si pole, to prejdes a ziskas hodnoty, kam to mas poslat. |
||
PHPlama Profil * |
#3 · Zasláno: 10. 8. 2011, 20:41:08
pcmanik:
„Vytvoris si pole, to prejdes a ziskas hodnoty, kam to mas poslat.“ Prosím, mohl bys mi napsat nějaký příklad, jak na to? :-) |
||
Ofi Profil |
#4 · Zasláno: 10. 8. 2011, 21:47:23
stejně jako ho vytváříš:
$i=1; while(isset($_POST[$i])) { $ID = $_POST[$i]; // následuje zpracování ID .. $i++; } ještě bych doporučil používat prefix pro názvy checkboxů: name="<?php echo "kohoid_".$i++;?>" a pak by se to četlo stejně: while(isset($_POST["kohoid_".$i])) {... pro přehlednost bych také doporučoval inkrementovat proměnnou mimo použití (viz. první ukázka) |
||
php Profil * |
#5 · Zasláno: 10. 8. 2011, 21:55:13
nebo by to šlo třeba taky takhle:
//místo $_GET můžeš mít $_POST záleží jakou metodou odesíláš formulář foreach( $_GET as $key => $get ){ echo $key . " = " . $_GET[$key] . "<br/>"; //nějakej kód co chceš dělat s proměnou get } //URL = http://localhost/index.php?get=neco&get2=neco2 output: get = neco get2 = neco2 |
||
php Profil |
#6 · Zasláno: 10. 8. 2011, 22:32:44
Ještě doplním, že ten samý výstup bude, když použiju na řádku 3 místo $_GET[$key] rovnou $get a malý uporoznění, takhel se postupně proleze celý pole
$_GET nebo $_POST |
||
joe Profil |
#7 · Zasláno: 10. 8. 2011, 22:49:06 · Upravil/a: joe
Raději bych se nezdržoval u žádných zdejších rad a udělal to správně a lépe:
<input type="checkbox" name="prijemce[<?php echo $kohoid; ?>]"> Po odeslání formuláře zpracuješ pole prijemce v postu: var_dump($_POST['prijemce']); |
||
PHPlama Profil * |
#8 · Zasláno: 11. 8. 2011, 00:02:36
Ofi:
Tvoje možost mi vždy zpracuje jen některé možnosti, ne všechny záleží na kombinaci :-) joe: Nevím, jak mám dál pole zpracovat pokud ho chci např. získané údaje zapsat do databáze? Zatím, díky :-) |
||
joe Profil |
#9 · Zasláno: 11. 8. 2011, 01:59:25 · Upravil/a: joe
To co je napsáno tady [#4] Ofi je úplný nesmysl, nepoužívej to. Skončí to hned, jak
- id nepůjdou po sobě (5,1,2,6) - některé id nebude existovat (1,3,4,..) PHPlama: „Nevím, jak mám dál pole zpracovat pokud ho chci např. získané údaje zapsat do databáze?“ Pokud chceš něco udělat v PHP, měl bys umět alespoň základ - mezi to určitě bude patřit práce s polem. Pro ukázku, nějak takhle (to je celý PHP soubor, můžeš si to zkusit na localhostu, když si to uložíš) <form method="post" action=""> <input type="checkbox" name="prijemce[5]"> <input type="checkbox" name="prijemce[3]"> <input type="checkbox" name="prijemce[1]"> <input type="submit" name="send"> </form> <?php if(isset($_POST['send'])) { // form byl odeslan $prijemci = array(); if(isset($_POST['prijemce'])) { // jsou data pro 'prijemce' v postu $prijemci = array_keys($_POST['prijemce']); // do pole $prijemci uloz id prijemcu, kterym chces odeslat zpravu } if(!empty($prijemci)) { foreach($prijemci as $prijemceId) { echo 'tady posli zpravu pro prijemce ID : ' . $prijemceId . '<br>'; } } else { echo 'zpravu neni komu odeslat'; } } ?> |
||
Ofi Profil |
#10 · Zasláno: 11. 8. 2011, 07:25:13 · Upravil/a: Ofi
joe:
> je úplný nesmysl, nepoužívej to. Skončí to hned, jak > > - id nepůjdou po sobě (5,1,2,6) > - některé id nebude existovat (1,3,4,..) Máš pravdu, úplně jsem zapomněl, že pokud se chb nezaškrtne že se vůbec neodešle a řada se přeruší. Tohle by tedy šlo na dynamický počet inputů-textů např., nikoliv checkboxů. |
||
php Profil |
#11 · Zasláno: 11. 8. 2011, 07:45:56 · Upravil/a: php
joe:
> To co je napsáno tady [#4] Ofi je úplný nesmysl, nepoužívej to. Skončí to hned, jak > > - id nepůjdou po sobě (5,1,2,6) nevím jak možnosti (1,2 - nezkoumal sem jí), ale možnost (5) a k ní dodatek (6), nezkoumá, jak dou id po sobě a je jí to úplně jedno, prostě proleze všechny odeslaný data. |
||
PHPlama Profil * |
#12 · Zasláno: 11. 8. 2011, 09:35:02
Díky moc, mě spíš zajímalo, jak se chová funkce var_dump. Podrobný popis v češtině jsem nenašel :-)
Jinak děkuji :D |
||
joe Profil |
#13 · Zasláno: 11. 8. 2011, 14:36:38
php:
A proč bys měl procházet celé $_GET / $_POST, když znáš konkrétní jméno a pak vynechávat ty, které nechceš? PHPlama: var_dump je vypsání proměnné. |
||
php Profil |
#14 · Zasláno: 11. 8. 2011, 17:29:32
Já tady nikoho nenutím, aby procházel celý $_GET / $_POST, jen jsem ukázal jednu z možností, jak by to taky šlo a vypsal sem k tomu i ten nedostatek, že se pak musí ošetřit, aby se do toho nemíchaly i ty ostatní proměnné, nebo je rovnou můžu taky zpracovat už v tom cyklu.
|
||
Časová prodleva: 13 let
|
0