Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] system newsów mały problemik
Forum PHP.pl > Forum > Przedszkole
wojtekwro
witam,
tworząc prosty system newsów natrafiłęm na mały problem otóż skracam newsa do xxx znaków, nie tnąc wyrazów i linkuje sobie obok "więcej" czyli czytaj dalej. Problem w tym, że wyświetla mi czytaj więcej przy każdym newsie nawet tym którego liczba znaków jest <xxx. Prosiłbym o naprowadznie na błąd w skrypcie.

  1. <?php
  2. function shortcut($tresc,$ile)
  3. {
  4. $licz = strlen($tresc);
  5. if ($licz>=$ile)
  6. {
  7. $tnij = substr($tresc,0,stripos($tresc," ",$ile));
  8. $txt = $tnij.'... ';
  9. }
  10. else
  11. {
  12. $txt = $tresc;
  13. }
  14. return $txt;
  15. }
  16. #
  17. # tutaj deklarujemy ilośc znaków jaką ma wyświetlic nam skrypt skypt
  18. #
  19. $ile = 300;
  20. $a ='1';
  21. mysql_connect('localhost', 'root' , '');
  22. $query = mysql_query("select * from newsy where activ=1 order by data desc limit 0,3");
  23. while($rekord = mysql_fetch_array($query))
  24. {
  25. $temat = $rekord[1];
  26. $tresc = $rekord[2];
  27. $active = $rekord[5];
  28. $war = "1";
  29. $id = $rekord[0];
  30.  
  31. echo '<b>'.$temat.'</b><br/>';
  32. echo shortcut($tresc,$ile);
  33. echo "<a href='pokaz_news.php?news=$id'>więcej</a>";
  34. echo '<hr><br>';
  35.  
  36. }
  37.  
  38. ?>


nie wiem jak połączyć w 1 całość liniki 8 i 34 ;]
nexis
  1. <?php
  2. mysql_connect('localhost', 'root' , '');
  3.  
  4. $ile = 300;
  5.  
  6. $query = mysql_query( 'SELECT * FROM newsy WEHRE activ = 1 ORDER BY data DESC LIMIT 3' );
  7. while( $rekord = mysql_fetch_array( $query ) )
  8. {
  9. echo '<b>' . $rekord[1] . '</b><br />';
  10. if ( strlen( $rekord[2] ) > $ile) {
  11. echo substr( $rekord[2], $ile );
  12. echo '<a href="pokaz_news.php?news=' . $rekord[0] . '">więcej...</a>';
  13. } else
  14. echo $rekord[2];
  15. echo '<hr /><br />';
  16. }
  17. ?>
nevt
A jaka jestr strona kodowa skryptu i/lub danych w bazie? Nie utf-8 przypadkiem?
Wtedy strlen() nie zwróci ci poprawnej długości łańcucha, musisz użyć mb_strlen()...

Powodzenia.
wojtekwro
niestety ten pomysł nie działa ;/ liczy ok zadeklarowaną ilość znaków problem jest tylko z owym "więcej"
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.