Black Friday Black Friday
Black Friday výprodej! Až 80 % extra bodů zdarma! Více informací zde

Diskuze: vybírání na základě uživatele

PHP PHP vybírání na základě uživatele American English version English version

Aktivity (1)
Avatar
Jakub Štolbaa:26. května 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
'.
'<input type="checkbox" name="checkbox­var[]" value="plugin­cleaner">plugin­cleaner
'.
'<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. května 19:02
Avatar
Andy Scheuchzer:26. května 19:17

Znáš tohle tlačítko?

Nahoru Odpovědět  +2 26. května 19:17
Za správnost neručím.
Avatar
Odpovídá na Andy Scheuchzer
Jakub Štolbaa:26. května 19:59

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

 
Nahoru Odpovědět 26. května 19:59
Avatar
Jakub Štolbaa:26. května 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. května 20:00
Avatar
nekukej
Člen
Avatar
Odpovídá na Jakub Štolbaa
nekukej:26. května 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. května 20:50
Avatar
Odpovídá na nekukej
Jakub Štolbaa:26. května 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. května 21:05
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:28. května 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. května 16:02
Avatar
Odpovídá na Peter Mlich
Jakub Štolbaa:28. května 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. května 18:20
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29. května 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. května 7:54
 
Nahoru Odpovědět  +1 29. května 7:53
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29. května 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. května 7:59
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29. května 13:58

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

 
Nahoru Odpovědět 29. května 13:58
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29. května 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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět 29. května 14:15
Avatar
Odpovídá na Peter Mlich
Jakub Štolbaa:30. května 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. května 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.