Od 15. do 21.4. slevy 20 až 80% v sekci C/C++. Když ne teď, tak kdy?
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde

Diskuze: Přidání více řádků do jedné tabulky nejednou

Aktivity (2)
Avatar
Jan Václavík:15.3.2018 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.3.2018 23:01
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Jan Václavík
Petr Čech:15.3.2018 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.3.2018 23:04
the cake is a lie
Avatar
Jan Václavík:15.3.2018 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.3.2018 23:16
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20.4.2018 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.4.2018 15:10
 
Nahoru Odpovědět 20.4.2018 15:09
Avatar
petr.jouza
Člen
Avatar
Odpovídá na Jan Václavík
petr.jouza:3.5.2018 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.5.2018 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.