Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ostatnie newsy w PSnews
Forum PHP.pl > Forum > Gotowe rozwiązania
banan
Szukałem na forum - znalazłem parę podobnych wątów, ale nie potrafiłem z nich skorzystać (poza tym nie o to mi chodziło) rolleyes.gif

Mam umieszczony na stronie skrypt PSnews i chciałbym się zapytać, czy ktoś ma pomysł na skrypt, który wyświetlał by tytuły np 5 ostatnich newsów z tego systemu (chodzi mi o to, żeby w miejscu wklejenia skryptu wyświetlały się te tytuły)? PSnews jak pewnie wiecie (może i nie) przechowuje newsy w pliku news.txt o takim schemacie:

NUMER||TYTUŁ||TREŚĆ||1082984729(nie wiem co to jest)||1||brak||

Tak więc zależy mi, żeby skrypcik wyciągał 5 pierwszych tytułów. Da się tak zrobić? Wybaczcie, że nie używam terminologi programisty php, ponieważ jestem bardzo początkujący...

Offtopic...
Jak tak patrzę na to, co wyprawiacie z php, to coraz bardziej chce mi się uczyć tego języka (książkę nawet zamówiłem biggrin.gif) - ale niestety czekam dopiero do wakacji (mało czasu sad.gif)
tiraeth
Plik lastnews.php

[php:1:dcf874d7d6]<?php
##########################
## Last News for PSnews ##
##########################
## tiraeth [at] op.pl ##
##########################
## PSNews by Przybek ##
##########################

$PathToNews = "news"; // Nazwa katalogu z PSnews'em
$IndexPath = "index.php"; // Nazwa pliku w którym includujemy newsy (POPRAWIONO)
$NewsList = 5; // Ilość newsów jaka zostanie wyświetlona

$File = file($PathToNews."/news.txt");
for($i=0; $i<count($File); $i++)
{
if($i < $NewsList)
{
$Dane = explode("||", $File[$i]);
$Tytul = $Dane[1];
$Numer = $Dane[0];

echo '<a href="'.$IndexPath.'?function=show_all&no='.$Numer.'">'.$Tytul.'</a>'; // Tworzymy link do newsa (+komentarze)
echo '<br />'; // Dajemy <br /> aby przejsc do nowej linii
}
}
?>[/php:1:dcf874d7d6]

Mam nadzieję, że zadziała... (pisane z głowy).... smile.gif

Do pliku index.php wrzucasz coś takiego:
[php:1:dcf874d7d6]<?php
include("lastnews.php");
?>[/php:1:dcf874d7d6]

i powinno dziobać... Można dodać też datę, autora etc. smile.gif
banan
Super! Działa! Dzięki Tiraeth!
tiraeth
A podaj adres site'u ... smile.gif Pochwal się.. jeszcze go nie widziałem(skryptu) ciekawy jestem jak działa smile.gif
banan
Narazie mam na localu... Od razu kiedy zamieszczę skrypt w necie (razem z "ostatnio na forum") to dam znać. Dzięki jeszcze raz!

Jest jeden problem... Skrypt nie działa. A właściwie jeszcze jeden - chodziło mi o wyświetlenie pięciu najnowszych newsów (oznaczone są one ostatnimi liczbami z liczby ogólnej liczby newsów).

Poprawny skrypt na wyświetlanie najstarszych newsów:
[php:1:443bb32c67]
<?php
$PathToNews = "news"; // Nazwa katalogu z PSnews'em
$IndexPath = "index.php?"; // Nazwa pliku w którym includujemy newsy

$File = file($PathToNews."/news.txt");
for($i=0; $i < 5; $i++)
{
$Dane = explode("||", $File[$i]);
$Tytul = $Dane[1];
$Numer = $Dane[0];

echo '<a href="'.$IndexPath.'?function=show_all&no='.$Numer.'">'.$Tytul.'</a>';
// Tworzymy link do newsa (+komentarze)
echo '<br />'; // Dajemy <br /> aby przejsc do nowej linii
}
?>[/php:1:443bb32c67]
tiraeth
Po wielu rozmowach na PW smile.gif Ostateczna wersja skryptu znajduje się poniżej...

[php:1:02aee6fa30]<?php
##########################
## Last News for PSnews ##
##########################
## tiraeth [at] op.pl ##
##########################
## PSNews by Przybek ##
##########################
## Version v.01.2 ##

$PathToNews = "news"; // Nazwa katalogu z PSnews'em
$IndexPath = "index.php?"; // Nazwa pliku w którym includujemy newsy

$File = file($PathToNews."/news.txt");
$File = array_reverse($File);
for($i=0; $i<5; $i++)
{
$Dane = explode("||", $File[$i]);
$Tytul = $Dane[1];
$Numer = $Dane[0];

echo '<a href="'.$IndexPath.'?function=show_all&no='.$Numer.'">'.$Tytul.'</a>';

// Tworzymy link do newsa (+komentarze)
echo '<br />'; // Dajemy <br /> aby przejsc do nowej linii
}
?>[/php:1:02aee6fa30]
banan
A ja wprowadzam małą poprawkę:
[php:1:59dec4463f]
<?php
##########################
## Last News for PSnews ##
##########################
## tiraeth [at] op.pl ##
##########################
## PSNews by Przybek ##
##########################
## Version v.01.2 ##

$PathToNews = "news"; // Nazwa katalogu z PSnews'em
$IndexPath = "index.php"; // Nazwa pliku w którym includujemy newsy <== poprawka

$File = file($PathToNews."/news.txt");
$File = array_reverse($File);
for($i=0; $i<5; $i++)
{
$Dane = explode("||", $File[$i]);
$Tytul = $Dane[1];
$Numer = $Dane[0];

echo '<a href="'.$IndexPath.'?function=show_all&no='.$Numer.'">'.$Tytul.'</a>';

// Tworzymy link do newsa (+komentarze)
echo '<br />'; // Dajemy <br /> aby przejsc do nowej linii
}
?>[/php:1:59dec4463f]
Mamber
Skrypt PsNews wyświetla na stronie glownej przykladowo 10 news'ow i chcialbym abyscie mi powiedzieli jak zrobic aby ten kod ktory jest podany wyzej wyświetlał np: 5 tutułów starszych news'ow, pod news'ami z treścią...questionmark.gif?
Przyklad:

Kod
//tutaj przykladowo 10 newsow z trescia
TYTUL NEWSA
Treść news'a

TYTUL NEWSA
Treść news'a

TYTUL NEWSA
Treść news'a

// tytuly jako linki do newsow
tytul starszego news'a
tytul starszego news'a
tytul starszego news'a
tytul starszego news'a
ona_15
Mam to samo pytanie, chciałabym aby to wyglądało (te linki wczesniejszych newsow) jak nba stronie: http://fcliverpool.histo.pl/ (to o co mi chodzi znajduje sie na samym dole pod newsami smile.gif)
Ive
ten sam kod tylko zmieniasz:
  1. <?
  2. for($i=0; $i<5; $i++) 
  3. ?>

na:
  1. <?
  2. $start = 5;
  3. $end = 10;
  4.  
  5. for($i=$start; $i<$end; $i++)
  6. ?>


niesprawdzalem ale powinno byc dobrze...
dolmi2
Cytat(banan @ 2004-06-04 16:34:25)
A ja wprowadzam małą poprawkę:
[php:1:59dec4463f]
<?php
##########################
## Last News for PSnews ##
##########################
## tiraeth [at] op.pl ##
##########################
## PSNews by Przybek ##
##########################
## Version v.01.2 ##

$PathToNews = "news"; // Nazwa katalogu z PSnews'em
$IndexPath = "index.php"; // Nazwa pliku w którym includujemy newsy <== poprawka

$File = file($PathToNews."/news.txt");
$File = array_reverse($File);
for($i=0; $i<5; $i++)
{
$Dane = explode("||", $File[$i]);
$Tytul = $Dane[1];
$Numer = $Dane[0];

echo '<a href="'.$IndexPath.'?function=show_all&no='.$Numer.'">'.$Tytul.'</a>';

// Tworzymy link do newsa (+komentarze)
echo '<br />'; // Dajemy <br /> aby przejsc do nowej linii
}
?>[/php:1:59dec4463f]

Więc skrypcik działa, ale jest taki problem, że lista tematów newsów wyświetla się zupełnie niepotrzebnie na postronie z konkretnym newsem, a przydałoby się, żeby ten spis wyświetlał się tylko na stronie głównej. Czy ktoś wie, jak to można zrobić. Dla niekorzystających ze skryptu PsNews zamieszczan kod pliku odpowiedzialnego za wyświetlanie newsów w PsNews.

  1. <?
  2. if(eregi(&#092;"://\", $newspath)){
  3. die(&#092;"Nieautoryzowany dostęp!\");
  4. }
  5. if(!isset($newspath)){
  6. $newspath = &#092;"news\";
  7. }
  8. include(&#092;"$newspath/functions.php\");
  9. $config = confload($newspath);
  10.  
  11. $userlist_f = file(&#092;"$newspath/users.inc.php\");
  12. unset($userlist_f[0]);
  13. unset($userlist_f[count($userlist_f)]);
  14. reset($userlist_f);
  15. while((list($key, $val) = each($userlist_f))&&($logged!=&#092;"true\")){
  16. $expl = explode(&#092;"||\", $val);
  17. $userlist[$expl[0]] = $expl;
  18. }
  19.  
  20. /* FUNKCJE */
  21. function news_wiadomosc($wiadomosc){
  22. global $config;
  23. global $newspath;
  24. return tplparse(array('{WIADOMOSC}'),array($wiadomosc),$config[&#092;"template\"],$newspath,\"wiadomosc.html\");
  25. }
  26. switch($_GET[&#092;"function\"]){
  27.  
  28. /* STRONA GŁÓWNA */
  29. default:
  30. $newsfile = file(&#092;"$newspath/news.txt\");
  31. $count = count($newsfile);
  32. if($config[&#092;"stronicownie\"] != \"off\"){
  33. if(!isset($_GET[&#092;"npage\"])){ $npage = \"1\"; }
  34. else{ $npage = $_GET[&#092;"npage\"]; }
  35. $ilestron = $count/$config[&#092;"stronicowanie\"];
  36. $ilestron = ceil($ilestron);
  37. $begin = $count - $config[&#092;"stronicowanie\"]*($npage-1);
  38. if($begin>$count){ $begin = $count; }
  39. $end = $begin - $config[&#092;"stronicowanie\"];
  40. if($end<0){ $end = 0; }
  41. }
  42. else{
  43. $begin = $count;
  44. $end = 0;
  45. }
  46. for($i=$begin-1; $i>=$end;$i--){
  47. $news = explode(&#092;"||\", $newsfile[$i]);
  48. if($config[&#092;"skracanie\"] != \"off\"){
  49. $news[2] = ps_substr($news[2], $config[&#092;"skracanie\"], \"... <a class=\"granat\" href=\"\".$config[\"adres\"].\"function=show_all&amp;no=$news[0]\">czytaj dalej</a>\");
  50. }
  51. $news[2] = pscode($news[2]);
  52. if($config[&#092;"emoty_news\"] == \"tak\"){
  53. $news[2] = emots($news[2], $newspath);
  54. }
  55. $news[2] = stripslashes($news[2]);
  56. $news[2] = preg_replace(&#092;"'||'s\", \"||\", $news[2]);
  57.  
  58. $news[1] = stripslashes($news[1]);
  59. $news[1] = preg_replace(&#092;"'||'s\", \"||\", $news[1]);
  60.  
  61. //$news[1] = wordwrap($news[1], 50, \" \", 1);
  62. //$news[2] = wordwrap($news[2], 50, \" \", 1);
  63.  
  64.  
  65. $data = date(&#092;"d.m.Y, H:i\", $news[3]);
  66.  
  67. if($config[&#092;"nimgs\"]==\"tak\"){
  68. $img_path = &#092;"$newspath/nimgs/$news[5]\";
  69. if((file_exists($img_path))&&($news[5]!=&#092;"brak\")&&($news[5]!=\"\")){
  70. $news[2] = &#092;"<img src=\"$img_path\" class=\"obrazek2\" alt=\"\" /> \".$news[2];
  71. }
  72. }
  73.  
  74. if(file_exists(&#092;"$newspath/komentarze/$news[0]\")){
  75. $komfile = @file(&#092;"$newspath/komentarze/$news[0]\");
  76. $ilekomentarzy = count($komfile);
  77. }
  78. else{ $ilekomentarzy = 0; }
  79.  
  80. $print_center.= tplparse(array('{TYTUL}','{NEWS}','{AUTOR}','{EMAIL}','{DATA}','{KOMENTARZE}','{ILEKOMENTARZY}'),array($news[1],$news[2],$userlist[$news[4]][3],$userlist[$news[4]][4],$data,$config[&#092;"adres\"].\"function=show_all&amp;no=$news[0]\",$ilekomentarzy),$config[\"template\"],$newspath,\"news.html\");
  81. }
  82. break;
  83.  
  84. /* CAŁOŚĆ NEWSA + KOMENTARZE */
  85. case show_all:
  86. $newsfile = file(&#092;"$newspath/news.txt\");
  87. reset($newsfile);
  88. foreach($newsfile as $news){
  89. $news = explode(&#092;"||\", $news);
  90. if($news[0] == $_GET[&#092;"no\"]){
  91. $news[2] = pscode($news[2]);
  92. if($config[&#092;"emoty_news\"] == \"tak\"){
  93. $news[2] = emots($news[2], $newspath);
  94. }
  95. $news[2] = stripslashes($news[2]);
  96. $news[2] = preg_replace(&#092;"'||'s\", \"||\", $news[2]);
  97.  
  98. $news[1] = stripslashes($news[1]);
  99. $news[1] = preg_replace(&#092;"'||'s\", \"||\", $news[1]);
  100.  
  101. $news[1] = wordwrap($news[1], 50, &#092;" \", 1);
  102. $news[2] = wordwrap($news[2], 50, &#092;" \", 1);
  103.  
  104. $data = date(&#092;"d.m.Y, H:i\", $news[3]);
  105.  
  106. if($config[&#092;"nimgs\"]==\"tak\"){
  107. $img_path = &#092;"$newspath/nimgs/$news[5]\";
  108. if((file_exists($img_path))&&($news[5]!=&#092;"brak\")&&($news[5]!=\"\")){
  109. $news[2] = &#092;"<img src=\"$img_path\" class=\"obrazek2\" alt=\"\" /> \".$news[2];
  110. }
  111. }
  112.  
  113. if(file_exists(&#092;"$newspath/komentarze/$news[0]\")){
  114. $komfile = file(&#092;"$newspath/komentarze/$news[0]\");
  115. $ilekomentarzy = count($komfile);
  116. }
  117. else{ $ilekomentarzy = 0; }
  118.  
  119. $print_center.= tplparse(array('{TYTUL}','{NEWS}','{AUTOR}','{EMAIL}','{DATA}','{KOMENTARZE}','{ILEKOMENTARZY}'),array($news[1],$news[2],$userlist[$news[4]][3],$userlist[$news[4]][4],$data,$config[&#092;"adres\"].\"function=show_all&amp;no=$news[0]\",$ilekomentarzy),$config[\"template\"],$newspath,\"news.html\");
  120. }
  121. }
  122. $print_center.= &#092;"<center>[<a class=\"czerw\" href=\"\". $config[\"adres\"] .\"function=add_kom&amp;no=\". $_GET[\"no\"] .\"\">skomentuj</a>] [<a class=\"czarny\" href=\"\". $config[\"adres\"] .\"\">wróć do newsów</a>]</center><br/>\";
  123.  
  124. if($ilekomentarzy<1){ $print_center.= news_wiadomosc(&#092;"Do tego newsa nie dodano jeszcze żadnego komentarza. Wyraź pierwszy swojš o
    p
  125. nię na teamt tej informacji.<br/>\"); }
  126. else{
  127. reset($komfile);
  128. foreach($komfile as $kom){
  129. $kom = explode(\"||\", $kom);
  130. if($config[\"emoty_kom\"] == \"tak\"){
  131. $kom[1] = emots($kom[1], $newspath);
  132. }
  133. $kom[2] = stripslashes($kom[2]);
  134. $kom[2] = preg_replace(\"'||'s\", \"||\", $kom[2]);
  135.  
  136.  
  137. $kom[1] = stripslashes($kom[1]);
  138. $kom[1] = preg_replace(\"'||'s\", \"||\", $kom[1]);
  139.  
  140. $kom[1] = wordwrap($kom[1], 50, \" \", 1);
  141. $kom[2] = wordwrap($kom[2], 50, \" \", 1);
  142.  
  143. $data = date(\"d.m.Y, H:i\", $kom[4]);
  144.  
  145. $print_center.= tplparse(array('{KOMENTARZ}','{AUTOR}','{EMAIL}','{DATA}'),array($kom[1],$kom[2],$kom[3],$data),$config[\"template\"],$newspath,\"komentarz.html\");
  146. }
  147. }
  148.  
  149. break;
  150.  
  151. /* DODAWANIE KOMENTARZA */
  152. case add_kom:
  153. $banfile = file(\"$newspath/ban.txt\");
  154. $ip = $_SERVER[\"REMOTE_ADDR\"];
  155. $ban = \"false\";
  156. foreach($banfile as $linia){
  157. $linia = explode(\"||\", $linia);
  158. if($linia[0] == $ip){ $ban = \"true\"; }
  159. }
  160. if($ban == \"true\"){
  161. $print_center = news_wiadomosc(\"Przepraszamy, ale nie masz zezwolenia na dodanie komentarza, ponieważ twój a
  162. res IP ($ip) został zablokowany przez administratora.<br/>[<class=\"ziel\" href=\"\".$config[\"adres\"].\"\">wróć do newsów</a>]\");
  163. }
  164. else{
  165. if($_GET[\"do\"] == \"save\"){
  166. $filename = \"$newspath/komentarze/\".$_GET[\"no\"];
  167. if(file_exists($filename)){
  168. $kom_autor = $_POST[\"kom_autor\"];
  169. $kom_email = $_POST[\"kom_email\"];
  170. $komentarz = $_POST[\"komentarz\"];
  171. $kom_autor = strip_tags($kom_autor);
  172. $kom_email = strip_tags($kom_email);
  173. $komentarz = strip_tags($komentarz);
  174. $kom_autor = str_replace(\"|\", \"|\", $kom_autor);
  175. $kom_email = str_replace(\"|\", \"|\", $kom_email);
  176. $komentarz = str_replace(\"|\", \"|\", $komentarz);
  177. $kom_autor = preg_replace(\"'n|rn|r'si\", \"\", $kom_autor);
  178. $kom_email = preg_replace(\"'n|rn|r'si\", \"\", $kom_email);
  179. $komentarz = preg_replace(\"'n|rn|r'si\", \"<br/>\", $komentarz);
  180. $numer = max_l_plik(0, \"||\", $filename)+1;
  181.  
  182. $file = fopen($filename, \"a+\");
  183. flock($file, 2);
  184. $puts = \"$numer||$komentarz||$kom_autor||$kom_email||\".time().\"||$ip||n\";
  185. fputs($file, $puts);
  186. flock($file, 3);
  187. fclose($file);
  188. $print_center = '<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL='.$config[\"adres\"].'\">';
  189. }
  190. else{
  191. $print_center = news_wiadomosc(\"Nie można dodać komentarza - brak pliku z bazą danych do tego newsa.<br/>[<class=\"ziel\" href=\".$config[\"adres\"].\">wróć do newsów</a>]\");
  192. }
  193. }
  194. else{
  195. $print_center.= \"<center>
  196. <form action=&#092;"\". $config[\"adres\"].\"function=add_kom&amp;no=\".$_GET[\"no\"].\"&do=save\" method=post name=formularz>
  197. Autor:<br/><input type=text name=&#092;"kom_autor\"><br/>
  198. Email:<br/><input type=text name=&#092;"kom_email\"><br/>
  199. Komentarz:<br/>&#092;";
  200. if($config[&#092;"emoty_kom\"] == \"tak\"){ $print_center.= list_emots($newspath,\"komentarz\").\"<br/>\"; }
  201. $print_center.= &#092;"<textarea cols=\"30\" rows=\"10\" name=\"komentarz\"></textarea><br/>
  202. <input type=submit value=&#092;"dodaj\">
  203. <br/><class=&#092;"czarny\" href=\"\".$config[\"adres\"].\"\">[rezygnuj]</a>
  204. </form></center>
  205. &#092;";
  206. }
  207. }
  208. break;
  209. }
  210.  
  211. /* WYŚWIETLANIE */
  212. eval(&#092;"?>\".$print_center.\"<?\");
  213.  
  214. ?>
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.