Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][HTML] Problem z tabelą - po 5 obrazków w linii
roobik
post
Post #1





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


Witam! (IMG:style_emoticons/default/smile.gif)
Mam mały problem z tabelą. Otóż chcę, by wyświetlało po 5 obrazków w linii. Wszystkich rekordów jest 254. Mam gdzieś błąd w kodzie, lecz nie wiem, gdzie... Obecnie wyświetla, co prawda, po pięć obrazków, lecz obrazki te się powtarzają kilkunastokrotnie, zanim pojawi się kolejny obrazek...
  1. <?php
  2. include('config.php');
  3.  
  4.  
  5. $zap = "SELECT * FROM tabela WHERE ...";
  6. $result = mysql_query($zap);
  7. $ile = mysql_num_rows($result);
  8. echo '<table><tr><td>WSZYSTKICH ZDJĘĆ: '.$ile.'</td></tr></table>';
  9. echo '<table width=770 style="border: 1px solid #cccccc;">';
  10.  
  11. while($r = mysql_fetch_array($result)) {
  12. $id = $r['id'];
  13.  
  14. $date = $r['date'];
  15.  
  16. $text = $r['text'];
  17. $co_zmieniamy = array( "555","463");
  18. $na_co_zmieniamy = array("120","100");
  19. $text = str_replace($co_zmieniamy,$na_co_zmieniamy,$text);
  20. $opened = $r['opened'];
  21.  
  22.  
  23. $ilosc = $ile/5;
  24. $reszta=$ilosc-$ilosc%$ile;
  25. if ($reszta<0.4) {
  26. $ilosc=$ilosc-$reszta;
  27. for ($x=0;$x<$ilosc;$x++)
  28.  
  29.  
  30. {
  31. echo '<tr>';
  32.  
  33.  
  34. for ($y=0;$y<5;$y++) // pętla która tworzy kolumny
  35. {
  36. echo '<td width=152 align=center>'.$text.'<br><font style="font-family: Tahoma, Verdana, Arial; font-size: 9px;">>ID: '.$id.' | Odslon:'.$opened.'</font></td>';
  37. }
  38.  
  39. echo '</tr>';
  40.  
  41. }
  42.  
  43. }
  44.  
  45. elseif (($reszta>=0.5) AND ($reszta<=0.9)) {
  46.  
  47. $ilosc+=1-$reszta;
  48.  
  49. for ($x=0;$x<$ilosc;$x++)
  50. {
  51. echo '<tr>';
  52.  
  53. for ($y=0;$y<5;$y++)
  54. {
  55. echo '<td width=152 align=center>'.$text.'<br><font style="font-family: Tahoma, Verdana, Arial; font-size: 9px;">ID: '.$id.' | Odslon:'.$opened.'</font></td>';
  56. }
  57.  
  58. echo '</tr>';
  59.  
  60. }
  61.  
  62. }
  63.  
  64.  
  65. }
  66.  
  67.  
  68.  
  69.  
  70.  
  71. echo '</tr></table>';
  72. ?>
  73.  

Bardzo proszę ... pomóżcie...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
peter13135
post
Post #2





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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




  1. $ilosc = $ile/5;
  2.  
  3. $reszta=$ilosc-$ilosc%$ile;
  4.  
  5. if ($reszta<0.4) {
  6.  
  7. $ilosc=$ilosc-$reszta;
  8.  
  9. for ($x=0;$x<$ilosc;$x++)


Po co te akrobacje ? Co to za wartość jest to 0.4 ?


  1.  
  2. $i=0;
  3. echo '<table><tr>';
  4. while($i<100)
  5. {
  6.  
  7. if($i%5==0) echo '</tr><tr>';
  8. echo '<td>'.rand(0,100).'</td>';
  9. $i++;
  10.  
  11. }
  12. echo '</tr></table>';
  13.  
  14.  

Go to the top of the page
+Quote Post
roobik
post
Post #3





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


rand jest wartością losową, z tego, co kojarzę...
Ja w zapytaniu mam ORDER BY id DESC, więc to nie to.
Nie wiem, jak umieścić kod, który podałeś... Wywala błąd jak chcę zamienić...
Cytat(peter13135)
Co to za wartość jest to 0.4 ?

Wziąłem to z innego tematu - http://forum.php.pl/lofiversion/index.php/t147071.html
Task, czy inaczej - problem pozostał... (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Taki mój mały skrypt do rysowania tabel:

  1. class drawTables{
  2.  
  3. function drawTable($tableFields, $headers){
  4.  
  5. $table = '';
  6.  
  7. for ( $i=0; $i<sizeof($tableFields); $i++ ) {
  8.  
  9. $currentRow = $i+1;
  10. if ($currentRow % 2 == 0) $parity = 'even'; else $parity = 'odd';
  11. $rowClass = 'tabRow row' . $currentRow . 'of' . sizeof($tableFields) . ' ' . $parity;
  12. if (in_array($currentRow, $headers)) $rowClass .= ' header';
  13. $table .= '<div class="'.$rowClass.'">';
  14.  
  15. for ( $j=0; $j<sizeof($tableFields[$i]); $j++ ) {
  16.  
  17. $currentCol = $j+1;
  18. $colClass = 'tabCol col' . $currentCol . 'of' . sizeof($tableFields[$i]);
  19. $table .= '<div class="'.$colClass.'">' . $tableFields[$i][$j] . '</div>';
  20.  
  21. }
  22.  
  23. $table .= '<div class="clear"></div></div>';
  24.  
  25. }
  26.  
  27. return $table;
  28.  
  29. }
  30.  
  31. }


do tego css:

  1. .tabCol {
  2. float: left;
  3. width: 200px;
  4. }
  5.  
  6. .clear {
  7. clear: both;
  8. }
  9.  
  10. .even {
  11. background: silver;
  12. }
  13.  
  14. .header {
  15. font-weight: bold;
  16. }


gdzie $tableFields to zwyczajna tabelka o postaci:
  1. $tabelka = array(
  2. array('pole1', 'pole2', 'pole3'),
  3. array('pole1', 'pole2', 'pole3'),
  4. );


a $headers to numery rzędów, które powinny być nagłówkami.
Go to the top of the page
+Quote Post
roobik
post
Post #5





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


peter13135... b4rt3kk - chłopaki - nie jarzę... (IMG:style_emoticons/default/sad.gif)
Który w końcu kod pasuje do mojego? Ja wiem, że obydwa są ok, ale co jeden daję, to babole wychodzą...
Pomóżcie pliiisss...
Go to the top of the page
+Quote Post
peter13135
post
Post #6





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Cytat(roobik @ 11.09.2012, 20:52:20 ) *
rand jest wartością losową, z tego, co kojarzę...
Ja w zapytaniu mam ORDER BY id DESC, więc to nie to.
Nie wiem, jak umieścić kod, który podałeś... Wywala błąd jak chcę zamienić...

Wziąłem to z innego tematu - http://forum.php.pl/lofiversion/index.php/t147071.html
Task, czy inaczej - problem pozostał... (IMG:style_emoticons/default/sad.gif)


Ojej, ja pokazałem Ci tylko jak wygenerowac tabelke z 5 kolumnami. Zamiast rand, mogłem dać jakąkolwiek stałą, albo $i - to nie ma znaczenia.

Zamiast mojej pętli (while $i<100 ) dajesz swoją (while $row = mysql_fetch... ) i zamiat rand dajesz swoje dane które chcesz w tm polu wyświetlić.
Go to the top of the page
+Quote Post
roobik
post
Post #7





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


peter13135, zmieniłem kod, na wzór, który podałeś. Obecnie wygląda on tak :
  1. <?php
  2. include('config.php');
  3.  
  4.  
  5. $zap = "SELECT * FROM tabela WHERE ...";
  6. $result = mysql_query($zap);
  7. $ile = mysql_num_rows($result);
  8. echo '<table><tr><td>WSZYSTKICH ZDJĘĆ: '.$ile.'</td></tr></table>';
  9. echo '<table width=770 style="border: 1px solid #cccccc;">';
  10.  
  11. while($r = mysql_fetch_array($result)) {
  12. $id = $r['id'];
  13. $date = $r['date'];
  14. $text = $r['text'];
  15. $co_zmieniamy = array( "555","463");
  16. $na_co_zmieniamy = array("120","100");
  17. $text = str_replace($co_zmieniamy,$na_co_zmieniamy,$text);
  18. $opened = $r['opened'];
  19.  
  20.  
  21. $i=0;
  22. //echo '<table><tr>';
  23. while($i<100)
  24. {
  25.  
  26. if($i%5==0) echo '</tr><tr>';
  27. echo '<td width=152 align=center>'.$text.'<br><font style="font-family: Tahoma, Verdana, Arial; font-size: 9px;">>ID: '.$id.' | Odslon:'.$opened.'</font></td>';
  28. $i++;
  29.  
  30. }
  31. //echo '</tr></table>';
  32.  
  33. }
  34. echo '</tr></table>';
  35. ?>

Niestety, ale problem pozostał. Niby wyświetla (jak poprzednio, bez poprawek) po 5 zdjęć w wierszu, ale znów jest tak, że jeden obrazek jest powtarzany jakieś 100 razy... Gdzieś mam błąd w pętli, ale nie wiem gdzie...

Bardzo proszę o pomoc...

Ten post edytował roobik 13.09.2012, 14:47:22
Go to the top of the page
+Quote Post
BaN
post
Post #8





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


@peter13135 podał Ci prawie dobre rozwiązanie. Trzeba tylko wprowadzić niewielkie poprawki, aby nie wyświetlać wiersza bez komórek oraz aby w ostatnim wierszu było 5 komórek
  1. $result = mysql_query("SELECT * FROM tabela WHERE ...");
  2. $ile = mysql_num_rows($result);
  3. echo '<table><tr><td>WSZYSTKICH ZDJĘĆ: '.$ile.'</td></tr></table>';
  4. if ($ile > 0) {
  5. echo '<table width=770 style="border: 1px solid #cccccc;">';
  6. $co_zmieniamy = array("555", "463");
  7. $na_co_zmieniamy = array("120", "100");
  8. $i = 0;
  9. while ($r = mysql_fetch_array($result)) {
  10. if ($i % 5 == 0) {
  11. if ($i > 0) {
  12. echo "</tr>\n";
  13. }
  14. echo '<tr>';
  15. }
  16. echo '<td width=152 align=center>'. str_replace($co_zmieniamy, $na_co_zmieniamy, $r['text']) . '<br>
  17. <font style="...">ID: '.$r['id'] . ' | Odslon: ' . $r['opened'] .'</font></td>';
  18. ++$i;
  19. }
  20. if ($i % 5 > 0) {
  21. echo str_repeat('<td></td>', 5 - ($i % 5));
  22. }
  23. echo '</tr></table>';
  24. }
Go to the top of the page
+Quote Post
roobik
post
Post #9





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


Niestety, ale podany przez Ciebie również nie rozwiązał tego problemu - nadal gdzieś jest błąd w pętli: owszem, wyświetla po 5 obrazków w linii, ale przez dwadzieścia-parę linii powtarzany jest ten sam obrazek, dopiero potem następny, który jest wyświetlany też przez następnych dwadzieścia-parę linii... i tak w kółko. Każdy obrazek powtarzany jest ze 100 razy, zanim wyświetlony jest następny, który znowu jest powtarzany ze 100 razy... (IMG:style_emoticons/default/sad.gif)
Już sam nie wiem... (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Damonsson
post
Post #10





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


  1. while ($i <= mysql_fetch_array($result)) {


Nie czasem tak?

skąd to $r w ogóle? Nie rozumiem za bardzo tego kodu.
Go to the top of the page
+Quote Post
roobik
post
Post #11





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

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


(IMG:style_emoticons/default/smile.gif) Wrrrrrróć (IMG:style_emoticons/default/smile.gif)
Zarówno peter1315, jak i BaN podali prawidłowe rozwiązanie (IMG:style_emoticons/default/smile.gif)
Problem był jednak u mnie - okazało się, że jeszcze mam jedną pętlę, która była znacznie wcześniej...
Wystarczyło w kodzie zmienić zmienną $r...

Dziękuję Wam bardzo!

Pozdrawiam!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 01:23