Autor Zpráva
Baly
Profil *
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 *
Budu to používat na změnu práv pro lidi, proto mám v SELECTU ještě admin a id
HajekJirka
Profil
Edit: Napsal jsem blbost. Omlouvám se...
Baly
Profil *
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
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
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 *
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

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:

0