[MySQL][PHP]losowy wybór zdjęć z bazy o ile istnieją pliki |
[MySQL][PHP]losowy wybór zdjęć z bazy o ile istnieją pliki |
30.04.2013, 17:56:48
Post
#1
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 22.04.2012 Ostrzeżenie: (0%) |
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? |
|
|
30.04.2013, 18:05:39
Post
#2
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 59 Dołączył: 16.01.2013 Ostrzeżenie: (0%) |
zrób pętle i w pętli sprawdzaj czy wylosowana fotka file_exists();, w przeciwnym razie losuj jeszcze raz
|
|
|
30.04.2013, 19:14:29
Post
#3
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 22.04.2012 Ostrzeżenie: (0%) |
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. () Próbowałem tego co poniżej, ale z tego się "leje krew" i wyziera brak wiedzy. $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. Ten post edytował bogdanh 30.04.2013, 19:17:14 |
|
|
30.04.2013, 19:22:48
Post
#4
|
|
Grupa: Zarejestrowani Postów: 264 Pomógł: 54 Dołączył: 31.08.2007 Skąd: Tychy Ostrzeżenie: (0%) |
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?
|
|
|
30.04.2013, 19:26:57
Post
#5
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 59 Dołączył: 16.01.2013 Ostrzeżenie: (0%) |
|
|
|
30.04.2013, 20:26:19
Post
#6
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 22.04.2012 Ostrzeżenie: (0%) |
|
|
|
30.04.2013, 20:37:13
Post
#7
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 59 Dołączył: 16.01.2013 Ostrzeżenie: (0%) |
|
|
|
30.04.2013, 20:50:13
Post
#8
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 22.04.2012 Ostrzeżenie: (0%) |
Poprawiłem się. |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 06:55 |