Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Upload zdjęć i ich galeria
Forum PHP.pl > Forum > Przedszkole
XP'ek
Witam,

według was jak najlepiej rozwiązać opcję dodawania zdjęć. Chodzi dokładnie o to ponieważ chce zrobić skrypt cms z galerią i zastanawiam się nad dodatkowymi artykułami i chce zrobić około 4 fotek by można było upladowac do niego i teraz jak lepiej z tym zrobić do każdego zdjęcia osobne pole czy może rozwiązać to coś na przykładnie allegro tylko jak to drugie zrobić ? Bo końcowy efekt ma być podobny do galerii z allegro lub otomoto. Jak radzicie ?

znalazłem coś takiego tylko jak teraz to przetrzymywać w bazie ?
Kod
http://valums.com/ajax-upload/



na myśl przychodzi mi nowa tabela w bazie o nazwie np. foto i tak posiada ona pola id, nazwa, id_artic

Jak sądzicie będzie to dobre ?
everth
Nie do końca rozumiem o co ci chodzi. Możesz zrobić tak:
  • tabela Photo - pola: photo_id(nasz klucz),path,checksum(np.suma md5).
  • Dodatkowo tabela np. Product_photo - user_id, product_id, photo_id, description.

Później zwykłe złączenie w zapytaniu.

Jak user uploaduje fotę to liczysz jej sumę i sprawdzasz czy już takiej nie masz w bazie, jak masz to po prostu linkujesz do wpisu w tabeli Photo, w przeciwnym wypadku tworzysz nowy rekord w tabeli Photo i linukujesz to do tabeli Product_photo. Chcesz wszystkie foty usera? Filtrujesz po user_id.
XP'ek
user jest jeden bo to admin będzie robić główny tylko przy dodawaniu newsa chce zrobić dodawani więcej zdjęć niż 2 tak do 4 może 6 i tak jak muwisz baze o nazwie photo i w niej id fotografii (klucz głowny bazy), nazwa zdjęcia, id_newsa tylko teraz kwestia jak to prechwycić z ajaxa ? nie bawiłem się tym jeszcze a chce by to ładnie wyglądało smile.gif
everth
Jeśli o mnie chodzi to przy ładowaniu jakichkolwiek plików nie używam Ajaxa, lepiej wysłać pliki normalnie i za pomocą header() w PHP zrobić przekierowanie na interesującą nas stronę (np. z podglądem zdjęć). Mniej kodu, mniej bugów. Jeśli chodzi chodzi o przesyłanie kilku(nastu) plików to normalne przeglądarki (FF, Chrome, Opera) akceptują atrybut 'multiple' przy <input type='file' /> (czasem w połączeniu z atrybutami 'min' i 'max'). W IE musisz kombinować.
XP'ek
sorki ale nie kapuje dokładnie co masz na myśli możesz więcej powiedzieć ?
everth
  1. <form action='upload.php' enctype="multipart/form-data" method='post'>
  2. <input type='file' name='photos' multiple='multiple' max='6' accept="image/jpeg" />
  3. </form>

Niestety nie zauważyłem żeby przeglądarki respektowały atrybut accept i pozwalały zaznaczać pliki *.jpg. Może kiedyś się to zmieni.
A w PHP
  1. $photos = $_FILES['photos'];
  2. foreach($photos as $photo) {
  3. if ($photo['type']=='image/jpeg') {
  4. if(!existsInDb($photo)) {
  5. if (move_uploaded_file($photo['tmp_name'],$nasza_sciezka)) addToDb($photo); //jeśli prawidłowo skopiowany to dodajemy do bazy
  6. } else {
  7. // (...) jakiś kod który wykonamy gdy okaże się że takie samo zdjęcie zostało już wgrane, np. pobranie jego id i przypisanie do Tabeli Product_ID
  8. }
  9. }
  10. }
  11. header("Location: ".$_SERVER['HTTP_REFERER']);

Wykonuje operacje na uploadowanych plikach i pod koniec przekierowuje z powrotem na stronę z której wyszło zapytanie (niebezpieczne, lepiej wpisać tam jakiś stały URL).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.