IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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: vybírání na základě uživatele

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Pavel Soukup
Člen
Avatar
Pavel Soukup:26.5.2018 19:02

Ahoj, potřeboval bych pomoci ohledně vybírání dat, podle uživatele.

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

<form action="" method="POST">
'<select id="pole" name="rozdeleni" class="select-field">'.
'<option value="">select allocation</op­tion>'.
'<option value="1">impor­tant</option>'.
'<option value="2">less important</op­tion>'.
'<option value="3">unim­portant</opti­on>'.
'</select>'.
</form>

toto mě hodí 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($_POS­T["rozdeleni"])) {

switch ($_POST["rozde­leni"]) {
case '1':
$rozdeleni = unserialize($plu­gin);

echo '<form action="" method="POST">'.
'<input type="checkbox" name="checkbox­var[]" value="akismet">a­kismet<br>'.
'<input type="checkbox" name="checkbox­var[]" value="plugin­cleaner">plugin­cleaner<br>'.
'<input type="submit" value="Submit" name="submit">'.
'</form>';

if (isset($_POST["sub­mit"])) {
if (!empty($_POS­T["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

 
Odpovědět
26.5.2018 19:02
Avatar
Neaktivní uživatel:26.5.2018 19:17

Znáš tohle tlačítko?

Nahoru Odpovědět
26.5.2018 19:17
Neaktivní uživatelský účet
Avatar
Pavel Soukup
Člen
Avatar
Odpovídá na Neaktivní uživatel
Pavel Soukup:26.5.2018 19:59

omlouvám se, děkuji za upozornění

 
Nahoru Odpovědět
26.5.2018 19:59
Avatar
Pavel Soukup
Člen
Avatar
Pavel Soukup:26.5.2018 20:00

Ahoj, potřeboval bych pomoci ohledně vybírání dat, podle uživatele.

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

<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>

toto mě hodí 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
'.
'<input type="checkbox" name="checkboxvar[]" value="plugincleaner">plugincleaner
'.
'<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

 
Nahoru Odpovědět
26.5.2018 20:00
Avatar
nekukej
Člen
Avatar
Odpovídá na Pavel Soukup
nekukej:26.5.2018 20:50

Nejsem si jist zda-li chápu tvůj problém. Každopádně není chyba v názvu klíče?

...
if (isset($_POST["submit"])) {
if (!empty($_POST["checkboxvar"])) {
foreach ($_POST["lang"] as $value) { // $_POST["lang"] != $_POST["checkboxvar"]
echo $value;
}
}
}
...
 
Nahoru Odpovědět
26.5.2018 20:50
Avatar
Pavel Soukup
Člen
Avatar
Odpovídá na nekukej
Pavel Soukup:26.5.2018 21:05

nespíš zde chyba byla též, ale ještě mám chybu nejspíš někde jinde, tady bude těžké něco popsat, pokud bychom se mohli spojit i jinak, byl bych rád, např. po fb, skype nebo cokoliv jiného.

 
Nahoru Odpovědět
26.5.2018 21:05
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28.5.2018 16:02

nemuzes udelat jednoduchou php stranku, ktera by fungovala, kdyz udelame copy paste a spustime?
Pak bys mohl pripsat jen navod. 1. vyplnim, to to, prepnu ten a ten select, kliknu odeslat. Stane se to a to. Melo se stat to a to. Pokud tam mas 2 faze, tak to php musi mit kod pro obe faze nejak propojene. Nebo k tomu pripis aspon odeslani na jiny php soubor. Soubor1.php + kod, soubor2.php + kod, ve formu pak action=soubor2.php, napr. Takhle se mozna to, co chces, hrozne tezko popisuje. Nehlede na to, ze mas zalozene uz treti vlakno :)

 
Nahoru Odpovědět
28.5.2018 16:02
Avatar
Pavel Soukup
Člen
Avatar
Odpovídá na Peter Mlich
Pavel Soukup:28.5.2018 18:20

děkuju za nápady, ale nejsem tak pokročilý v programování, takže je to pro mě složitější teď.
Co se týká posílání formulaře, tak to posílám na tu jednu a samou stránku, nepoužívám action, což mi přijde ještě divnější, že php není schopný najít data poslané ve stejném souboru

 
Nahoru Odpovědět
28.5.2018 18:20
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29.5.2018 7:53

Nechapes princip :)

  • www prohlizec ma html stranku, formular, pc uzivatele.
  • Uzivatel vyplni, odesle, server prijme. $_POST, $_GET, $_REQUEST ma data z formulare.

Ve tvem pripade je to jen REQUEST a POST. (form action="" method="POST").

  • server data zpracuje, odesle uzivateli html a vse zahodi po ukonceni php programu. Presne to ocekavas, kdyz vykrizkujes okno treba s wordem, ne? Aby ti uvolnil pamet.

Pokud chces data udrzet, uloz je do souboru, databaze, session, cookies, do formulare. Nekam, co je propojene jen s tim jednim uzivatelem. Soubor tezko propojis s uzivatelem, pokud k tomu nepridas pomocny program. Db totez. Session je k tomu delana. Cookies take. A pak je tu moznost odesilat to z formularem. Ta se pouziva pro specialni pripady, cili asi 70%. 60% session v kombinaci s db. Vzdy zalezi na tom, jak s tim udajem dal pracujes.

Tohle by mohlo fungovat, uchovat si udaj. Netestovano.

var_dump('$_POST',$_POST);
$aaa = isset($_POST['aaa']) ? $_POST['aaa'] : '';
if ($aaa!='') {$page =  '
<form action="" method="POST" name="form1">
  <select id="pole" name="AAA" 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>
';} else {$page = '
<form action="" method="POST" name="form1">
  <input type=hidden name="AAA" value="'.htmlspecialchars($aaa).'">
  <select id="pole" name="BBB" 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>
';
echo $page;
Editováno 29.5.2018 7:54
 
Nahoru Odpovědět
29.5.2018 7:53
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29.5.2018 7:59

Jo, tam melo byt samozrejme velke AAA, misto $_POST['aaa'] -> $_POST['AAA']. Chtel jsem to nejak zvyraznit, tak jsem dal velka pismena pro name toho selectu.

 
Nahoru Odpovědět
29.5.2018 7:59
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29.5.2018 13:58

Jo, jeste melo byt kazde jine, name=form1 a name=form2.

 
Nahoru Odpovědět
29.5.2018 13:58
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29.5.2018 14:15

A ta podminka je opacne $aaa == ''. Prvni chci, aby se zobrazil ten prvni form a to nastava jen, kdyz je aaa prazdne :)
Ty jo, v 7 jeste asi spim :)

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
29.5.2018 14:15
Avatar
Pavel Soukup
Člen
Avatar
Odpovídá na Peter Mlich
Pavel Soukup:30.5.2018 20:42

Tohle už bylo pro moje chápání lepší :D děkuju moc, dost mi to pomohlo, takže velmi děkuji :)

 
Nahoru Odpovědět
30.5.2018 20:42
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 13 zpráv z 13.