Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Archiwum newsów na stronie
Forum PHP.pl > Forum > Przedszkole
Sunburn
Witam, mam taki oto skrypt:

  1. <?php
  2. $username="user";
  3. $password="pass";
  4. $db="db";
  5.  
  6. mysql_connect('host',$username,$password);
  7. mysql_select_db($db) or die("Nie odnaleziono bazy danych");
  8.  
  9.  
  10.  
  11. function pokaz_archiwum($i) 
  12. {
  13. $j = '2' * $i;
  14. $query = "SELECT id, nick, tresc FROM newsy ORDER by id DESC LIMIT $i,$j";
  15. $result = mysql_query($query) or die (mysql_error());
  16.  
  17. while($db = mysql_fetch_array($result)) {
  18. $nazwa = tnij(strip_tags($db[tresc]), 23);
  19. echo "<img src=\"gfx/strzalka.gif\" /> <a href=\"news,$db[id].html\"><strong>$tresc</strong></a><br />";
  20. }
  21.  
  22. }
  23.  
  24.  
  25. function tnij($tresc,$ile) {
  26.  
  27.  $licz = strlen($tresc);
  28.  if ($licz>=$ile)  {
  29.  $tnij = substr($tresc,0,$ile);
  30.  $txt = $tnij."..";
  31.  }
  32. else  {
  33.  $txt = $tresc;
  34. }
  35. return $txt;
  36. }
  37.  
  38.  
  39. ?>
  40.  
  41. <?php
  42. include "part1.php";
  43.  
  44.  
  45.  
  46. // ile pokazac
  47. pokaz_archiwum(10);
  48.  
  49. include "part2.php";
  50. ?>


News ma pokazywać ostatnie wpisy z bazy danych od najnowszego zaczynając. Niestety nie działa a jedyne co się pokazuje to dwa obrazki "strzalka.gif"

Z góry dzięki za pomoc

Pozdrawiam
drPayton
  1. <?php
  2. $nazwa = tnij(strip_tags($db[tresc]), 23);
  3. echo "<img src=\"gfx/strzalka.gif\" /> <a href=\"news,$db[id].html\"><strong>$tresc</strong></a><br />";
  4. ?>

1.
$nazwa, to treść, a w echo odwołujesz się do nieistniejącej zmiennej $tresc
Albo echo "(...)$nazwa(...)";
Albo echo "(...)$db[tresc](...)";
2.
$nazwa = tnij(strip_tags($db['tresc']), 23); w nawiasach indeksy asocjacyjne w apostrofach/cudzysłowach
Sunburn
  1. <?php
  2. $username="user";
  3. $password="pass";
  4. $db="db";
  5.  
  6. mysql_connect('host',$username,$password);
  7. mysql_select_db($db) or die("Nie odnaleziono bazy danych");
  8.  
  9.  
  10.  
  11. function pokaz_archiwum($i) 
  12. {
  13. $j = '2' * $i;
  14. $query = "SELECT id, nick, tresc FROM newsy ORDER by id DESC LIMIT $i,$j";
  15. $result = mysql_query($query) or die (mysql_error());
  16.  
  17. while($db = mysql_fetch_array($result)) {
  18. $tresc = tnij(strip_tags($db['tresc']), 23);
  19. echo "<img src=\"gfx/strzalka.gif\" /> <a href=\"news,$db[id].html\"><strong>$tresc</strong></a><br />";
  20. }
  21.  
  22. }
  23.  
  24.  
  25. function tnij($tresc,$ile) {
  26.  
  27.  $licz = strlen($tresc);
  28.  if ($licz>=$ile)  {
  29.  $tnij = substr($tresc,0,$ile);
  30.  $txt = $tnij."..";
  31.  }
  32. else  {
  33.  $txt = $tresc;
  34. }
  35. return $txt;
  36. }
  37.  
  38.  
  39. ?>
  40.  
  41. <?php
  42. include "part1.php";
  43.  
  44.  
  45.  
  46. // ile pokazac
  47. pokaz_archiwum(3);
  48.  
  49. include "part2.php";
  50. ?>


Mam taki kod i przy 4 rekordach w bazie wyświetla mi tylko jeden (najstarszy)
drPayton
  1. <?php
  2. function pokaz_archiwum($i) 
  3. {
  4. $j = '2' * $i;
  5. $query = "SELECT id, nick, tresc FROM newsy ORDER by id DESC LIMIT $i,$j";
  6.  
  7. (...)
  8.  
  9. pokaz_archiwum(3);
  10.  
  11. (...)
  12. ?>

czyli:
$i (offset, od pierwszego powyżej tej wartości) = 3,
$j (liczba rekordów do pokazania)= 2*3 = 6
A więc każesz mu pokazać 6 rekordów poczynając od pierwszego powyżej trzeciego. A że masz tylko 4 w bazie, to w efekcie daje jeden...
Podpis w komentarzu nad wywołaniem funkcji // ile pokazac jest błędny
Sunburn
Aha.....źle myślałem ale już kapuje. Dzięki wielkie, pozdro
edit

Jeszzce jedno, z wyświetlanie mlinków jest OK, ale kiedy kliknę na niego to wyskakuje mi że nie ma takiej strony. Mam w bazie danych tabelę "newsy" oraz pola:id, nick, tresc

Newsy mam dodane ale myśle ze coś nie tak jest w :
  1. <?php
  2. echo "<img src=\"gfx/strzalka.gif\" /> <a href=\"news,$db[id].html\"><strong>$tresc</strong></a><br />";
  3. ?>
Pozdrawiam
drPayton
Być może. Żeby obsługiwać tego typu linki musisz mieć zaimplementowany odpowiedni parser URL, albo korzystać z odpowiednich dyrektyw .htaccess (tzw mod_rewrite - analizuje on adres i odpowiednio go przekształca i wtedy news,3.html może być równoznaczny z np. index.php?module=news&id=3). Jak jest u Ciebie to tylko Ty wiesz winksmiley.jpg
Skoro nie działa, to znaczy że jeden z powyższych jest błędnie napisany, bądź nie istnieje...
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.