Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Pobranie trzech ostatnich rekordów tabeli
Forum PHP.pl > Forum > Przedszkole
gustaff88
Witam! Mam taki oto kod PHP:

  1. <?php
  2. try
  3. {
  4. include_once 'include/db_connect.php';
  5. $dbd -> query ('SET NAMES utf8');
  6. $dbd -> query ('SET CHARACTER_SET utf8_unicode_ci');
  7. $dbd -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  8. $statement = $dbd->prepare('SELECT * FROM news ORDER BY id DESC LIMIT 3');
  9. $statement->execute();
  10. foreach($statement as $row)
  11. {
  12. echo('<div class="kolumna"><h1>');
  13. echo($row['tytul']);
  14. echo('</h1>');
  15. echo('<p class="date">');
  16. echo($row['data']);
  17. echo('</p>');
  18. echo('<p class="news">');
  19. echo($row['skrot']);
  20. echo('</p>');
  21. echo('<div class="next"><a href="testnews.php?id='.$row['id'].'">Czytaj dalej...</a></div>');
  22. echo('</div><div class="linia"></div>');
  23.  
  24. }
  25. $statement->closeCursor();
  26. }
  27. catch(PDOException $e)
  28. {
  29. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  30. }
  31. ?>


Pobiera on trzy ostatnie rekordy tabeli, ale mam problem z odpowiednim formatowaniem w html.
Chcę, żeby wyniki były wyświetlone w następującej kolejności:

  1. <div class="kolumna">ostatni rekord</div>
  2. <div class="linia"></div>
  3. <div class="kolumna">drugi od końca<div>
  4. <div class="linia"></div>
  5. <div class="kolumna">trzeci od końca</div>


Wszystko jest dobrze za wyjątkiem tego, że w pętli wyświetlane jest na końcu div class="linia".
Nie wiem jak podejść do tematu, proszę o jakieś podpowiedzi
lukaskolista
Proszę bardzo:
  1. $i = 0;
  2. $rowsNo = count($statement);
  3.  
  4. foreach($statement as $row)
  5. {
  6. echo('<div class="kolumna"><h1>');
  7. echo($row['tytul']);
  8. echo('</h1>');
  9. echo('<p class="date">');
  10. echo($row['data']);
  11. echo('</p>');
  12. echo('<p class="news">');
  13. echo($row['skrot']);
  14. echo('</p>');
  15. echo('<div class="next"><a href="testnews.php?id='.$row['id'].'">Czytaj dalej...</a></div>');
  16.  
  17. if (++$i < $rowsNo) {
  18. echo('</div><div class="linia"></div>');
  19. }
  20. }
nospor
@lukas konsowe </div> powinno byc zawsze. spojrz dokladnie na to echo co zawarunkowales wink.gif
gustaff88
Dzięki wielkie!
Faktycznie głupio miałem zapisane to echo.
I nie wiem dlaczego nie działa mi:
  1. if (++$ < $rowsNo)

ale zrobiłem:
  1. if ($i++ < $rowsNo+1)

i działa.
Oto działający kod:

  1. <?php
  2. try
  3. {
  4. include_once 'include/db_connect.php';
  5. $dbd -> query ('SET NAMES utf8');
  6. $dbd -> query ('SET CHARACTER_SET utf8_unicode_ci');
  7. $dbd -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  8. $statement = $dbd->prepare('SELECT * FROM news ORDER BY id DESC LIMIT 3');
  9. $statement->execute();
  10. $i = 0;
  11. $rowsNo = count($statement);
  12. foreach($statement as $row)
  13. {
  14. echo('<div class="COLUMN"><h1>');
  15. echo($row['tytul']);
  16. echo('</h1>');
  17. echo('<p class="date">');
  18. echo($row['data']);
  19. echo('</p>');
  20. echo('<p class="news">');
  21. echo($row['skrot']);
  22. echo('</p>');
  23. echo('<div class="next"><a href="testnews.php?id='.$row['id'].'">Czytaj dalej...</a></div>');
  24. echo('</div>'); // to było w echo
  25. if ($i++ < $rowsNo+1) {
  26. echo('<div class="VL"></div>');
  27. }
  28.  
  29. }
  30. $statement->closeCursor();
  31. }
  32. catch(PDOException $e)
  33. {
  34. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  35. }
  36. ?>
lukaskolista
Nospor: faktycznie, nie zauważyłem. Na szczęście gustaff sobie poradził.

Cytat
I nie wiem dlaczego nie działa mi:
  1. pobierz, plaintext
  2. if (++$ < $rowsNo)

Nie działa, bo masz ++$ zamiast ++$i
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.