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>&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" name=\"supadmin[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Hlavni Admin</span>&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;<input checked=\"checked\" type=\"checkbox\" name=\"supadmin[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Hlavni Admin</span>&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" name=\"supadmin[]\" value=\"" . $odpoved[jmeno] . "\" /><span style=\"font-family: Arial; font-size: 12px; color:White;\">Hlavni Admin</span>&nbsp;&nbsp;&nbsp;<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 *
oprava: vypadá to že nejde už ani jeden checkbox....
fajzen
Profil
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>&nbsp;&nbsp;&nbsp;<input type="checkbox" name="supadmin[]" value="' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Hlavni Admin</span>&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;<input checked="checked" type="checkbox" name="supadmin[]" value="' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Hlavni Admin</span>&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;<input type="checkbox" name="supadmin[]" value="' . $odpoved['jmeno'] . '" /><span style="font-family: Arial; font-size: 12px; color:White;">Hlavni Admin</span>&nbsp;&nbsp;&nbsp;<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 *
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 *
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
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>&nbsp;&nbsp;&nbsp';
            }

            echo '<br />';
         }
    ?>
    <input type="submit" value="Zmenit" />
</form>
fajzen
Profil
nemůžu napsat tolikrát AND (&&) v podmínce
v podmienke môžeš napísať AND koľkokrát len chceš
fajzen
Profil
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 *
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
a tento skript [#7] ti nevyhovuje?
Baly
Profil *
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
ten input mal byť radio, nie checkbox, sorry... potom by to už malo ísť
Baly
Profil *
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
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>&nbsp;&nbsp;&nbsp';
            }

            echo '<br />';
         }
    ?>
    <input type="submit" value="Zmenit" />
</form>
Baly
Profil *
Díky moc, problém vyřešen. To že radio funguje správně je zapříčiněno
$zmena = @$_GET['zmena'];
?
fajzen
Profil
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é

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: