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

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
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.
Presne niečo také potrebujem. Ďakujem.
A je lepšie takéto veci robiť pomocou POST alebo GET?
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.
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
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.
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.
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>
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.
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
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'); ?>>
Zobrazeno 11 zpráv z 11.