Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System newsów i więcej!
Forum PHP.pl > Forum > PHP
lukaasek
Witam!!
Mam taki oto problem mam zrobiony system newsów oparty na mysql...wyświetlanie newsów wygląda tak:
  1. <?php
  2. // lacze sie z baza
  3. mysql_connect ("localhost", "root", "krasnal") or 
  4.  die ("Nie można połączyć się z bazą MySQL");
  5.  mysql_select_db ("baza") or 
  6.  die ("Nie można połączyć się z bazą danych");
  7.  
  8. if(intval($_GET['newsid']))
  9. {// powrot do wszystkich newsow 
  10. echo '<p><a href="index.php"><b>Najnowsze newsy</b></a></p>';
  11. // pobieram newsa
  12. $sql="SELECT DATE_FORMAT(dodano, '%e-%m-%Y %H:%i') AS utworzono, autor, tresc FROM newsy WHERE id='".intval($_GET['newsid'])."'";
  13. $query=mysql_query($sql);
  14. if($result=mysql_fetch_assoc($query))
  15. {
  16. // zawartosc newsa
  17. echo '<p>'.nl2br($result['tresc']).'</p>';
  18. // autor
  19. echo '<p><i>'.$result['autor'].' ('.$result['utworzono'].')</i></p>';
  20. // oddzielam od komentarzy
  21. echo '<hr>Komentarze:<br>';
  22.  
  23. // dopisuje komentarz do bazy
  24. if($_POST)
  25. {if((trim($_POST['autor'])) && (trim($_POST['tekst'])))
  26. {
  27. if(mysql_query("INSERT INTO komentarzenews VALUES('', '".intval($_GET['newsid'])."', 
  28. NOW(), '".trim(htmlspecialchars($_POST['autor']))."', '".trim(htmlspecialchars($_POST['tekst']))."')"))
  29. echo 'Dodałem komentarz';
  30. else echo 'Nie mogłem dodać komentarza';
  31.  
  32.  
  33. }
  34. else echo 'Nie dopisałem komentarza - podaj swoje imię i wpisz jakiś komentarz!';
  35. echo '<br>';
  36.  
  37. }
  38. // pobieram komentarze do newsa od najstarszego do najnowszego
  39. $sql="SELECT DATE_FORMAT(dodano, '%e-%m-%Y %H:%i') AS utworzono, autor, tresc FROM komentarzenews WHERE id='".intval($_GET['newsid'])."'";
  40. $query=mysql_query($sql);
  41. while($result=mysql_fetch_assoc($query))
  42. {
  43. print('<p>'.nl2br($result['tresc']).' ('.$result['autor'].'/'.$result['utworzono'].')</p>');
  44. }
  45. // formularz do dodawania komentarza
  46. ?>
  47. <hr>
  48. <form name="komentarz" method="post" action="index.php?newsid=<? echo intval($_GET['newsid']); ?>">
  49.  Dodaj komentarz:<br>
  50.  <textarea name="tekst" rows="5" cols="40"></textarea><br>
  51.  Autor:<br>
  52.  <input type="text" name="autor"><br>
  53.  <input type="reset" value="wyczysć"> <input type="submit" value="wyslij">
  54. </form>
  55. <?
  56.  
  57. }
  58.  
  59. }
  60.  
  61.  // pobieram newsy w kolejnosci od najnowszego do najstarszego
  62. // przy pomocy zlaczenia z drugiej tabeli wyciagam ilosc komentarzy dla każdego ne
    wsa
  63.  $sql="SELECT newsy.id, DATE_FORMAT(newsy.dodano, '%e-%m-%Y %H:%i') AS utworzono, 
  64. newsy.autor, newsy.tresc, COUNT(lp) AS il_kom 
  65. FROM newsy 
  66. LEFT JOIN komentarzenews ON (komentarzenews.id=newsy.id) 
  67. GROUP BY newsy.id ORDER BY newsy.dodano DESC";  
  68.  
  69.  
  70.  
  71.  
  72. $query=mysql_query($sql);
  73. if( mysql_num_rows( $query ) > 0 )
  74. {
  75. while($result=mysql_fetch_assoc($query))
  76. {
  77. // zawartosc newsa
  78. echo '<p>'.nl2br($result['tresc']).'</p>';
  79. // autor
  80. echo '<p><i>'.$result['autor'].' ('.$result['utworzono'].')</i></p>';
  81. // ilosc komentarzy i link do nich
  82. echo '<p><a href="index.php?newsid='.$result['id'].'">Komentarze: ('.$result['il_kom'].')</a></p>';
  83. // oddzielam od pozostalych
  84. echo '<hr>';
  85. }
  86. }
  87.  
  88.  
  89.  
  90.  
  91. ?>




No i tu mam coś takiego ze jest link do komentarzy i one się wtedy otwierają...a ja chciałbym to przerobić żeby było link do Wiecej....a na stronie głownej pokazywało się tlyko np 300 znaków newsa a dopiero jak klikniemy na więcej to by się pokzaywał caly news z komentarzami...

Macie może pomysł jak to przerobić??
Z góry dzięki i pozdrawiam!! snitch.gif
em1X
jaki problem uciąć ten tekst?
lukaasek
Hmm..no i jak by to mialo wygladac? blinksmiley.gif
mike
Cytat(lukaasek @ 11.06.2006, 10:27 ) *
Hmm..no i jak by to mialo wygladac? blinksmiley.gif

Dwie lewe ręce?
Przecież masz gotową funkcję, nie podoba się to proszę:
  1. <?php
  2. /**
  3.  * Purpose: Truncate a string to a certain length if necessary,
  4.  *  optionally splitting in the middle of a word, and
  5.  *  appending the $etc string.
  6.  * @param string
  7.  * @param integer
  8.  * @param string
  9.  * @param boolean
  10.  * @return string
  11.  */
  12. function truncate($string, $length = 80, $etc = '...', $break_words = false)
  13. {
  14. if ($length == 0)
  15. return '';
  16.  
  17. if (strlen($string) > $length) {
  18. $length -= strlen($etc);
  19. if (!$break_words)
  20. $string = preg_replace('/s+?(S+)?$/', '', substr($string, 0, $length+1));
  21.  
  22. return substr($string, 0, $length).$etc;
  23. } else
  24. return $string;
  25. }
  26.  
  27. ?>

Działa troszkę ładniej.

Reszta tak jak napisałeś:
1. Newsy są filtrowane jedną z powyższych funkcji i wyświetla się tylko fragment każdego.
2. Klikasz na jakiś link "więcej" i pokazujesz całego newsa, bez "interwencji" żadną funkcją, która ucina fragment.

Spróbuj sam to przerobić. Narzędzia masz.
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.