Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Jak zrobić w newsach opcję czytaj dalej..?
Forum PHP.pl > Forum > Przedszkole
sspawlik
Witam. Mam dwa skrypty których kody nie mogę powiązać. Chodzi mi o stworzenie w systemie newsów tzw. zajawki, tzn. na stronie głównej wyświetlają się newsy a w,nich np pierwsze 30 słów, po kliknięciu na newsa, lub na opcję [czytaj dalej...] otworzy nam się cała zawartość.
Przedstawię część kodu który ma na celu wyświetlanie newsa na stronie głównej.


  1. <?php
  2. $baza = mysql_connect($sql_host, $sql_user, $sql_password);
  3.    if ($baza) {
  4.      $wynik = mysql_select_db($sql_baza);
  5.      if ($wynik) {
  6.        if ($sz<>"") {
  7.          $odp = mysql_fetch_array(mysql_query("
  8.            SELECT COUNT(*) FROM $sql_tabela
  9.            WHERE (tresc LIKE '%$sz%' or tytul LIKE '%$sz%')
  10.                   and data<=NOW() "));
  11.          $l_odp = $odp[0];
  12.          $wynik = mysql_query("
  13.            SELECT * FROM $sql_tabela
  14.            WHERE (tresc LIKE '%$sz%' or tytul LIKE '%$sz%') and data<=NOW()
  15.            ORDER BY data DESC LIMIT $start,$l_odp_nastronie
  16.          ");
  17.        } else {
  18.          $odp = mysql_fetch_array(mysql_query("
  19.            SELECT COUNT(*) FROM $sql_tabela WHERE data<=NOW()
  20.          "));
  21.          $l_odp = $odp[0];
  22.          $wynik = mysql_query("
  23.            SELECT * FROM $sql_tabela WHERE data<=NOW()
  24.            ORDER BY data DESC LIMIT $start,$l_odp_nastronie
  25.          ");
  26.        }
  27.      }
  28.      mysql_close($baza);
  29.    }
  30.  
  31.  $wierszy = mysql_num_rows($wynik);
  32.  
  33.    for ($i=0;$i<$wierszy;$i++) {
  34.      $dane = mysql_fetch_array($wynik);
  35.      $data = substr($dane["data"],0,20);
  36.  
  37.  
  38.  
  39.      echo "<a href=\"?id={$dane["id"]}\"><font size='5'>{$dane["tytul"]}</font></a><br>$data<br><br>{$dane["tresc"]}
  40. ?>


gdzie {$dane["tresc"]} wyświetla cały tekst newsa.

tu mam skrypt który niby ma mi to umożliwiać.


  1. <?
  2.  $zdanie = "Tu powinna się załadować cały news z bazy";
  3.  
  4.  function przytnij($zdanie,$ile) {
  5.    $slowa = explode(" ",$zdanie);
  6.    if ($ile>=count($slowa)) $ile=count($slowa);
  7.    else $dod="...";           // tutaj można sformatować jakiś link czytaj całość itp.
  8.    for($i=0;$i<$ile;$i++) $odp .= " ".$slowa[$i];
  9.    return "$odp$dod";
  10.  }
  11.  
  12.  echo przytnij($zdanie,30);
  13.  ?>



Proszę o pomoc bo nie wiem jak to ze sobą połączyć. Pozdrawiam.
KCG
Zrób link do strony, gdzie będziesz wyświetlał news w całości, czyli dodasz do adresu np. id=15 i tam pobierzesz news o id 15, z tym, że nie będziesz używał funkcji przytnij().
hondek
funkcja substr(string, 0, ilosc_znakow) skraca string do pierwszych "ilosc_znakow"
sspawlik
Cytat(KCG @ 23.04.2009, 18:26:07 ) *
Zrób link do strony, gdzie będziesz wyświetlał news w całości, czyli dodasz do adresu np. id=15 i tam pobierzesz news o id 15, z tym, że nie będziesz używał funkcji przytnij().


Wybacz ale nie kumam sad.gif .
U mnie wszystkie newsy mają kolejno id 1, 2, 3 itd. index.php?id=1 , 2, 3, itd.
Linkiem do danego newsa jest sam tytuł. Ale prócz tego chcę aby linkiem była opcja [czytaj dalej...], która załączy się jak napiszę np więcej niż 30 słów.

Cytat(hondek @ 23.04.2009, 18:38:04 ) *
funkcja str_split(string, ilosc_znakow) skraca string do pierwszych "ilosc_znakow"


ok spoko ale jak mam to wkomponować w kod. jak mam to zapisać??
hondek
zrob tak: Pobieraj wpisy newsow z bazy, nastepnie tresc wpisu przycinaj funkcja str_split np. -> str_split($row['tresc'], 300) i pod tym uzyj linka ktory uruchomi skrypt, ktory znowu wyswietli tekst newsa bez przycinania winksmiley.jpg
np.
  1. <a href="mojewww.php?calyNews=idNewsa">Czytaj wiecej</a>
sspawlik
Cytat(hondek @ 23.04.2009, 18:38:04 ) *
funkcja str_split(string, ilosc_znakow) skraca string do pierwszych "ilosc_znakow"


ok ale jak mam to wkomponować w swój kod, jak mam to zapisać?

Cytat(hondek @ 23.04.2009, 18:41:08 ) *
zrob tak: Pobieraj wpisy newsow z bazy, nastepnie tresc wpisu przycinaj funkcja str_split np. -> str_split($row['tresc'], 300) i pod tym uzyj linka ktory uruchomi skrypt, ktory znowu wyswietli tekst newsa bez przycinania winksmiley.jpg
np.
  1. <a href="mojewww.php?calyNews=idNewsa">Czytaj wiecej</a>


Ale u mnie z tego co próbuje zrozumieć wyświetlanie newsów jest w tym kodzie
Kod
$wierszy = mysql_num_rows($wynik);

   for ($i=0;$i<$wierszy;$i++) {
     $dane = mysql_fetch_array($wynik);
     $data = substr($dane["data"],0,20);
  


     echo "<a href=\"?id={$dane["id"]}\"><font size='4'>{$dane["tytul"]}</font></a><br>$data<br><br>{$dane["tresc"]}


i jak ima się ta funkcja str_split($row['tresc'], 300) do tego kodu . podkreślam że końcówka $dane["tresc"] wyświetla właściwy cały news
KCG
W pierwszym kodzie 40linijka, gdzie masz $dane['tresc'] napisz przytnij($dane['tresc']); i potem dodaj link do całego, czyli coś w stylu echo "<a href=\"?id={$dane["id"]}\">czytaj dalej</a>"; (moja sugestia: usuń link z tytułu news'a).
Funkcja przytnij może być - nie utnie słowa, bo sprawdza odstępy.
Na stronie do której prowadzi link dokładnie to samo, co masz, tylko nie używasz funkcji przytnij(), czyli echo $dane['tresc'];
hwastu
A może zamiast przytnij() i przesyłania niepotrzebnej ilości danych mieðzy serwerem a bazą użyj MySQLowego SUBSTRING'a?
http://dev.mysql.com/doc/refman/5.0/en/str...ction_substring
mat-bi
na którym roku archeologii jesteś ph34r.gif
Daiquiri
Ludziska, a zwłaszcza -hwastu-, zerkajcie na daty smile.gif.
modern-web
Nie ma to jak spostrzegawczość ;0
No ale celowo tematy nie są zamykane wink.gif ...
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.