NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Michal Kuba
Tvůrce
Avatar
Michal Kuba:14.5.2017 23:17

Ahoj.
V administraci vypisuji PHP cyklem seznam článků do tabulky a zároveň s tím i příslušná modal okna, která jsou však skrytá a po kliknutí na nějaký článek v tabulce se otevře příslušné modal okno. Zavádím nově subkategorie již vytvořeným kategoriím.

Představa je taková: ať už edituji nebo vytvářím článek, vybírám si jako jedno z polí kategorii (<select>). Pro kategorii 1 a 8 mám vytvořené a napojené subkategorie (každá je jako <input checkbox>). Jsem ale trochu v nesnázích. Takto vypadá kus formuláře pro editaci již hotového článku:

<div class="form-group">
                <label class="control-label col-sm-2" for="typ">Typ článku:</label>
                <div class="col-sm-10">
                    <select class="form-control" name="typ" value="<?= $clanek['typ'] ?>" id="subkatSelect">
                        <?php foreach($kategorie as $kat): ?>
                        <option value="<?= $kat['ID_kategorie'] ?>" <?php if($clanek['typ']==$kat['ID_kategorie']) echo 'selected'; ?>><?= $kat['ID_kategorie'] ?> - <?= $kat['nazev'] ?></option>
                        <?php endforeach; ?>
                    </select>
                </div>
               </div>
               <div class="form-group" style="display:none" id="subkatHry">
                <label class="control-label col-sm-2" for="subkat">Subkategorie hry:</label>
                <div class="col-sm-10">

                        <?php foreach($subkatHry as $kat): ?>
                    <input type="checkbox" value="<?= $kat['ID_subkat'] ?>" <?php $subkat=  explode(" ", $clanek['subkat']);foreach($subkat as $sub): if($sub==$kat['ID_subkat']) echo 'checked';endforeach; ?>><?= $kat['ID_subkat'] ?> - <?= $kat['nazev'] ?></option>
                        <?php endforeach; ?>

                </div>
               </div>
               <div class="form-group" style="display:none" id="subkatPohadky">
                <label class="control-label col-sm-2" for="subkat">Subkategorie pohádky:</label>
                <div class="col-sm-10">
                    <?php foreach($subkatPohadky as $kat): ?>
                    <input type="checkbox" value="<?= $kat['ID_subkat'] ?>" <?php $subkat=  explode(" ", $clanek['subkat']);foreach($subkat as $sub): if($sub==$kat['ID_subkat']) echo 'checked';endforeach; ?>><?= $kat['ID_subkat'] ?> - <?= $kat['nazev'] ?></option>
                        <?php endforeach; ?>
                </div>
               </div>

Při vytváření nového jen chybí část porovnávání zda některá subkategorie existuje u článku a její případné označení jako "checked".

Na konci mám tento kus skriptu:

$('#subkatSelect').on('change',function(){
    var selection = $(this).val();
    switch(selection){
    case "1":
    $("#subkatHry").show()
    case "8":
    $("#subkatPohadky").show()
   break;
    default:
    $("#subkatHry").hide()
    $("#subkatPohadky").hide()
    }
});

Problémů je víc:

  • Když začnu editovat například článek v kategorii 1 (hry): nezobrazí se subkategorie, to až po překliknutí na jiný select a vrácení se na kategorii 1
  • U nových článků se subkategorie nezobrazují vůbec
  • Když se zvolí u kategorie 1 (hry) zobrazí se ale i subkategorie Pohádek (kategorie 8)

Napadá mě, že je problém v tom, že danému id přísluší v jeden moment třeba 50 formulářů v modal oknech, tudíž to špatně reaguje? Jak jsem psal, na stránce mám dejme tomu 30 výpisů v tabulce a každý má svůj skrytý modal okno s formem, který se objeví po kliknutí na článek.

Díky za rady! :)

 
Odpovědět
14.5.2017 23:17
Avatar
Honza Bittner
Tvůrce
Avatar
Odpovídá na Michal Kuba
Honza Bittner:15.5.2017 12:38
case "1":
   $("#subkatHry").show()
   case "8":
   $("#subkatPohadky").show()

např. tady nemáš break, tj. se ti při "1" zobrazí Hry a pak i Pohadky.

Nahoru Odpovědět
15.5.2017 12:38
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Honza Bittner
Michal Kuba:15.5.2017 13:03

Jj, breaky už jsem přidělal a taky jsem dycky do každé case dal aby se u dané subkat nastavilo show() a u té druhé hide(), tedy jsem si pojistil, že se neobjeví dvě subkat pro jednu kategorii.

Teď mi ale nefunguje ještě to, abych při prvním otevření už s uloženým výběrem Hry (1) měl hned pod tím zobrazené subkategorie. To musím nejprve zvolit na jinou kategorii a pak zpět Hry a až tehdy se subkat objeví.

 
Nahoru Odpovědět
15.5.2017 13:03
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 3 zpráv z 3.