Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyciąganie max 250 znaków z tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
Nightwalker
Witam
Pewnie to jest banalne ale nie potrafie sobie z tym poradzic, korzystajac z roznych poradnikow napisalem modul do postnuke ktory wyciaga posty z danej kategorii na moim forum na skrypcie IPB 2.0.4, dziala dobrze ale jest pewien mały problem, mianowicie skrypt wyciąga i wyświetla cały news, jak zrobić aby wyświetlał pierwsze 250 znaków newsa? aha i żeby go zakańczał "..."

Dziękuje za odpowiedź
Pozdrawiam
spenalzo
  1. SELECT CONCAT(SUBSTRING(pole,1,250),'...') AS pole
  2. FROM tabela
Nightwalker
dzięki, ale nie wiem, u mnie to jakoś nie działa sad.gif może źle to wpisuje... skrypt wygląda tak:

  1. <?php
  2.  
  3. $dbhost = 'localhost';
  4.  
  5. $dbname = 'nazwa_bazy';
  6.  
  7. $dbusername = 'user_bazy';
  8.  
  9. $dbpassword = 'haslo_bazy';
  10.  
  11. $forumpath = 'http://forum.smallville.pl';
  12.  
  13. $forumid = '17';
  14.  
  15. $posts = '5';
  16.  
  17. $emoticons = 'default';
  18.  
  19. $img_dir = 'Yelonero';
  20.  
  21.  
  22. mysql_connect ($dbhost, $dbusername, $dbpassword);
  23. mysql_select_db ($dbname);
  24. $topics = mysql_query ("select* from _ipb_topics where forum_id=".$forumid." order by start_date desc");
  25. $numberPosts = mysql_query ("select* from _ipb_forums where id=".$forumid."");
  26. $maxposts = mysql_fetch_array($numberPosts);
  27. if ($maxposts['topics']<$posts) {$posts=$maxposts['topics'];}
  28. for ($i=0; $i <$posts; $i++)
  29. {
  30. $topicrow = mysql_fetch_array($topics);
  31. $titleid = $topicrow["tid"];
  32. $topictitle = ($topicrow["title"]);
  33. $postq = mysql_query ("SELECT * FROM `_ipb_posts` where topic_id = ".$titleid." order by post_date");
  34. $postfetch = mysql_fetch_array($postq);
  35. $post = $postfetch["post"];
  36. $authorid = $postfetch["author_id"];
  37. $unixdate = $topicrow["start_date"];
  38. $date = date("H:i, j F Y",$unixdate);
  39. $author = $topicrow["starter_name"];
  40. $post = str_replace('<#EMO_DIR#>', $emoticons, $post); 
  41. $post = str_replace('<#IMG_DIR#>', $img_dir, $post);
  42.  
  43. // Zamiana utf-8 na iso-8859-2 (przy znacznikach html)
  44. $post = str_replace('&lt;', '<', $post);
  45. $post = str_replace('&gt;', '>', $post);
  46. $post = str_replace('&quot;', '"', $post);
  47.  
  48. // Zmiana nazw dat z Angielskich na Polskie (niedokończyłem tego jeszcze)
  49. $date = str_replace('February', 'Luty', $date);
  50.  
  51. echo ('<LINK REL="Stylesheet" HREF="http://forum.smallville.pl/style_images/newscss.css" TYPE="text/css">
  52. <style type="text/css">
  53. <!--
  54. .style1 {
  55. font-size: 14px;
  56. font-family: Verdana, Arial, Helvetica, sans-serif;
  57. color: #009900;
  58. }
  59. .style2 {color: #000000}
  60. -->
  61. </style>
  62. <table width="95%" border="0" cellpadding="4" cellspacing="0">
  63. <tr>
  64. <td colspan="2" class="style1"><a href="http://forum.smallville.pl/index.php?showtopic='.$titleid.'">'.$topictitle.'</a></td>
  65. </tr>
  66. <tr>
  67. <td colspan="2" class="style2"><div align="justify">'.$post.'<br />
  68. <br />
  69. </div></td>
  70. </tr>
  71. <tr>
  72. <td align="left" valign="middle" class="style2"><a href="http://forum.smallville.pl/index.php?showuser='.$authorid.'.php">'.$author.'</a> @ '.$date.'</td>
  73. <td align="right" valign="middle" class="style2"><a href="http://forum.smallville.pl/index.php?showtopic='.$titleid.'"><img src="images/print.gif" border="0" alt=""> Komentarze</a></td>
  74. </tr>
  75. </table>
  76. <hr><br />');
  77. }
  78. ?>


Gdzie powinienem to wstawic? worriedsmiley.gif

Pozdrawiam
spenalzo
A gdzie wyciągasz te tematy? Tzn którym zapytaniem?
Nightwalker
tym:

  1. <?php
  2. $postq = mysql_query ("SELECT * FROM `_ipb_posts` where topic_id = ".$titleid." order by post_date");
  3. ?>


smile.gif
spenalzo
  1. <?php
  2. $postq = mysql_query ("SELECT *,CONCAT(SUBSTRING(pole,1,250),'...') as pole FROM `_ipb_posts` where topic_id = ".$titleid." order by post_date");
  3. ?>

Czy to takie trudne? tongue.gif
Nightwalker
niestety, dla mnie to nie jest takie proste sad.gif

użyłem kodu któy mi podaleś i skrypt zwraca błąd

  1. <?php
  2. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/chesterb/public_html/themes/Smallville--/summary.html on line 34
  3. ?>


http://smallville.pl/themes/Smallville--/summary.html

Ps. nie sugeruj się że rozszerzenie jest .html, mam w .htaccess ustawione aby html traktował jako php smile.gif
spenalzo
To daj sobie mysql_error i pokaż jaki błąd wyrzuca.

Oczywiście rozumiem, że zmieniłęś nazwę pola na taką jaką masz w bazie?
Nightwalker
właśnie zapomniałem tongue.gif
Gdyby ktoś nie wiedział, pole to "post"

Dzięki! jesteś wielki biggrin.gif

//Edit
Ten ucinanie posta strasznie wygląda sad.gif można zrobić coś takiego że np pokazuje tekst do kropki a reszte ucina?

Pozdrawki
spenalzo
  1. SELECT CONCAT(SUBSTRING_INDEX(pole,'. ',2),'...') AS pole
  2. FROM tabela

Dostaniesz dwa pierwsze zdania - oczywiście o ile są one poprawnie zakończone, tzn ". " - kropka i spacja.


Edit:
a jak zrobić, żeby pokazywal pierwsze 50 wyrazów zostawiam jako zadanie domowe tongue.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.