Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sktót newsów na stronie
Forum PHP.pl > Forum > Przedszkole
camelx
Szukałem tego na forum ale jakoś nie mogłem znaleźć.

Mam prosty system newsów oparty o MySQL. Chciał bym zrobić coś takiego, że kiedy wpisuję tekst i ncisnę 2 razy enter (2x<br>) to wtedy na stronie głównej wyświetla się tylko skrót newsa (to co jest przed dwoma <br>) a gdy nacisnę "więcej..." wyświetla mi się cały news.
Wygląda to mniej więcje tak:
Cytat
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean id nibh. Curabitur mollis lorem id orci. Morbi a turpis vel justo suscipit consectetuer.<br>
<br>
----------------to wyświetla się po naciśnięciu na link "więcej..."----------
Phasellus condimentum volutpat justo. Integer nibh. Etiam tristique lobortis pede. Quisque ante metus, ultricies non, bibendum quis, egestas quis, quam. Nullam feugiat.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean id nibh. Curabitur mollis lorem id orci. Morbi a turpis vel justo suscipit consectetuer. Phasellus

Takie rozwiązanie stosowane jest na niektórych stronach, np. na digarcie.
System newsów już mam, chodzi mi tylko o to jak zrobić ten podział newsa który opisałem wyżej ?

PS. Mam nadzię, że dobrze to wyjaśniłem. Będę bardzo wdzięczny za pomoc smile.gif
hwao
tablica explode( '<br><br>', $text );

mozesz zamiast ' dac " i wporwadzic \n
camelx
explode? ale jak mam jej użyć?
Przypomnę, że chodzi mi o to, że zawartość przed <br><br> chcę wyświetlić na stronie główne (to będzie skrót newsów) a resztę (to co jest po <br><br>) chcę wyświetlić dopiero po kliknięciu na "więcej..." (piszę to, bo nie wiem czy dobrze mnie zrozumiałeś).
Był bym wdzięczny za napisanie mi jakiejś (nawet najprostrzej) funkcji do tego, lub dokładniejsze objaśnienie winksmiley.jpg
hwao
  1. <?php
  2.  
  3. $strText = 'Ble ble ....... lala <br><br> a to reszta;-)';
  4.  
  5. $arrEx = explode( '<br><br>', $strText );
  6.  
  7. // wersja skrocona
  8.  
  9. echo $arrEx[0];
  10.  
  11. // wersja full
  12.  
  13. echo $strText;
  14.  
  15. ?>
camelx
hmmm, wyświttla mi się coś takiego
Cytat
Ble ble ....... lala Ble ble ....... lala

a to reszta;-)
dry.gif
Nie jestem zbyt dobry w php więc może pokaże mój system news:
  1. <?php
  2.  
  3.  
  4. $fid = '1';
  5.  
  6.  
  7. $template->set_filenames(array(
  8. 'glowna_news' => 'UT/news.tpl'
  9. ));
  10.  
  11. $sql=&#092;"SELECT `topic_id`,`forum_id`,`topic_title`,`topic_poster`,`topic_time`,`top
    i
  12. _replies`,`topic_status`,`topic_vote`,`topic_type`, `topic_first_post_id` FROM \".TOPICS_TABLE.\" WHERE `forum_id` = \".$fid.\" ORDER BY `topic_type` DESC , `topic_id` DESC LIMIT 3\"
  13.  
  14. $result = $db->sql_query($sql);
  15. if( !$result )die(\"Błąd0\"); 
  16. while( $co = $db->sql_fetchrow($result) ) 
  17. $user_id = $co['topic_poster'];
  18. $post_id = $co['topic_first_post_id'];
  19. $topic_id = $co['topic_id'];
  20. $post_time = $co['topic_time']; 
  21. $replies = $co['topic_replies']; 
  22. $title = $co['topic_title']; 
  23. $status = $co['topic_status']; 
  24. $vote = $co['topic_vote']; 
  25. $type = $co['topic_type']; 
  26.  
  27. $sql1 = \"SELECT `username` from \".USERS_TABLE.\" WHERE user_id like \".$user_id.\" LIMIT 1\"
  28. $result1 = $db->sql_query($sql1); 
  29. if( !$result1 )die(\"Błąd1\"); 
  30. $co1 = $db->sql_fetchrow($result1); 
  31. $nick = $co1['username'];
  32. $avatar = $co['user_avatar'];
  33.  
  34. $sql2 = \"SELECT `post_text`,`bbcode_uid` from \".POSTS_TEXT_TABLE.\" WHERE post_id = \".$post_id.\" LIMIT 1\";
  35. $result2 = $db->sql_query($sql2); 
  36. if( !$result2 )die(\"Błąd2\"); 
  37. $co2 = $db->sql_fetchrow($result2); 
  38. $text= $co2['post_text']; 
  39. $bbcode_uid= $co2['bbcode_uid']; 
  40.  
  41. //dane pobrano 
  42.  
  43. //data dla ludzi a nie timestamp;) 
  44. $data = strftime(\"%d.%m.%@%H:%M:%S\",$post_time); 
  45. //zarejestrowany i nick linkiem do profilu albo napis Gość 
  46. $nick=($user_id != \"-1\") ? \"<A class=s HREF=\"\".$phpbb_root_path.\"/profile.php?mode=viewprofile&u=\".$user_id.\"\">$nick</A>\" : \"Gość\"
  47. //temat linkiem do forum + ewentualnie ankieta/przyklejony/ogłoszenie 
  48. $title=\"<class=\"news-title\" HREF=\"\".$phpbb_root_path.\"viewtopic.php?p=\".$post_id.\"#\".$post_id.\"\">\".$title.\"</A>\"
  49. if($vote==1)$title=\"[Ankieta] \".$title; 
  50. if($type==1)$title=\"<B>Przyklejony: \".$title.\"</B>\"
  51. elseif($type==2)$title=\"<B>Ogłoszenie: \".$title.\"</B>\"
  52. else $title=\"\".$title.\"\"
  53. //wyświetlanie: 
  54.  
  55. // --- MYŚL, ŻE TRZEBA COŚ ZMIENIĆ W TYM FRAGMCIE KODU !!!
  56.  
  57. //zaprzegnijmy BBCode do pracy i pokażmy tresc 
  58. $text = make_clickable($text); 
  59. $text = smilies_pass($text); 
  60. $text = nl2br($text).\"<BR>\"; 
  61. $text = bbencode_second_pass($text, $bbcode_uid); 
  62.  
  63. // ---- KONIEC !!!
  64.  
  65. //no i komentarze link tak jak ODpowiedz na forum (tylko przy niektórych ustawieniach forum nie działa) 
  66. $comment = \"<A HREF=\"\".$phpbb_root_path.\"viewtopic.php?p=\".$post_id.\"#\".$post_id.\"\">Komentarze</A> [\".$replies.\"]\"
  67. $more = \"<A HREF=\"\".$phpbb_root_path.\"viewtopic.php?p=\".$post_id.\"#\".$post_id.\"\">więcej...</A> <BR>\";
  68.  
  69.  
  70. //template by camel
  71.  
  72. $template->assign_block_vars('long', array(
  73. 'TYTUL' => $title,
  74. 'AUTOR' => $nick,
  75. 'DATA' => $data,
  76. 'TRESC' => $text,
  77. 'KOMENTARZE' => $comment,
  78. 'MORE' => $more,
  79. 'AVATAR' => $board_config['poster_avatar'],
  80. )
  81. );
  82.  
  83. //template end
  84.  
  85. }
  86.  
  87. $template->pparse('glowna_news');
  88.  
  89.  
  90.  
  91. ?>


to jest mniej więcej coś takiego...

próbowałem już użyć tego "explode" ale wtedy wyświetlało się zamiast newsa "Array" dry.gif

Dodam jeszcze, że te newsy są zintegrowane z phpBB.

Jak mam użyć tego "explode" w moim skrypcie questionmark.gif
peterj
  1. <?php
  2. $short_text = explode( '<br><br>', $co2[post_text]);
  3. // $short_text['0'] zawiera pierwszą część newsa
  4.  
  5. $text= $co2['post_text']; // cały news
  6. ?>
camelx
A więcj jest tak:
Jeżeli wyświetlam $short_text wyświetla mi się napis "Array"
Jeżeli wyświetlam $short_text['0'] wyswietla mi się cały news bez uwzglądnienia <br> (czyli wszystko w jednym ciągu bez nowych linii) sad.gif

i co ja mam z tym zrobić... ?
hwao
zamien na inny separator bo <br> masz jakies nie jasne problemy (pewnie znaki konca lini ;-) ) na np {koniec} i tyle bedzie latwo i przjezyscie a nie dawno byl temat na temat ;-) {tnij} i nawet byla ulepszona wersja tegoo ze stronicowaniem :-)
krysk
poprawiony kod peterj, powinno działać ;-)
<br> - > <br />


  1. <?php
  2. $short_text = explode( '<br /><br />', $co2[post_text]);
  3. // $short_text['0'] zawiera pierwszą część newsa
  4.  
  5. $text= $co2['post_text']; // cały news
  6. ?>
Kuziu
Jak nie wiesz jak użyć EXPLODE ... to nie wiem czy to Twój system newsów ...
camelx
Kaziu --> przeczytaj mojego pierwszego posta. Napisałem: "Mam prosty system newsów..." a nie "Napisałem sobie prosty system newsów..". Dopiero później użyłem słowa "mój" w sensie, że ja go używam winksmiley.jpg . To jest właściwie taki mod do phpBB (http://www.phpbb.kraina.pl/forum/viewtopic.php?t=1203). Ja go trochę zmodyfikowałem (dodałem kilka rzeczy i dostsosowałem do swoich potrzeb). Fragment kodu, który zamieściłem wyżej jest tylko urywkiem "mojego" systemu.
Dla Twojej świadomości, umiał bym zrobić taki (lub podobny) system newsów. Do tego wcale nie potrzebne było explode.
Ale po co czepiać się szczegółów, przecież nie o to w tym temacie chodzi...

krysk --> To nic nie dało... Wciąż wyświetla mi się cały news, w dodatku bez uwzględnienia enterów (<br>). Może to dlatego, że wcześniej została użyta funkcja nl2br, albo dlatego, że tojest pobierane z bazy danych questionmark.gif Wczoraj długo się z tym męczyłem i nic mi nie wychodzi. Może użyć czegoś innego zamiast explode...?
hwao
  1. <?php
  2.  
  3. $arr = explode( '<br><br>', $text ); // czy czym tam dzielisz nie mozliwe jest jak dzielisz <br><br> zeby to nie pokrojilo dobrze przypatrz sie dobrze kodowi...
  4.  
  5. $text = $arr[0];
  6. $text = make_clickable($text);
  7. $text = smilies_pass($text);
  8. $text = nl2br($text).&#092;"<BR>\";
  9. $text = bbencode_second_pass($text, $bbcode_uid); 
  10.  
  11. ?>
Kuziu
Cytat(hwao @ 2004-11-10 18:43:15)
  1. <?php
  2.  
  3. $strText = 'Ble ble ....... lala <br><br> a to reszta;-)';
  4.  
  5. $arrEx = explode( '<br><br>', $strText );
  6.  
  7. // wersja skrocona
  8.  
  9. echo $arrEx[0];
  10.  
  11. // wersja full
  12.  
  13. echo $strText;
  14.  
  15. ?>

no jak po takim czymś nie wiedziałeś że w 1 zmiennej siedzi krótka wersja a w 2 całość ... to wątpie że byś napisał taki system newsów ...

i przeczytaj dokładnie mojego Nick'a
camelx
Kuziu --> Dlaczego myślisz, że nie wiedziałem...? Skończmy ten OT.

hwao --> nie wiem jakim cudem, ale kiedy pobieram tekst z bazy danych to nie działa (bo jeśli mam tekst w stylu 'Ble ble ....... lala <br><br> a to reszta;-)' to jest ok). myślę, że to jest spowodowane tym, że dane pobierane są z bazy i do tworzenia nowych lini użyte jest nl2br($text)."<BR>" (ale mogę się mylić winksmiley.jpg )
hwao
najlepiej pozbadz sie znakow nowej lini itp pewnie sa one tam wpisane ( wes sobie wyswietl samo zrodlo i zoabacz czy te <br><br> sa pod rzad i tak samo napisane) musisz porpostu pokombinowac (ale i tak radzil bym Ci zamienic te <br><br> na cos lepszego np {tnij} i tyle)
rogrog
a moze tak

  1. <?php
  2.  
  3. $arr = explode( &#092;"nn\", $text ); // dzielimy po nn a nie br - br powstają później po przepuszczeniu przez nl2br
  4.  
  5. $text = $arr[0];
  6. $text = make_clickable($text);
  7. $text = smilies_pass($text);
  8. $text = nl2br($text).&#092;"<BR>\";
  9. $text = bbencode_second_pass($text, $bbcode_uid);
  10.  
  11. ?>
Kuziu
Cytat(camelx @ 2004-11-10 21:50:40)
hmmm, wyświttla mi się coś takiego
Cytat
Ble ble ....... lala Ble ble ....... lala

a to reszta;-)



a no dlatego ...
napisał 2 zmienne pod rząd .. i myślałeś że nie dizała ... dlatego ...
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.