Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]losowy wybór zdjęć z bazy o ile istnieją pliki
bogdanh
post 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?
Go to the top of the page
+Quote Post
sajegib
post 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
Go to the top of the page
+Quote Post
bogdanh
post 30.04.2013, 19:14:29
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


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.

Ten post edytował bogdanh 30.04.2013, 19:17:14
Go to the top of the page
+Quote Post
Greg0
post 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?
Go to the top of the page
+Quote Post
sajegib
post 30.04.2013, 19:26:57
Post #5





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

Ostrzeżenie: (0%)
-----


w/w rozwiazanie b. dobre, pomocna bedzie funkcja scandir

Go to the top of the page
+Quote Post
bogdanh
post 30.04.2013, 20:26:19
Post #6





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
sajegib
post 30.04.2013, 20:37:13
Post #7





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

Ostrzeżenie: (0%)
-----


http://forum.php.pl/index.php?act=announce&f=27&id=4

dobre zwyczaje zawsze w cenie biggrin.gif
Go to the top of the page
+Quote Post
bogdanh
post 30.04.2013, 20:50:13
Post #8





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


Cytat(sajegib @ 30.04.2013, 21:37:13 ) *

Poprawiłem się. smile.gif

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 06:55