Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: checkbox a foreach

Aktivity
Avatar
Pavel Soukup
Člen
Avatar
Pavel Soukup:26.5.2018 15:51

Ahoj, chci se na vás obrátit s pomocí ohledně checkboxu a foreache.

Chci udělat plugin, ve kterém si budou moci uživatelé vybrat pluginy do tří kategorií. Důležité, méně důležité a nedůležité, které se budou později zapínat podle toho, jak si uživatel zvolí tento výběr. Moje otázka tedy zní, jak bych mohl udělat pro uživatele vybírací zónu, ve které by viděl všechny své pluginy a sám si je roztřídil do těchto 3 kategorií?

Já jsem si zatím udělal toto:

echo '<form action="" method="POST">';
                        foreach ($rozdeleni as $value) {
                                echo $value.'<input type="checkbox" name="rozdeleni" value=""><br>';
                         }
                                echo '<input type="submit" name="send" value="submit">'.
        '</form>';

                                if (!empty($_POST["send"])) {
                                        echo $_POST["rozdeleni"]";
                                }

Tím si vytvořím výpis všech pluginů a checkboxu vedle každého jednotlivého pluginu. Moje otázka ale zní, jak dostat označené pluginy do $_POST abych s nimi mohl dále pracovat?

Pokud bude někdo ochoten mi pomoct, tak budu velice vděčný :)

Děkuju
Jakub Štolba

Editováno 26.5.2018 18:11
 
Odpovědět
26.5.2018 15:51
Avatar
Odpovídá na Pavel Soukup
Martin Konečný (pavelco1998):26.5.2018 16:22

Ahoj, formulář ti odesílá data v atributech "value". U toho checkboxu máš value prázdný, takže ti formulář odešle prázdné hodnoty. Když tam hodíš tu proměnnou, vrátí ti to to, co chceš (patrně) :D

Nahoru Odpovědět
26.5.2018 16:22
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Pavel Soukup
Člen
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Pavel Soukup:26.5.2018 16:36

takže tedy, kdybych dal za value proměnnou ve kterých mám všechny pluginy, pak jsem si vybral ty pluginy co chci poslat a v podmínce si je vyvolal tak to takto půjde?

 
Nahoru Odpovědět
26.5.2018 16:36
Avatar
Pavel Soukup
Člen
Avatar
Pavel Soukup:26.5.2018 17:43

ještě bych tedy chtěl upřesnit, že mi nejspíš nefunguje jedna záležitost.

Mám udělaný form, kterým rozhoduji, jestli chci poslat ty pluginy do důležitých méně důležitých nebo nedůležitých bloků,

<form action="" method="POST">
        '<select id="pole" name="rozdeleni" class="select-field">'.
                        '<option value="">select allocation</option>'.
                        '<option value="1">important</option>'.
                        '<option value="2">less important</option>'.
                        '<option value="3">unimportant</option>'.
        '</select>'.
</form>

potom se hodím do switche, který rozpozná kam chci přidat ty pluginy, jestli do těch důležitých, méně důležitých nebo nedůležitých.


if (!empty($_POST["rozdeleni"])) {

                        switch ($_POST["rozdeleni"]) {
                                case '1':
                                $rozdeleni = unserialize($plugin);

                                echo '<form action="" method="POST">'.
                                        '<input type="checkbox" name="checkboxvar[]" value="akismet">akismet<br>'.
                                        '<input type="checkbox" name="checkboxvar[]" value="plugincleaner">plugincleaner<br>'.
                                        '<input type="submit" value="Submit" name="submit">'.
                                        '</form>';

                                        if (isset($_POST["submit"])) {
                                                if (!empty($_POST["checkboxvar"])) {
                                                        foreach ($_POST["lang"] as $value) {
                                                                echo $value;
                                                        }
                                                }
                                        }

                                        break;

                                                        case '2':
                                                                break;
                                                        case '3':
                                                                break;

                                                        default:
                                                                echo "nebyl poslán požadavek";
                                                }

když dám important, tak mě to hodí do case 1 a tam dále pokračuji, tady jsem si ještě předtím udělal lehčí výběr hodnot a jejich vypsání, jestli to vůbec bude tím checkboxem fungovat.

Takže abych to zjednodušil.

Když kliknu v prvním formu, že chci otevřít important, tak mě to hodí do case 1 ve switchi, kde se mi na stránce objeví dvě hodnoty a to akismet a plugincleaner, které mají vedle sebe checkboxy. Po zaškrtnutí některých z nich tento form odešlu a čekám, že se mi ve podmínce objeví vyechovaná hodnota daného zaškrtnutého políčka, ale nikoliv.

Myslím, že je potíž v tom, že když odešlu form ve switchi, že nezůstane v té case 1 a tím pádem nemůže najít podmínku, jestli submit existuje. To je moje teorie.

Pokud by mi někdo pomohl byl bych rád. Děkuji

Editováno 26.5.2018 18:11
 
Nahoru Odpovědět
26.5.2018 17:43
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.5.2018 15:46
  • Pokud mas seznam pluginu v databazi, tak do value davej vzdy id z databaze. Kdyz pracuje druha osoba a pod rukama ti smaze zaznam, tak cislo id zustanou zachovane. Kdyby jsi to v db nemel, a generoval id nejak php ckem a nepohlidal si to, tak ti ten druhy clovek precisluje id a smazes nebo zmenis uplne neco jineho :)
  • Prosim, nepouzivej echo, pokud nemas vygenerovany cely vystup. Default byva server nastaveny tak, ze pri kazdem echo odesila uzivateli kousicek stranky. Mezitim cely program stoji. Lze php nastavit i jinak nebo pouzit ob_start.

Ten php kod nevim. Tam mi neco unika. Asi neni kompletni.

case 1:
var_dump($plugin);
$rozdeleni = unserialize($plugin); // co je v $plugin?

Pockej. Tobe to teda funguje tak, ze mas stranka1.php. Ze selectu vyberes napr 'plugin 23'. Kliknes odeslat. Pak se objevi jiny form, stranka2.php. Tam zvolis ze selectu priorita=nejvetsi. Kliknes odeslat? Ok, ale v tom druhem formu nemas nikde input type=hidden, kde mas id pluginu.
Chapej, nova stranka, $_POST je prazdne. Musis tam do toho formu dat aspon input type=hidden, jinak se ten udaj ztrati. Nebo ten udaj ulozit do $_SESSION.

Proc to neudelas jako jeden formular, tabulku?

foreach ($plugin = mysql_fetch(...))
{
$radek = $plugin['id'] .'|'. $plugin['name'] .'|'. '<select name="plugin_priority['.$plugin['id'].']"><tve optiony ...></select>';
}
var_dump($_POST['plugin_priority']); // by pak melo vypsat id pluginu + value optionu
 
Nahoru Odpovědět
28.5.2018 15:46
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.