Autor | Zpráva | ||
---|---|---|---|
H13 Profil |
#1 · Zasláno: 26. 7. 2006, 16:54:26 · Upravil/a: H13
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 * |
#2 · Zasláno: 26. 7. 2006, 17:02:56
Rozhodně lepší je řešení s relacemi 1:N mezi tabulkou uživatelů a tabulkou fotek. Od toho relace jsou.
|
||
H13 Profil |
#3 · Zasláno: 26. 7. 2006, 17:37:35
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 * |
#4 · Zasláno: 26. 7. 2006, 18:23:51
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 * |
#5 · Zasláno: 26. 7. 2006, 18:36:02
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 |
#6 · Zasláno: 26. 7. 2006, 18:58:07
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 |
#7 · Zasláno: 26. 7. 2006, 22:25:00
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 * |
#8 · Zasláno: 26. 7. 2006, 22:34:59
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 |
#9 · Zasláno: 26. 7. 2006, 22:48:23 · Upravil/a: H13
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 * |
#10 · Zasláno: 26. 7. 2006, 22:50:43
Potom jsem to pochopil správně a řešení máš napsané výše.
|
||
H13 Profil |
#11 · Zasláno: 26. 7. 2006, 23:33:02
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 * |
#12 · Zasláno: 26. 7. 2006, 23:42:52
<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 |
#13 · Zasláno: 26. 7. 2006, 23:58:48
gaminn
to je přesně to co jsem potřeboval, díky |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0