Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Obsługa strzałek poprzedni/następny
Forum PHP.pl > Forum > Przedszkole
Olsz4k
No właśnie, mam bazę danych która ma 1 tabele: id,tytul,tresc.
na stronie aktualnosci.php wyswietlam z tej bazy 1 aktualnosc w taki sposob:

  1. <?php
  2. include("polacz.php");
  3. $id=(int)$_GET['id'];
  4.  
  5.  
  6.  
  7. if(empty($_GET['id']))
  8. {
  9. $zapytanie="SELECT * from news ORDER BY id desc limit 1";
  10. $wykonaj=mysql_query($zapytanie);
  11. while($wiersz=mysql_fetch_array($wykonaj))
  12. {
  13. echo '<h2>'.$wiersz['tytul'].'</h2><p>'.$wiersz['tresc'].'</p>';
  14. }
  15.  
  16. }
  17. else
  18. {
  19. $zapytanie="SELECT * from news WHERE id='$id'";
  20. $wykonaj=mysql_query($zapytanie);
  21. while($wiersz=mysql_fetch_array($wykonaj))
  22. {
  23. echo '<p>'.$wiersz['tytul'].' '.$wiersz['tresc'].'<p>';
  24. }
  25.  
  26. }
  27.  
  28.  
  29. ?>


Działa wszystko ok.
Przechodząc do strzałek poprzedni/następny wygląda to u mnie tak:

  1. <div id="controls">
  2. <?php
  3.  
  4.  
  5. echo '<a style="float: left" href="aktualnosci.php?id='.($_GET[ 'id' ]-1).'">< wcześniej</a>';
  6. echo '<a style="float: right" href="aktualnosci.php?id='.($_GET[ 'id' ]+1).'">później ></a>';
  7. ?>
  8.  
  9.  
  10. </div>


I wszystko działa ładnie i sprawnie, dopóki jakaś aktualność nie zostanie usunięta z bazy danych (wtedy dane id pozostaje, a tytuł i treść są puste).
Nie wiem jak obsłużyć te strzałki, aby przeszukiwało czy dane id np. ma tytuł, jeżeli nie to następuje id+1 dopóki nie znajdzie id gdzie będzie tytuł.
Będę wdzięczny za jakąkolwiek pomoc.
Aqu
Tam gdzie wyświetlasz strzałki, pobierz po prostu z bazy newsy, które mają id większe/mniejsze niż $_GET['id'];
Olsz4k
Możesz mi wytłumaczyć bardziej łopatologicznie? Bo nie bardzo rozumiem i nie bardzo wiem co to da, dziękuję.
Aqu
  1. <div id="controls">
  2. <?php
  3. $next_news = mysql_fetch_assoc(mysql_query('SELECT id FROM news WHERE id>'.$_GET['id'].' LIMIT 1'));
  4.  
  5. echo '<a style="float: left" href="aktualnosci.php?id='.($_GET[ 'id' ]-1).'">< wcześniej</a>';
  6. echo '<a style="float: right" href="aktualnosci.php?id='.$next_news['id'].'">później ></a>';
  7. ?>
  8.  
  9.  
  10. </div>


Coś takiego. wink.gif
Olsz4k
Dzięki bardzo! Bardzo mi pomogłeś, jednak występuje jeszcze jeden problem, mianowicie ja pewnie źle wyświetlam pierwszego newsa.

Będąc na stronie głównej i klikając w zakładkę aktualności, chcę aby się wyświetlał najświeższy news (czyli ten, który ma największe id). Obecnie mam to tak zrobione,:

  1. if(empty($_GET['id']))
  2. {
  3. $zapytanie="SELECT * from news ORDER BY id desc limit 1";
  4. $wykonaj=mysql_query($zapytanie);
  5. while($wiersz=mysql_fetch_array($wykonaj))
  6. {
  7. echo '<h2>'.$wiersz['tytul'].'</h2><p>'.$wiersz['tresc'].'</p>';
  8. }
  9.  
  10. }
  11. else
  12. {
  13. $zapytanie="SELECT * from news WHERE id='$id'";
  14. $wykonaj=mysql_query($zapytanie);
  15. while($wiersz=mysql_fetch_array($wykonaj))
  16. {
  17. echo '<h2>'.$wiersz['tytul'].'</h2><p>'.$wiersz['tresc'].'</p>';
  18. }
  19.  
  20. }


Czyli w skrócie, jeżeli id będzie puste to posortuje od największego i weźmie pierwszy rekord. To działa, ale wtedy moje strzałki zaczynają się sypać.

Jak przekazać od razu do linku największe id?
aras785
Z bazy wink.gif
Olsz4k
Cytat(aras785 @ 27.07.2013, 13:58:17 ) *
Z bazy wink.gif



To nie było pomocne tongue.gif

Ale już sobie poradziłem w ten sposób:

  1. <?php
  2. include("polacz.php");
  3. $il="SELECT MAX(id) FROM news";
  4. $il1 = mysql_query($il) or die(mysql_error());
  5. while ($wiersz1 = mysql_fetch_array($il1))
  6. {
  7. $max=$wiersz1[0];
  8. }
  9. echo '<li><a href="aktualnosci.php?id='.$max.'">Aktualności</a></li>'
  10.  
  11. ?>


I działa wszystko jak należy. Dziękuję za pomoc.

Mam jeszcze jedno pytanie, mianowicie używając


Wyskakują następujące warningi:
Cytat
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent


Przypuszczałem, że zmiana kodowania pliku z UTF-8 na UTF-8 bez BOM pomoże, niestety nic to nie dało. Co prawda mogę to wytłumić "@", ale od czego są te błędy i czy da się jakoś inaczej im zapobiec?
fate
zrob session start na poczatku pliku to zniknie
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.