Chci geek triko! Chci geek triko!
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"
Avatar
Jan Václavík:15. března 23:01

Ahoj,
pracuji na seznamu produktů. Momentálně jsem ve fázi kdy řeším velikosti různého oblečení. Mám vytvořené 2x DB(produkty, velikosti) které jsou propojené kíčem. Příklad:

<form>
        <input type="text" name="nazev">
        <input type="file" name="obrazek" value="obrazek">
        <input type="text" name="cena">
        <input type="text" name="velikost">
        <input type="submit" name="odeslat">
</form>

Nějaký produkt bude mít více velikostí a já bych potřeboval najít nějaký elegantní způsob jak vyřešit zápis více velikostí do 1 formuláře.

Napadlo mě:

<form>
        <input type="text" name="nazev">
        <input type="file" name="obrazek" value="obrazek">
        <input type="text" name="cena">
        <input type="text" name="velikost1">
        <input type="text" name="velikost2">
        <input type="text" name="velikost3">
        ....
        <input type="submit" name="odeslat">
</form>

což mi přijde jako velice slabé řešení.

Pak mě ještě napadlo přes JS,PHP udělat tlačítko které by přidalo další pole. Rád bych našel ale nějaký lepší způsob.
Děkuji.

 
Odpovědět 15. března 23:01
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Jan Václavík
Petr Čech:15. března 23:04

Strukturované hodnoty v databázi jsou cesta do pekla. Myslím, že jediný správný způsob je mít možnost si dynamicky přidávat další políčka a na datové vrstvě to mít řešeno tak, že budeš mít nějakou entitu produkt a další entity velikost, které budou svázány vztahem 1:N

Nahoru Odpovědět  +2 15. března 23:04
the cake is a lie
Avatar
Jan Václavík:15. března 23:16

1:N mám ty dvě databáze produkty(id,id_ve­likosti,...), velikosti(id,id_pro­duktu,...). Takže asi jedině přidávat inputy pomocí JS.

 
Nahoru Odpovědět  +1 15. března 23:16
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20. dubna 15:09

Ten popis je takovy mene srozumitelny. Ale po tretim precteni asi vim, co myslis.
Mas 3 tabulky: produkt (id, nazev), vlastnosti (id, nazev), produkt_vlastnosti (id, id).
A ty bys ted potreboval zobrazit produkty (z kategorie obleceni) 'kosile', 'tricka'. A kazdy ten produkt muze mit ruzne velikosti. Cili, 2 propojene selecty, aby se ten druhy menil podle prvniho.

No, tak to je problem. Mozna to umi nejak resit elegantne html5. Ale v html4 se to resilo javascriptem, ktery generoval oba selecty ze strukturovaneho pole. Ono tech zpusobu je vic. Pokud chces fakt super jednoduche reseni, tak by to vypadalo nejak takto:

<select name=obleceni onchange="zmen(this);"> ... </select>
<select id="x0">...</select>
<select id="x1">...</select>
function $(id) {return document.getElementById(id);}
function zmen(el)
{
id = el.selectedIndex;
count = el.getElementsByTagName('OPTION').length;
for (i=0;i<count;i++)
  {
  $('x'+i).style.display = 'none';
  $('x'+i).name = '';
  }
$('x'+id).style.display = '';
$('x'+id).name = 'velikost';
}

Funkce bude skryvat, odkryvat jednotlive selecty (vsechny schova, jeden odkryje). Pripadne jim prida / smaze name, kvuli formulari.

Editováno 20. dubna 15:10
 
Nahoru Odpovědět 20. dubna 15:09
Avatar
petr.jouza
Člen
Avatar
Odpovídá na Jan Václavík
petr.jouza:3. května 16:24

Také moc nechápu čeho chceš docílit. Jestli jen výběru velikosti (vždy jen jeden kus) nebo nabídku velikostí a uživatel si napíše nějaký počet kusů.

Já osobně bych to asi řešil tak, že bych udělal uživateli výběr jako v E-shopu... zobrazím produkt s rozbalovací nabídkou velikostí a inputem pro číslo pro počet (jestli je to tvé řešení) a samozřejmě by mohl zobrazit ten samý produkt znovu, zvolit jinou velikost a opět si říct kolik kusů.
Nebo mu samozřejmě načíst všechny možné velikosti s inputy pro počet kusů a on si zadá kolik čeho chce a při ukldání se budu zabývat pouze těmi, které jsou vyplněné.

Pokud ale chceš nějaký multiple výběr, tak bych asi využil něco podobného jako v jquery https://jqueryui.com/autocomplete/#…
stačí si s tím pohrát a možná dostaneš řešení, ketré potřebuješ.

 
Nahoru Odpovědět 3. května 16:24
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 5 zpráv z 5.