Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z wyświetlniem obrazków
Forum PHP.pl > Forum > Przedszkole
tomekmvr
Witam
Mam pager ktory wyswietla zdjecia. Chcialem zrobic zeby wyswietlalo w pierwszej linii cztery, drugiej tez itd.
Ale cos mi nie wychodzi bo wyswietla mi w pierwszej lini jeden obrazek, w drugiej cztery, w trzeciej jeden i znowu cztery.

O to ten skrypt:
  1. <?php
  2.  
  3. $link = @mysql_connect(localhost, root, krasnal) or die ('Nie mozna nawiazac polaczenia z baza danych');
  4. mysql_select_db(imprezka) or die ('Bledna nazwa bazy !');
  5. $query = @mysql_query("SELECT * FROM obrazki");
  6. $wszystkich = @mysql_num_rows($query);
  7.  
  8. $ile_na_stronie = "10";
  9. $page = $_GET['page'] ? $_GET['page'] : 0;
  10. $limit = ($page * $ile_na_stronie).','.$ile_na_stronie;
  11. (($page * $ile_na_stronie)+$ile_na_stronie);
  12.  
  13. $zapytanie = "SELECT * FROM obrazki LIMIT {$limit}";
  14. $wykonaj = mysql_query($zapytanie);
  15.  
  16. echo'<table><tr>';
  17.  
  18. while($wiersz = @mysql_fetch_array($wykonaj))
  19. {
  20.  
  21. if($ii % 5 == 0) echo '<tr>';
  22. echo '<td><img src='.$wiersz['url'].' width="100" height="100"></td>';
  23. if($ii % 5 == 0) echo '</tr>';
  24.  
  25. $ii++;
  26. }
  27. echo'</tr></table>';
  28. $podstron = ceil($wszystkich/$ile_na_stronie);
  29.  
  30. if($page>0){
  31. echo "<a href=index.php?page=".($page-1).">Poprzednia</a>&nbsp;&nbsp;|";
  32. } else {
  33. echo "Poprzednia&nbsp;&nbsp;|";
  34. }
  35.  
  36. for($i=0;$i<$podstron;$i++){
  37. if($i==$page){
  38. echo " [".($i+1)."] ";
  39. } else {
  40. echo "<a href=index.php?page=".($i)."> ".($i+1)." </a>";
  41. }
  42. }
  43.  
  44. if($page<$podstron-1){
  45. echo "&nbsp;&nbsp;<a href=index.php?page=".($page+1).">Nastepna</a>";
  46. } else {
  47. echo "&nbsp;&nbsp;Nastepna";
  48. }
  49.  
  50. ?>


Prosze o pomoc, gdzie popelnilem blad?
Daimos
moze tak
  1. <?php
  2.  
  3. echo'<table>'; // wywal <tr>
  4. $ii=1;
  5. while($wiersz = @mysql_fetch_array($wykonaj))
  6. {
  7.  
  8. if($ii % 4 == 0) echo '<tr>';
  9. echo '<td><img src='.$wiersz['url'].' width="100" height="100"></td>';
  10. if($ii % 4 == 0) echo '</tr>';
  11.  
  12. $ii++;
  13. }
  14. echo'</table>';
  15. ?>
tomekmvr
Tez tak probowalem i nic nie zmienia sie, dalej jest tak samo. Tylko ze teraz w pierwszym wierszu sa trzy obrazki, w nastepnym jeden, nastepnie trzy itd.
specialplan
Hmm... Gdzieś widziałem identyczny kod...
nowotny
Cytat(tomekmvr @ 8.02.2008, 17:54:10 ) *
Prosze o pomoc, gdzie popelnilem blad?

W myśleniu... przeanalizuj sobie każdą iterację pętli wyświetlającej i będziesz wiedział dlaczego tak się dzieje... czyli prześledź pętle i warunki dla $ii=1, $ii=2, itd...

Ogólnie pętla while się do takiej funkcji słabo nadaje...
tomekmvr
Cytat(specialplan @ 8.02.2008, 19:30:59 ) *
Hmm... Gdzieś widziałem identyczny kod...


Tak ten kod znalazlem na tym forum, tylko chcialem dodac do niego aby sie wysietlaly wyniki w rzedach w koncu sie udalo o to rozwiazanie mi dziala, ale nie wiem czy tak prawidlowo powinno byc:
  1. <?php
  2. echo'<table>';
  3. $ii=1;
  4. while($wiersz = @mysql_fetch_array($wykonaj))
  5. {
  6.  
  7. if($ii % 4 == 1) echo '<tr>';
  8. echo '<td><img src='.$wiersz['url'].' width="100" height="100"></td>';
  9. if($ii % 4 == 0) echo '</tr>';
  10.  
  11. $ii++;
  12. }
  13. echo'</table>';
  14. ?>
Daimos
no przeciez tak napisalem, dziala?
tomekmvr
Nie napisales tak jak teraz podalem.

Bylo najpierw
  1. <?php
  2. if($ii % 4 == 0) echo '<tr>';
  3. ?>


A ja zmienilem na:
  1. <?php
  2. if($ii % 4 == 1) echo '<tr>';
  3. ?>


Reszta bez zmian. Ta jedynka wszystko zmienila, ze jest teraz dobrze.
Daimos
% to jest reszta z dzielenia

btw tutaj mozna zauwazyc zalete divow, wystarczy float:left i mamy taka tabele bez kombinowania gdzie zamkniecie wiersza
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.