Autor Zpráva
Michales
Profil
Ahoj.

Potřeboval bych pomoc či radu jak udělat následující.

Na ftp do složky images ukládám fotky interpretů.
Ukládám je pod číslem, pod kterým jsou uloženy v databázi.
Čili pod id interpreta.

Uploadovací formulář mám takto:
<form action="" enctype="multipart/form-data" method="post">
<select style="width: 180px;" name="name">  
          <option selected='selected'>---Vyber interpreta---
          </option> 
<?php   
$query = "SELECT id, name FROM `interprets` ORDER BY name ASC";
$result = mysql_query($query) or die(Mysql_error());
While($results=MySQL_Fetch_Assoc($result))
          {    ?>
          <option value="<?php print $results['id'] ?>">
          <?php print $results['name'] ?>
          </option>  

<?php } ?> </select> 
<br>
<input id="file" name="file" type="file" /> <br />
<input id="Submit" name="submit" type="submit" value="Submit" />

</form>

Takto mi to vypisuje všechny interprety z databáze a při výběru interpreta mohu odeslat obrázek a ten se při následném uploadu uloží pod jeho ID pod kterým je uložen v db.
Nyní k tomu co bych chtěl udělat.
Chtěl bych aby mi to zobrazilo jen interprety, kteří zatím fotku nemají.
To by znamenalo podívat se do db na ID a následně porovnat se složkou na ftp a vypsat ty které tam nejsou.
Lze to takto a jak?

Druhá možnost co mě napadla je přidat do db sloupec např. img kde by se při uploadu zapsala 1 což by znamenalo že fotka interpreta už existuje.
Tím pádem bych si mohl pak už jen zobrazovat interprety s nulou.

Co by bylo podle Vás lepší?
Díky za odpověď.
Tomáš123
Profil
Michales:
Možno by bolo lepšie vvtvoriť ďalšiu tabuľku, ktorá sa bude týkať fotiek? Takto to máš príliš na kope.
Michales
Profil
Tomáš123:
Takže se přikláníš k té druhé možnosti?
Mě se líbí také více, protože není tak pracná :-)
V tabulce interprets mám jen 3 sloupce, takže by celkem nevadilo tam mít další sloupce, ovšem nebráním se vytvoření další tabulky.
lionel messi
Profil
Michales:
To by znamenalo podívat se do db na ID a následně porovnat se složkou na ftp a vypsat ty které tam nejsou.
Neefektívne riešenie, ktoré veľmi nemá cenu rozvádzať.

Druhá možnost co mě napadla je přidat do db sloupec např. img kde by se při uploadu zapsala 1 což by znamenalo že fotka interpreta už existuje.
Tím pádem bych si mohl pak už jen zobrazovat interprety s nulou.
Podstatne lepšie ako prvá možnosť, ale prikláňam sa k Tomášovi123. Budeš mať tabuľku interprets (id, name) a photos (id_interpret, id_photo, name, path) (je lepšie mať v db namiesto obrázku iba cestu k nemu, v oboch tabuľkách môžeš mať aj ďalšie stĺpce) a dáta k obrázkom si hravo vytiahneš JOINom:

SELECT i.id, i.name, p.name, p.path
FROM interprets i
JOIN photos p
ON i.id = p.id_interpret

Prečo je lepšie mať dve tabuľky než jednu? Napríklad veľmi jednoducho zistíš počet fotiek, ktoré patria jednému interpretovi a tak ďalej. Možnosť so správnym vytvorením druhej tabuľky je najmenej prácna na tvorbu dotazov (keď napríklad opäť budeš chcieť niečo doprogramovať).
mimochodec
Profil
Michales:
Jestli máš jistotu, že z nějakých principielních důvodů nikdy nebudeš chtít k jednomu interpretovi nahrávat víc než jednu fotku, udělej si tam ten sloupec "img", jak píšeš (integer, 1). Jestli tu jistotu nemáš, udělej pro fotky druhou tabulku, jak píše tudlecten lionel messi, který trapně zneužívá toho, že jsem obědval. (úsměvník)
Michales
Profil
lionel messi:

Děkuji za radu.

Co se týče cesty, tak tu nepotřebuji.
U každého interpreta bude jen jedna fotka.
Potřebuji jen zjistit jestli už fotku má nebo nikoliv.
Takže teď mám dilema, udělat další tabulku či nikoliv.
Tuším že na rychlosti to znát nebude.

mimochodec:
Ano nikdy nebude více fotek než jedna. Takže stačí když přidám sloupec.


Vím že jsou to triviální otázky ale radši se zeptám než se do něčeho pustím :-)
Keeehi
Profil
Michales:
Ano nikdy nebude více fotek než jedna. Takže stačí když přidám sloupec.
Ano.

Osobně bych přidal sloupec se jménem filename v kterém by mohl být řetězec nebo null. Když je null, interpret nemá fotku, když tam něco je, je to jméno souboru s fotkou. Tak totiž zajistím, že fotka není vázaná na ID interpreta a kdyby se náhodou změnilo, tak tu fotku nemusím přejmenovávat.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: