Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
Avatar
František Pastorek:24.2.2015 18:05

Neviem presne svoj problém nazvať tak ho skúsim popísať.

Mam kontainter s checkboxmi kde si používateľ zakliká, ktoré stĺpce z databáze si chce vypísať. Teda jednotlivé checkboxi predstavuju jednotlivé stĺpce. Ale, ak používateľ si vykliká nejaké stĺpce a stlačí tlačidlo zobraziť, tak sa mu zobrazia iba dané stĺpce, ALE ak napriklad zabudol na nejaký stĺpec tak musí zasa vsetky tie čo chce vyklikať. To znamená, že ak vykliká ktoré potrebuje a potom stlačí tlačidlo tak vyklikané checkboxi sa znovu odkliknu => znovu sa načíta HTML časť.

 
Odpovědět 24.2.2015 18:05
Avatar
Fredep
Redaktor
Avatar
Odpovídá na František Pastorek
Fredep:24.2.2015 18:13

Pokud se ti to zobrazí na té samé stránce, kde máš ten seznam, můžeš do každého <input type="checkbox"> vložit ještě atribut checked, podle toho, zda byla ona hodnota odeslána. Níže je příklad.

<input type="checkbox" name="sloupec_dva" <?php if (isset($_POST["sloupec_dva"])) echo "checked"; ?> >

Ověří se, zda byl zakliknut a když ano, tak mu nastaví atribut checked.

Editováno 24.2.2015 18:14
Nahoru Odpovědět  +1 24.2.2015 18:13
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
František Pastorek:24.2.2015 18:16

Presne niečo také potrebujem. Ďakujem.
A je lepšie takéto veci robiť pomocou POST alebo GET?

Editováno 24.2.2015 18:16
 
Nahoru Odpovědět 24.2.2015 18:16
Avatar
Tomáš123
Člen
Avatar
Odpovídá na František Pastorek
Tomáš123:24.2.2015 18:17

Teda vždy sa zobrazí obsah tých stĺpcov, ktoré užívateľ vykliká, ale ak na niečo zabudne, tak musí všetko vyklikať znovu, však. Nepochopil som časť "znovu sa načíta HTML časť".

V každom prípade, ak chceš zamedziť strate údajov, zobraz užívateľovi vyklikané polia aj na vygenerovanej stránke. Údaje o tom, ktoré polia vyklikal získaš tým, že odošle formulár.

Do atribútu action vygenerovaného formulára napíšeš mriežku a celé spracovanie obalíš podmienkou, ktorá zistí, či bol formulár odoslaný:
HTML:

<form action="#" method="POST">
<checkboxy>
.
.
.
<input type="submit" name="submited" value"Zobraziť">

Spracúvavajúci skript:

if(!empty($_POST['submited'] {
//zvysok skriptu
}

Atribútom name bude potrebné vybaviť aj prvý formulár, aby prešiel podmienkou.

Čo sa týka metódy, záleží od toho, aké údaje sú v databáze. Ak nevadí, že pri kopírovaní adresy si môže iný uživateľ zobraziť údaje niekoho iného (ak to nie je zabezpečené), tak môžeš pokojne použiť metódu GET.

Editováno 24.2.2015 18:19
Nahoru Odpovědět 24.2.2015 18:17
Keby nebolo Internetu Exploreru, nebolo by dnešného internetu.
Avatar
Fredep
Redaktor
Avatar
Odpovídá na František Pastorek
Fredep:24.2.2015 18:24

Záleží na tom, co posíláš. Pokud těch sloupců je mnoho, tak použij POST, pokud máš pár sloupců a chceš, aby to bylo vidět v URL použij GET. Já bych ale asi použil POST :)

Editováno 24.2.2015 18:25
Nahoru Odpovědět 24.2.2015 18:24
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
František Pastorek:24.2.2015 18:28

Ešte mám jeden problém. Ak si pouzívatel vybere stĺpce, ktoré chce zobraziť a potvrdí svoj výber a následne si klikne podla ktorého stĺpca chce tabulku zoradit tak sa spätné nastavenie zruší.

Inak povedané, zvolí si z 10 stĺpcov 2. Vyobrazia sa mu a následne si zvolí že chce zoradiť tabulku podla prvého stĺpca a potvrdí. Po potvrdení sa opäť zobrazia všetky stĺpce a tabulka sa zoradi podla výberu.

 
Nahoru Odpovědět 24.2.2015 18:28
Avatar
František Pastorek:24.2.2015 18:33

Ouuu no jasne, podla vaších rád už tomu rozumiem, skúsim a dám vedieť, ďakujem.
Došlo mi to až teraz, ospravedlnujem sa.

Editováno 24.2.2015 18:33
 
Nahoru Odpovědět 24.2.2015 18:33
Avatar
Fredep
Redaktor
Avatar
Odpovídá na František Pastorek
Fredep:24.2.2015 18:35

Jedná se totiž o dva různé formuláře <form> (zřejmě). Pokud potvrdíš ten druhý, tak se první smaže. Můžeš z nich udělat jeden, s jedním potvrzovacím tlačítkem. Poté tomu tvému selectu nastavíš to samé, jako těm checkboxům.

<select name="order">
  <option value="volvo" <?php if (isset($_POST["order"]) AND $_POST["order"]=="volvo") echo "selected" ?> >Volvo</option>
  <option value="saab" <?php ... ?>>Saab</option>
  <option value="opel" <?php ... ?>>Opel</option>
  <option value="audi" <?php ... ?>>Audi</option>
</select>
Editováno 24.2.2015 18:35
Nahoru Odpovědět 24.2.2015 18:35
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
František Pastorek:24.2.2015 21:13

Akurát neviem ako ošetrím to, keď si používateľ nezvolí žiadny stĺpec, najradšej by som keby sa hned na začiatku zobrazili checkboxi zaškrtnuté a potom si povyškrtával čo nechce.

 
Nahoru Odpovědět 24.2.2015 21:13
Avatar
Fredep
Redaktor
Avatar
Odpovídá na František Pastorek
Fredep:25.2.2015 6:26

V tom případě bys mohl upravit ten krátký PHP kód nahoře tak, aby reagoval na to, zda se vůbec nějaké POST odeslalo...

<?php if (isset($_POST["sloupec_dva"]) OR !isset($_POST)) echo "checked"; ?>

Pokud bude POST prázdné (nic se neodeslalo), zaškrtnou se všechny políčka, jinak to funguje stejně jako předtím :)

Nahoru Odpovědět 25.2.2015 6:26
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:25.2.2015 9:50

Toto by se dalo vyřešit i třeba takto:

<?php
    function SetCheck($namePost){
      if(isset($_POST[$namePost]) OR !$_POST){
          echo 'checked';
      }
    }

A výpis checkboxů by mohl vypadat nějak takto:

<input type="checkbox" name="sloupec_1" <?php SetCheck('sloupec_1'); ?>>
<input type="checkbox" name="sloupec_2" <?php SetCheck('sloupec_2'); ?>>
<input type="checkbox" name="sloupec_3" <?php SetCheck('sloupec_3'); ?>>
<input type="checkbox" name="sloupec_4" <?php SetCheck('sloupec_4'); ?>>
<input type="checkbox" name="sloupec_5" <?php SetCheck('sloupec_5'); ?>>
Nahoru Odpovědět 25.2.2015 9:50
Chybami se člověk učí, běžte se učit jinam!
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 11 zpráv z 11.