Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]losowy wybór zdjęć z bazy o ile istnieją pliki
Forum PHP.pl > Forum > Przedszkole
bogdanh
Odziedziczona baza jest "zbałaganiona". W kolumnie typu "foto" jest dużo pustych pól i odnośników do plików zdjęć, które już nie istnieją na dysku.
Mam spowodować losowe wyświetlanie zdjęć dotyczących poszczególnych rekordów po za/prze/ładowaniu strony. Nie było by to trudne gdyby nie puste pola i brak plików na dysku.
Próbuję:
SELECT * FROM ogloszenia WHERE zdjecie1 !='' ORDER BY rand () LIMIT 1
Niby by działało gdyby nie brak powiązania wpisów w bazie z istnieniem plików.
Nie bardzo daję sobie radę z porównaniem wpisów w bazie ze sprawdzaniem dysku.
Próbowałem stosować file_exists() ale poległem.
Jakieś podpowiedzi?
sajegib
zrób pętle i w pętli sprawdzaj czy wylosowana fotka file_exists();, w przeciwnym razie losuj jeszcze raz
bogdanh
Cytat(sajegib @ 30.04.2013, 19:05:39 ) *
zrób pętle i w pętli sprawdzaj czy wylosowana fotka file_exists();, w przeciwnym razie losuj jeszcze raz

Próbowałem, ale martwię o ilość zapytań do bazy. Co prawda nie są to miliony, ale zdarza się kilkaset w ciągu godziny przy kilkunastu tysiącach rekordów.
Przed chwilą zresztą doszedł kolejny problem...
Muszę wyświetlić (też losowo) zdjęcia z kilku rekordów.
Generalnie ma wyglądać to tak...
Losuję np. 4 rekordy i mam wyświetlić z każdego z nich zdjęcia.
Problem zaczyna się wtedy, gdy np. w dwóch przypadkach nie ma zawartości na dysku (w bazie jest tylko ścieżka_dostępu/nazwa_pliku).
Wtedy powinno się "dolosować" kolejne 2 rekordy,czyli wykonać kolejną pętlę. Sytuacja może się powtórzyć z kolejnymi fizycznymi brakami plików.
Teraz poległem na amen.
(questionmark.gif)

Próbowałem tego co poniżej, ale z tego się "leje krew" i wyziera brak wiedzy. sad.gif

$zapyt="SELECT * FROM tabela WHERE zdjecie1 !='' ORDER BY rand () LIMIT 4";
$result = mysql_query($zapyt);
while ($lista = mysql_fetch_array($result))
{
/*
Sprawdzanie czy jest plik i wyświetlanie istniejącego
Jeżeli pliku brak to powtórka zapytania itd
*/
}


P.s.
Może ktoś znalazł jakiegoś prostego gotowca?
Szukałem p skryptach z galeriami ale nic nie wyszło.
Większość galerii potrzebuje katalogów z grupami plików, no i nie przewiduje ich braku na dysku.
Greg0
A może po prostu wyczyść bazę z rekordów z nieistniejącymi obrazkami? Listuj wszystkie pliki z folderu do tablicy i usuń rekordy, których ścieżek nie ma w tej tablicy?
sajegib
w/w rozwiazanie b. dobre, pomocna bedzie funkcja scandir

bogdanh
Cytat(sajegib @ 30.04.2013, 20:26:57 ) *
w/w rozwiazanie b. dobre, pomocna bedzie funkcja scandir

Dziękuję. smile.gif
Ułatwi to czyszczenie.
sajegib
http://forum.php.pl/index.php?act=announce&f=27&id=4

dobre zwyczaje zawsze w cenie biggrin.gif
bogdanh
Cytat(sajegib @ 30.04.2013, 21:37:13 ) *

Poprawiłem się. smile.gif

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.