Autor Zpráva
H13
Profil
Ahoj, potřeboval bych vědět, zda má mé řešení nějaké nevýhody:

Příklad: mám databázi uživatelů - tabulka uzivatele obsahuje sloupce: id, jmeno, ..., fotky.
Každý uživatel si může nahrát více fotek. Moje řešení spočívá v tom, že do databáze - do sloupce fotky - ukládám řetězec fotek tak, abych nemusel u každého uživatele vytvářet další tabulku...

Př. uživatel označí 3 fotky a do řetězce (následně do tabulky v databázi) se uloží: prvni.jpg:druha.jpg:treti.jpg ...Při zobrazení beru z databáze řetězec, který rozdělím pomoci php a zobrazím

Dělám to proto, že při výběru fotek ve formulářovém poli se mi pomocí JavaScript lépe manipuluje s řetězcem, kdy uživatel si může libovolně přidávat, smazávat jednotlivé fotky, atd...
gaminn
Profil *
Rozhodně lepší je řešení s relacemi 1:N mezi tabulkou uživatelů a tabulkou fotek. Od toho relace jsou.
H13
Profil
Rozhodně lepší je řešení s relacemi 1:N mezi tabulkou uživatelů a tabulkou fotek. Od toho relace jsou.

Jaký nejlepší způsob mám pak volit pro uložení jednotlivých položek (fotek) z formuláře do databáze.

Mám název jednotlivých fotek ukládat do samotných polí ve formuláři, př.
<input type="hidden" (prvni.jpg)>
<input type="hidden" (druha.jpg)> atd. ???
Anonymní
Profil *
Jaký nejlepší způsob mám pak volit pro uložení jednotlivých položek (fotek) z formuláře do databáze.

.. ja to delal pres pole <input type="file" name="soubor[]" />
Anonymní
Profil *
Jaký nejlepší způsob mám pak volit pro uložení jednotlivých položek (fotek) z formuláře do databáze.

.. ja to delal pres pole <input type="file" name="soubor[]" />


Soubory už mám načtený na serveru (jinej formulář), v tomto formuláři se zobrazí všechny fotky a uživatel kliká na jednotlivý fotky), ale princip bude asi stejnej...
Meldo
Profil
H13
Moje řešení spočívá v tom, že do databáze - do sloupce fotky - ukládám řetězec fotek tak, abych nemusel u každého uživatele vytvářet další tabulku...

Takto som to raz robil aj ja a mozem povedat, ze je to asi najvacsia blbost. Fakt sa to neoplati robit. Pouzi relace ako radi gaminn.
H13
Profil
Je potom tedy možný přenášet hodnoty pomocí POST ve formě pole, např.

<input type="hidden" name="fotky[0]" value="prvni.jpg">
<input type="hidden" name="fotky[1]" value="druha.jpg">
<input type="hidden" name="fotky[2]" value="treti.jpg">

a ve skriptu, který zpracovává data, prostě projet pole fotky a uložit jednotlivé hodnoty do databáze

Nebo se to dělá prostě jinak, třeba:

<input type="hidden" name="fotky01" value="prvni.jpg">
<input type="hidden" name="fotky02" value="druha.jpg">
<input type="hidden" name="fotky03" value="treti.jpg">

a pak se jednotlivý položky nějak vloží do databáze ????
gaminn
Profil *
Nevím, co přesně skript vykonává, ale zjistit, zda uživatel vybral nějaký obrázek můžeš následovně:

<input type="hidden" id="fotky_id" name="fotky[id]" value=""> (přičemž po výběru fotky nějakým javascriptem nastavíš objektu fotky_id jedničku nebo jakoukoliv jinou hodnotu, takže potom poznáš, že fotka byla označena)

Pokud máš na stránkách třeba checkbox, kterým se jednotlivé fotky vybírají, tak samozřejmě můžeš použít:

<input type="checkbox" name="fotky[id]" value="1">
H13
Profil
Nevím, co přesně skript vykonává, ale zjistit, zda uživatel vybral nějaký obrázek můžeš následovně:

Uživatelovi vyjedou zmenšeniny nahraných fotek na serveru a pomocí kliknutí na jednotlivou fotku tuto fotku vybere. Javascript poté dodělá html kód. Dejme tomu, že uživatel klikne na tři fotky a JS vytvoří:

<input type="hidden" name="fotky01" value="prvni.jpg">
<input type="hidden" name="fotky02" value="druha.jpg">
<input type="hidden" name="fotky03" value="treti.jpg">

a poté klikne na uložit (submit) a provede se odeslání formuláře. A teď mi jde o zpracování formuláře, když nevím jaký bude počet inputů...
gaminn
Profil *
Potom jsem to pochopil správně a řešení máš napsané výše.
H13
Profil
Potom jsem to pochopil správně a řešení máš napsané výše.

No já to bohužel nechápu, potřebuji poradit se php skriptem, který data zpracuje

On dostane 3 inputy s názvy, které vloží do databáze... Jenže já nevím, kolik uživatel vybere fotek, může si jich nahrát na server třeba 15 a vybere si z nich třeba 10 a já potřebuju php kód, který dostane data z formuláře a uloží je do databáze...

problém 1: Při zpracování formuláře se vždy ptám, jestli existuje post-hodnota

if (isset ($_POST[fotky01])) pak ji ulož (jenže předem nevím kolik post-hodnot bude (fotky01, fotky02, ...)

problém2: Dostanu třeba těch zmiňovaných 10 inputů, jak je pomocí smyčky uložím do databáze - to bych věděl, ale nevím jak je dostat do té smyčky (např. vložit těch 10 inputů do pole a pak to pole projet smyčkou... ale jak je vložit do toho pole)
gaminn
Profil *
<input type="hidden" id="fotky_id" name="fotky[id]" value=""> - uvažuji toto řešení (dyk se něčím při výběru této fotky přidělí třeba hodnota 1 do value)

potom na stránce, která formulář zpracuje, jednoduše provedeš toto:

if(is_array($_POST['fotky'])) { // pokud by nebylo $_POST['fotky'] pole, vyskočil by notice
foreach($_POST['fotky'] as $id => $value) { // projedeme celé pole fotek
if(!empty($value)) { // test, zda byla fotka vybrána
// cokoliv chceš s vybranou fotkou udělat
}
}
}
H13
Profil
gaminn
to je přesně to co jsem potřeboval, díky
Toto téma je uzamčeno. Odpověď nelze zaslat.

0