Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][CSS]Wyświetlanie wyników
Forum PHP.pl > Forum > Przedszkole
DerekDX
Witam,
mam pytanie:
Posiadam bazę danych gdzie zawarte są linki do zdjęć i nazwy, czy chcąc wyświetlić te zdjęcia a pod nimi nazwy po kilka sztuk w rzędzie muszę kombinować coś w PHP czy sam CSS da sobie z tym rade?
Ujmując to prościej: czy można za pomocą CSS wyświetlić np 4 obrazki w rzędzie a potem aby same się przełamały do następnego wiersza?
Ghost_78
jedyne co mi przychodzi do glowy to wsadzenie tych zdjec do kontenera i ustawienie mu konkretnego wymiaru.
problem tylko taki ze bedziesz musial miec wszystkie zdjecia jednakowej szerokosci np:
  1. <div style="width: 440px;">
  2. <img src="" style="width: 100px;">
  3. <img src="" style="width: 100px;">
  4. <img src="" style="width: 100px;">
  5. <img src="" style="width: 100px;">
  6. <? //.... tu powinno sie przelamac .... ?>
  7. <img src="" style="width: 100px;">
  8. <img src="" style="width: 100px;">
  9. <img src="" style="width: 100px;">
  10. </div>
Age1869
Jak CSS ma Ci niby wyświetlić zdjęcia, które jak mniemam masz w bazie MySQL (tzn linki do nich)... CSS to jedynie arkusze stylów... Możesz nimi nadać właściwości poszczególnym elementom. Natomiast musisz również napisać odpowiednie zapytanie do bazy np:

  1. $zapytanko = mysql_query("SELECT * FROM graficzki", $connect);
  2. echo '<div id="costam">';
  3. while ($zap = mysql_fetch_array($zapytanko)) {
  4. echo '<div id="costam2"><img src="sciezka/' . $zap['adres'] . '"><br /><b>' . $zap['nazwa'] . '</b>';
  5. }


Reszta to kwestia dopasowania danych i napisania odpowiednich styli.

EDIT: klamra umknęła :-P
wdev
Najlepiej skorzystaj z pętli for i dodaj dzielenie obrazków wykorzystując modulo.
  1. for($i = 0, $ii = mysql_num_rows($query); $i < $ii; $i++){
  2. echo "<img..."; /* tu wyświetlasz swój obrazek */
  3. if ($id%4 == 0){
  4. echo '<br />';
  5. }
  6. }
CuteOne
  1.  
  2. for($i = 0; $i < mysql_num_rows($query); $i++){
  3. echo "<img..."; /* tu wyświetlasz swój obrazek */
  4. if ($i%4 == 1){
  5. echo '<br />';
  6. }
  7. }

winksmiley.jpg
DerekDX
Cytat(Age1869 @ 25.11.2010, 00:48:28 ) *
Jak CSS ma Ci niby wyświetlić zdjęcia, które jak mniemam masz w bazie MySQL (tzn linki do nich)... CSS to jedynie arkusze stylów... Możesz nimi nadać właściwości poszczególnym elementom.


No to ja wiem, może źle sformułowałem pytanie ale dokładnie chodziło mi o coś takiego jak powyżej
Dziękuje wszystkim a pomoc cool.gif
wdev
Cytat(CuteOne @ 25.11.2010, 05:05:14 ) *
  1.  
  2. for($i = 0; $i < mysql_num_rows($query); $i++){
  3. echo "<img..."; /* tu wyświetlasz swój obrazek */
  4. if ($i%4 == 1){
  5. echo '<br />';
  6. }
  7. }

winksmiley.jpg

Nie do końca, CuteOne. Nie wykonuj funkcji (jeśli koniecznie nie musisz) jako środkowy argument pętli for, bo wtedy ona jest wykonywana za każdą iteracją funkcji, co daje Ci spory spadek wydajości. Lepiej wykonać ją na początku, a później pracować już tylko na zwróconym wyniku.
CuteOne
yhym... mów tak dalej, może ktoś uwierzy winksmiley.jpg a tak na serio:

1. niepotrzebnie przepisujesz wartość do nowej zmiennej
2. sprawdź wydajność mojego sposobu i swojego przy dużej ilości wierszy [10-30 mln]
3. O jakiej ty funkcji mówisz? mysql_num_rows() czy $i < mysql_num_rows() ?
wdev
Sorry, że odpisuję dopiero dzisiaj, ale praca dała mi się ostro we znaki winksmiley.jpg
Ad. 3. oczywiście, że mówię o mysql_num_rows;
a teraz ad. 2. Zrobiłem trochę testów, bo to co pisałem przeczytałem kiedyś w necie i było na tyle logiczne, że nie zadałem sobie trudów benchmarkować. Tabela z 1 kolumną - id, primary key, - 100 tys. pól (mój komputer ma już swoje lata, nie chcę, żeby mi umarł z wycieńczenia).

Test:
  1. $query = mysql_query("SELECT * FROM test");
  2. for($y = 0; $y <= 100; $y++){
  3. $start = microtime(true);
  4. for($i = 0, $ii = mysql_num_rows($query); $i < $ii; $i++) // test 1
  5. // test2: for($i = 0; $i < mysql_num_rows($query); $i++)
  6. {
  7. }
  8. $end = microtime(true);
  9. $time[] = $end - $start;
  10. }
  11. $time = round(array_sum($time), 4);
  12.  
  13. file_put_contents('log.txt', 'test1: '. $time . "\n", FILE_APPEND); //lub test2:


Wyniki po pięciokrotnym odświeżeniu przeglądarki na obu testach:
test1: 1.958
test1: 2.0256
test1: 2.3469
test1: 2.1014
test1: 1.9449
test2: 9.7351
test2: 10.0474
test2: 9.2541
test2: 10.0189
test2: 9.8731

Jeśli metodologia jest zła, to pomóż mi ją poprawić, mogę się mylić. Albo zrób test sam. Z moich wyników wychodzi, że mój sposób jest 5-krotnie szybszy.
CuteOne
Przetestowałem i zwracam honor smile.gif wyniki podobne jak u Ciebie średnio 3-4 szybciej
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.