Autor | Zpráva | ||
---|---|---|---|
Baly Profil * |
Zdravím, mám tu jeden script:
<form method="post" action="?zmena=ano" > <? $zmena = $_GET['zmena']; if ($zmena == "ano" && !empty($_POST['normadmin']) && empty($_POST['member']) && empty($_POST['supadmin'])) { foreach($_POST["normadmin"] as $jmeno) { $$id = $jmeno; mysql_query ("UPDATE balyphpzkousk SET admin = '1' where jmeno = '${$id}'") or die (mysql_error()); } } if ($zmena == "ano" && !empty($_POST['supadmin']) && empty($_POST['normadmin']) && empty($_POST['member'])) { foreach($_POST["supadmin"] as $jmeno) { $$id = $jmeno; mysql_query ("UPDATE balyphpzkousk SET admin = '2' where jmeno = '${$id}'") or die (mysql_error()); } } if ($zmena == "ano" && !empty($_POST['member']) && empty($_POST['normadmin']) && empty($_POST['supadmin'])) { foreach($_POST["member"] as $jmeno) { $$id = $jmeno; mysql_query ("UPDATE balyphpzkousk SET admin = '0' where jmeno = '${$id}'") or die (mysql_error()); } } ?> <?php $vysledek = mysql_query ("SELECT jmeno, admin FROM balyphpzkousk") or die (mysql_error()); while($odpoved = mysql_fetch_assoc($vysledek)) { if ($odpoved[admin] == "1") { echo "<span style=\"font-family: Arial; font-size: 14px; color:#ff8000;\">$odpoved[jmeno]</span> . <input checked=\"checked\" type=\"checkbox\" name=\"normadmin[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Admin</span> <input type=\"checkbox\" name=\"supadmin[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Hlavni Admin</span> <input type=\"checkbox\" name=\"member[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Clen</span><br />"; } if ($odpoved[admin] == "2") { echo "<span style=\"font-family: Arial; font-size: 14px; color:#ff8000;\">$odpoved[jmeno]</span> . <input type=\"checkbox\" name=\"normadmin[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Admin</span> <input checked=\"checked\" type=\"checkbox\" name=\"supadmin[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Hlavni Admin</span> <input type=\"checkbox\" name=\"member[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Clen</span><br />"; } if ($odpoved[admin] == "0") { echo "<span style=\"font-family: Arial; font-size: 14px; color:#ff8000;\">$odpoved[jmeno]</span> . <input type=\"checkbox\" name=\"normadmin[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Admin</span> <input type=\"checkbox\" name=\"supadmin[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Hlavni Admin</span> <input type=\"checkbox\" name=\"member[]\" value=\"" . $odpoved[jmeno] . "\" checked=\"checked\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Clen</span><br />"; } } ?> <input type="submit" value="Zmenit" /> </form> Vidíte tam někdo chybu? Vše jede výborně, je to systém na přidělování práv, ale checkbox který určuje kdo je člen nic neodesílá jako jedinný.... |
||
Baly Profil * |
#2 · Zasláno: 12. 9. 2009, 20:46:43
oprava: vypadá to že nejde už ani jeden checkbox....
|
||
fajzen Profil |
#3 · Zasláno: 12. 9. 2009, 22:20:38
nevypisuje to žiadne warnningy?
pravdepodobne je navine toto: $$id = $jmeno; ${$id} to si zase niečo skúšal? :) je to tam absolútne zbytočné pri prístupe k hodnotám asociovaného poľa sa kľuč vkladá do úvodzoviek: nesprávne: $odpoved[admin] správne: $odpoved['admin'] síce to nie je chyba, ale keď máš niekoľko možností a môžeš vybrať len jednu, je lepšie a jednoduchšie použiť radio namiesto checkboxu... |
||
Baly Profil * |
Po úpravě:
$zmena = $_GET['zmena']; if ($zmena == "ano" && !empty($_POST['normadmin']) AND empty($_POST['member']) AND empty($_POST['supadmin'])) { foreach($_POST["normadmin"] as $jmeno) { mysql_query ("UPDATE balyphpzkousk SET admin = '1' WHERE jmeno = '$jmeno'") or die (mysql_error()); } } if ($zmena == "ano" && !empty($_POST['supadmin']) AND empty($_POST['normadmin']) AND empty($_POST['member'])) { foreach($_POST["supadmin"] as $jmeno) { mysql_query ("UPDATE balyphpzkousk SET admin = '2' WHERE jmeno = '$jmeno'") or die (mysql_error()); } } if ($zmena == "ano" && !empty($_POST['member']) AND empty($_POST['normadmin']) AND empty($_POST['supadmin'])) { foreach($_POST["member"] as $jmeno) { mysql_query ("UPDATE balyphpzkousk SET admin = '0' WHERE jmeno = '$jmeno'") or die (mysql_error()); } } ?> <form method="post" action="?zmena=ano" > <? $vysledek = mysql_query ("SELECT jmeno, admin FROM balyphpzkousk") or die (mysql_error()); while($odpoved = mysql_fetch_assoc($vysledek)) { $id = ($id)+1; if ($odpoved[admin] == "1") { echo '<span style="font-family: Arial; font-size: 14px; color:#ff8000;">' . $odpoved[jmeno] . '</span><input checked="checked" type="checkbox" name="normadmin[]" value=\"' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Admin</span> <input type="checkbox" name="supadmin[]" value="' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Hlavni Admin</span> <input type="checkbox" name="member[]" value="' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Clen</span><br />'; } if ($odpoved[admin] == "2") { echo '<span style="font-family: Arial; font-size: 14px; color:#ff8000;">' . $odpoved[jmeno] . '</span><input type="checkbox" name="normadmin[]" value="' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Admin</span> <input checked="checked" type="checkbox" name="supadmin[]" value="' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Hlavni Admin</span> <input type="checkbox" name="member[]" value="' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Clen</span><br />'; } if ($odpoved[admin] == "0") { echo '<span style="font-family: Arial; font-size: 14px; color:#ff8000;">' . $odpoved[jmeno] . '</span><input type="checkbox" name="normadmin[]" value="' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Admin</span> <input type="checkbox" name="supadmin[]" value="' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Hlavni Admin</span> <input type="checkbox" name="member[]" value="' . $odpoved['jmeno'] . '" checked="checked" /><span style="font-family: Arial; font-size: 12px; color:White;">Clen</span><br />'; } } Nefunguje... zkousil jsem snad všechny možnosti X_X Když jsem prvně zkusil tvou variantu co jsi mi dříve poradil a upravil si ji, šlapalo mi to v pohodě. Tedka když jsem přidal hodnotu člena, nějak se tomu začalo přestávat chtít. Dokonce i když jsem toho člena vymazal a dal to do (asi) původního stavu, nešlo to. Začínám si myslet že je to na mě naštvané. |
||
Baly Profil * |
#5 · Zasláno: 12. 9. 2009, 22:44:45
Varniny to nevypisuje, prostě to jen nic neodešle a chechbox se vrátí do původního stavu (To je asi protože to na začátku zjištuje jaký to je admin a podle toho zaškrtne). Radio jsem zkoušel, blbnulo mi to tak že mi ta kulička mohla přeskakovat dokonce i o člověka nahoru místo jen do stran mezi normálním a hlavním adminem.
|
||
Baly Profil * |
#6 · Zasláno: 12. 9. 2009, 23:36:04
našel jsem problém, nemůžu napsat tolikrát AND (&&) v podmínce... to je ale špatné, protože takhle se umožní zadávat několik pravomocí najednou (sice se pošle jen jedna, ale bude v tom zmatek). Nemá někdo nějaké řešení?
|
||
fajzen Profil |
#7 · Zasláno: 12. 9. 2009, 23:55:04 · Upravil/a: fajzen
skús to takto:
<?php $zmena = $_GET['zmena']; if ($zmena == "ano" && !empty($_POST['role'])) { foreach($_POST["role"] as $id => $role) { mysql_query("UPDATE balyphpzkousk SET admin = '$role' WHERE id = '$id'") or die (mysql_error()); } } ?> <form method="post" action="?zmena=ano"> <?php $role_list = array( '1' => 'Admin', '2' => 'Hlavní Admin', '0' => 'Člen' ); $vysledek = mysql_query ("SELECT id, jmeno, admin FROM balyphpzkousk") or die (mysql_error()); while($odpoved = mysql_fetch_assoc($vysledek)) { echo '<span style="font-family: Arial; font-size: 14px; color:#ff8000;">' . $odpoved['jmeno'] . '</span>'; foreach($role_list as $num => $txt) { echo '<input type="checkbox" name="role[' . $num . '][]" value="' . $odpoved['id'] . '" ' . ($num == $odpoved['admin'] ? 'checked="checked"' : '') . '/>' . '<span style="font-family: Arial; font-size: 12px; color:White;">' . $txt . '</span>  '; } echo '<br />'; } ?> <input type="submit" value="Zmenit" /> </form> |
||
fajzen Profil |
#8 · Zasláno: 12. 9. 2009, 23:57:22
„nemůžu napsat tolikrát AND (&&) v podmínce“
v podmienke môžeš napísať AND koľkokrát len chceš |
||
fajzen Profil |
#9 · Zasláno: 13. 9. 2009, 00:00:55
aha, už viem, v čom bol problém...
podmienky neboli splnené, ak si označil dve rôzne úlohy a je jedno, že to bolo pri iných menách, všetky mená totiž zdieľajú tie isté polia $_POST['normadmin'], $_POST['member'] a $_POST['supadmin'] |
||
Baly Profil * |
#10 · Zasláno: 13. 9. 2009, 13:43:41
ahá, takže to asi nevyřeším.... já potřebuju dát aby se to vstahovalo pouze na jeden řádek. To asi budu muset udělat u každého svojí vlastní <from>, že?
|
||
fajzen Profil |
#11 · Zasláno: 13. 9. 2009, 13:45:59
a tento skript [#7] ti nevyhovuje?
|
||
Baly Profil * |
#12 · Zasláno: 13. 9. 2009, 14:58:04
Máš tam chybu. Nefunguje to protože : if ($zmena == "ano" && !empty($_POST['role']))
znamená že to platí pouze když není ani jednen checkbox pro jméno prázdný (protože všechny se jmenují role). Takže to nejde. |
||
fajzen Profil |
#13 · Zasláno: 13. 9. 2009, 17:03:21
ten input mal byť radio, nie checkbox, sorry... potom by to už malo ísť
|
||
Baly Profil * |
#14 · Zasláno: 13. 9. 2009, 17:35:11
nejde, je v tom ještě větší zmatek protože: utvoří se ti kuličky (to co je v těch radio buttonech) a ty kuličky můžou ale přeskakovat i o člena dolů místo do stran... navíc výsledek je stejný jako u checkboxů, nejde to. Což je logické protože ta podmínka to vylučuje tak či tak. Tam je problém s tou podmínkou, v podstatě jsi udělal to samé co já předtím, ale opačně. Místo toho aby měly checkboxy jiné názvy ale stejné číslo jsi je dal aby měly stejné názvy ale jiné číslo :o) stejné v bledě modrém.
|
||
fajzen Profil |
#15 · Zasláno: 13. 9. 2009, 17:58:40 · Upravil/a: fajzen
máš pravdu, bola tam chyba, ale teraz je to už na 99% správne :)
inak, tá podmienka je v poriadku, $_POST['role'] nesmie byť prázdne, inak povedané, aspoň jeden radio musí byť zaškrtnutý (zo všetkých) <?php $zmena = @$_GET['zmena']; if ($zmena == "ano" && !empty($_POST['role'])) { foreach($_POST['role'] as $id => $role) { mysql_query("UPDATE balyphpzkousk SET admin = '" . $role[0] . "' WHERE id = '" . $id. "'") or die (mysql_error()); } } ?> <form method="post" action="?zmena=ano"> <?php $role_list = array( '1' => 'Admin', '2' => 'Hlavní Admin', '0' => 'Člen' ); $vysledek = mysql_query ("SELECT id, jmeno, admin FROM balyphpzkousk") or die (mysql_error()); while($odpoved = mysql_fetch_assoc($vysledek)) { echo '<span style="font-family: Arial; font-size: 14px; color:#ff8000;">' . $odpoved['jmeno'] . '</span>'; foreach($role_list as $num => $txt) { echo '<input type="radio" name="role[' . $odpoved['id'] . '][]" value="' . $num . '" ' . ($num == $odpoved['admin'] ? 'checked="checked"' : '') . '/>' . '<span style="font-family: Arial; font-size: 12px; color:White;">' . $txt . '</span>  '; } echo '<br />'; } ?> <input type="submit" value="Zmenit" /> </form> |
||
Baly Profil * |
#16 · Zasláno: 13. 9. 2009, 22:00:39
Díky moc, problém vyřešen. To že radio funguje správně je zapříčiněno
$zmena = @$_GET['zmena']; |
||
fajzen Profil |
#17 · Zasláno: 14. 9. 2009, 09:52:52
nie, predtým som sa pomýlil a vymenil som v tom inpute v name $odpoved['id'] s $num vo value...
$zmena = @$_GET['zmena']; - toto len potlačí vypísanie upozornenia (Notice), pri prvom načítaní formulára (keď nebude $_GET['zmena'] zadané |
||
Časová prodleva: 15 let
|
0