Autor | Zpráva | ||
---|---|---|---|
Baly Profil * |
#1 · Zasláno: 12. 9. 2009, 13:11:34
Zdravím, přečetl jsem si 2 předešlé posty o checkboxech ale stejně jsem to nedal dohromady. Prostě mi to z nějakého důvodu nefunguje.
<form method="post" action="?zmena=ano" > <input type="submit" value="submit" /> </form> <?php $zmena = $_GET['zmena']; $ip = $_SERVER['REMOTE_ADDR']; include("dbconnect.php"); $vysledek = mysql_query ("SELECT jmeno, admin, id FROM balyphpzkousk") or die (mysql_error()); while($odpoved = mysql_fetch_array($vysledek)) { extract($odpoved); echo "$odpoved[jmeno]<input value=\"1\" type=\"checkbox\" name=\"".$odpoved[jmeno]."\" />"; } if ($zmena == "ano") { foreach($_POST["$odpoved"] as $polozka => $id){ echo "".$polozka.""; } } Při odeslání to na mě vypálí error: Warning: Invalid argument supplied for foreach() in /home/free/wu.cz/b/balyphpzkouska/root/www/prava.php on line 20 Prosím pomožte mi. |
||
Baly Profil * |
#2 · Zasláno: 12. 9. 2009, 13:12:22
Budu to používat na změnu práv pro lidi, proto mám v SELECTU ještě admin a id
|
||
HajekJirka Profil |
#3 · Zasláno: 12. 9. 2009, 14:11:29 · Upravil/a: HajekJirka
Edit: Napsal jsem blbost. Omlouvám se...
|
||
Baly Profil * |
#4 · Zasláno: 12. 9. 2009, 14:45:14
Tak vyzkoumal jsem že v foreach musí být array... jenomže jakmile dostanu data z $_POST[$odpoved], do toho array dá mi to všechno najednou v kupě. Potřeboval bych aby se tam dávalo array (jméno1,jméno2,jméno3) a ne array (jmeno1jmeno2jmeno3).
|
||
fajzen Profil |
#5 · Zasláno: 12. 9. 2009, 15:02:44 · Upravil/a: fajzen
„foreach($_POST["$odpoved"] as $polozka => $id){ “
$odpoved je pole, preto nemôžeš napísať $_POST["$odpoved"] používaš tam funkciu extract, ale nevyužívaš premenné, ktoré vytvorí, je tam teda úplne zbytočná celý ten prístup k vytvoreniu tých checkboxov je nejaký divný... takto bude mať každý iné name a všetky rovnakú hodnotu 1... a to nehovorím o tom, že sa vôbec neodošlú, pretože sú mimo <form></form>.... neviem presne odhadnúť, čo presne by mal tento skript po odoslaní formulára robiť, ale ak je jeho úlohou vypísať označené mená, navrhujem niečo takéto: <form method="post" action="?zmena=ano"> <?php require_once("dbconnect.php"); $vysledek = mysql_query ("SELECT jmeno, admin, id FROM balyphpzkousk") or die (mysql_error()); // admin a id sa v tvojom skripte vôbec nepoužíva, takže neviem, či je naozaj potrebné vyberať ich z databázy... while($odpoved = mysql_fetch_assoc($vysledek)) { // používame iba asociatívne pole, takže takto to bude lepšie echo $odpoved['jmeno'] . ' <input type="checkbox" name="jmena[]" value="' . $odpoved['jmeno'] . '" />'; } ?> <input type="submit" value="submit" /> </form> <?php $zmena = $_GET['zmena']; $ip = $_SERVER['REMOTE_ADDR']; if ($zmena == "ano" && !empty($_POST['jmena'])) { // EDIT: ochrana proti chybe ktora by sa zobrazovala, keby nebol označený žiadni checkbox foreach($_POST["jmena"] as $jmeno) { echo $jmeno; } } ?> |
||
HajekJirka Profil |
#6 · Zasláno: 12. 9. 2009, 15:03:42
Baly
Napiš prosím tě ještě jednou přesně co by to mělo dělat? Chápu to tak, že by to mělo vypsat data z DB do formuláře a ty určíš (zaškrtneš) zda li je to admin nebo není? |
||
Baly Profil * |
#7 · Zasláno: 12. 9. 2009, 15:20:04
Ahá, vidím že jsem to fakt měl mimo form... no ty ten extract jsem jen zkoušel, zapomněl vymazat. s Admin jsem potom chtěl pracovat, první jsem zkoušel jestli mi to vůbec něco vypisuje. Podle id jsem zkoušel rozpoznávat jednotlivé checkboxy, nevedlo se. value 1 jsem měl protože jsem chtěl na databízi do pole Admin vložit číslo 1 aby se poznalo jestli je to admin.
Tvoje verze vypadá že bude fungovat, akorát moc nechápu ten assoc, asi protože jsem ho ještě nepoužíval :o) Musím si o tom něco přečíst. Díky moc |
||
Časová prodleva: 15 let
|
0