Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z prostą księgą gości
Forum PHP.pl > Forum > Przedszkole
44cichy44
Witam. Zostałem poproszony o edycję kody na ksigę wpisów, ale nie daje rady wiec piszę do Was.

Nie umię zrobić aby dodany tekst przechodził automatycznie do następnej linijki np po 100 znkach.

Zamieszczam początkowy fragment kodu. Dodam że kod zostałpobrany z gotowego pliku.

  1. <?php
  2.  
  3.  
  4. class ksiega_gosci {
  5.  
  6. var $obramowanie; // Grubość obramowania
  7.  
  8. var $szerokosc; // Szerokość skryptu na stronie - formularze i listy wpisów
  9. var $szerokosc_form; // Szerokość opisu formularza
  10. var $szerokosc_note; // Szerokość opisu wpisu
  11. var $szerokosc_navi; // Szerokość opisu paska opisu nawigacji
  12. var $maxsize; // Maksymalna ilość znaków we wpisie
  13.  
  14. var $kolor; // Kolor tła skryptu
  15. var $kolor_lini; // Kolor lini oddzielajacej wpisy
  16. var $kolor_liter_a; // Kolor liter pola autor
  17. var $kolor_liter_n; // Kolor liter pola wpisu
  18. var $kolor_liter_d; // Kolor liter pola daty
  19. var $kolor_liter_ue; // Kolor liter pól Usuń i Edytuj
  20.  
  21. var $wielkosc_lini; // Grubość linii oddzielającej
  22. var $wielkosc_liter_a; // Wielkość liter autor
  23. var $wielkosc_liter_n; // Wielkość liter wpisu
  24. var $wielkosc_liter_d; // Wielkość liter daty
  25. var $wielkosc_liter_ue; // Wielkość liter pól Usuń i Edytuj
  26.  
  27.  
  28. var $file; // Plik z wpisami
  29. var $note_jump; // Ilość wpisów na stronie
  30. var $note_count; // Liczba wpisów w pliku z wpisami
  31. var $isRefreshed; // Czy strona została odświerzona
  32. var $refreshCode; // Kod odświerzania
  33. var $OneNoteLines; // Liczba linii jednego wpisu
  34.  
  35. var $COMMENTS; // Odpowiedzi skryptu na aktywność użytkownika
  36. var $NAVIGATION; // Napisy nawigacyjne
  37. var $FIELD; // Nazwy pól
  38. var $ACTION; // Akcje formularzy
  39.  
  40.  
  41. function ksiega_gosci($file)
  42. {
  43. // Inicjacja wartości domyślnych
  44. $this->obramowanie = 0;
  45. $this->szerokosc = 500;
  46. $this->szerokosc_form = 200;
  47. $this->szerokosc_note = 100;
  48. $this->szerokosc_navi = 300;
  49. $this->maxlen = 15;
  50. $this->maxsize = 500;
  51.  
  52. $this->kolor = "red";
  53. $this->kolor_lini = silver;
  54. $this->kolor_liter_a = black;
  55. $this->kolor_liter_w = silver;
  56. $this->kolor_liter_n = white;
  57. $this->kolor_liter_d = silver;
  58. $this->kolor_liter_g = black;
  59. $this->kolor_liter_ue = black;
  60.  
  61. $this->wielkosc_lini = 5;
  62. $this->wielkosc_liter_a = 3;
  63. $this->wielkosc_liter_w = 3;
  64. $this->wielkosc_liter_n = 3;
  65. $this->wielkosc_liter_d = 2;
  66. $this->wielkosc_liter_g = 3;
  67. $this->wielkosc_liter_ue = 3;
  68.  
  69. $this->file = $file;
  70. $this->note_jump = 10;
  71. $this->OneNoteLines = 5;
  72. $this->note_count = count(file($this->file))/$this->OneNoteLines;
  73. $this->isRefreshed = 0;
  74. $this->refreshCode = md5(date("Y-m-d-H-i-s"));
  75.  
  76. $this->NAVIGATION[0] = "FIRST";
  77. $this->NAVIGATION[1] = "PRIV";
  78. $this->NAVIGATION[2] = "NEXT";
  79. $this->NAVIGATION[3] = "LAST";
  80. $this->NAVIGATION[4] = "EDIT";
  81. $this->NAVIGATION[5] = "DEL";
  82. $this->NAVIGATION[6] = "ADD";
  83. $this->NAVIGATION[7] = "EDIT SAVE";
  84. $this->NAVIGATION[8] = "RESET";
  85.  
  86. $this->FIELD[0] = "AUTHOR";
  87. $this->FIELD[1] = "EMAIL";
  88. $this->FIELD[2] = "WWW";
  89. $this->FIELD[3] = "GG";
  90. $this->FIELD[4] = "NOTE";
  91.  
  92.  
  93. $this->ACTION[0] = "PAGEFIRST";
  94. $this->ACTION[1] = "PAGEPRIV";
  95. $this->ACTION[2] = "PAGENEXT";
  96. $this->ACTION[3] = "PAGELAST";
  97. $this->ACTION[4] = "EDITNOTE";
  98. $this->ACTION[5] = "DELSAVENOTE";
  99. $this->ACTION[6] = "ADDSAVENOTE";
  100. $this->ACTION[7] = "EDITSAVENOTE";
  101. $this->ACTION[7] = "RESET";
  102.  
  103.  
  104. }
  105.  
  106. function setCookieLock()
  107. {
  108. $refreshCode = $_POST['refreshCode'];
  109. $refreshCodeCookie = $_COOKIE['refreshCodeCookie'];
  110.  
  111. if($refreshCode == trim($refreshCodeCookie)) $this->isRefreshed = 1;
  112. if(isset($refreshCode) && $refreshCode != "") setcookie("refreshCodeCookie", $refreshCode, mktime(24, 0, 0, date("m"), date("d"), date("Y")));
  113. }
  114.  
  115. // Funkcja pokazująca wpisy
  116. function wypisz($admin = false)
  117. {
  118. $page = $_POST['page'];
  119.  
  120. $szerokosc1 = $this->szerokosc_note;
  121. $szerokosc2 = $this->szerokosc - $szerokosc1;
  122.  
  123. $szerokosc3 = $this->szerokosc_navi;
  124. $szerokosc4 = $this->szerokosc - $szerokosc3;
  125.  
  126. $note_file = file($this->file);
  127. $note_line_count = count($note_file);
  128. $note_count = $note_line_count/$this->OneNoteLines;
  129.  
  130. if(!isset($page) || (int)$page < 1) $page = 1;
  131.  
  132. $page_count = ceil($note_count/$this->note_jump);
  133.  
  134. $page_first = 1;
  135. $page_priv = $page - 1;
  136. $page_next = $page + 1;
  137. $page_last = $page_count;
  138.  
  139. if($page_priv < 1) $page_priv = 1;
  140. if($page_next > $page_count) $page_next = $page_count;
  141.  
  142. $note_line_from = ($page - 1) * $this->note_jump * $this->OneNoteLines;
  143. $note_line_to = $note_line_from + $this->note_jump * $this->OneNoteLines;
  144. if($note_line_to > $note_line_count) $note_line_to = $note_line_count;
  145.  
  146. //echo "PF: $page_first, PP: $page_priv, P: $page, PN: $page_next, PL: $page_last, PC: $page_count <br>";
  147. //echo "NF: $note_line_from, NT: $note_line_to, NC: $note_line_count <br>";
  148.  
  149. ?>
  150. <script language="Javascript">
  151.  
  152. function pageFirst()
  153. {
  154. document.ksiegagosci.action.value = '<? echo $this->ACTION[0]; ?>';
  155. document.ksiegagosci.page.value = <? echo $page_first; ?>;
  156. document.ksiegagosci.submit();
  157. }
  158.  
  159. function pagePriv()
  160. {
  161. document.ksiegagosci.action.value = '<? echo $this->ACTION[1]; ?>';
  162. document.ksiegagosci.page.value = <? echo $page_priv; ?>;
  163. document.ksiegagosci.submit();
  164. }
  165.  
  166. function pageNext()
  167. {
  168. document.ksiegagosci.action.value = '<? echo $this->ACTION[2]; ?>';
  169. document.ksiegagosci.page.value = <? echo $page_next; ?>;
  170. document.ksiegagosci.submit();
  171. }
  172.  
  173. function pageLast()
  174. {
  175. document.ksiegagosci.action.value = '<? echo $this->ACTION[3]; ?>';
  176. document.ksiegagosci.page.value = <? echo $page_last; ?>;
  177. document.ksiegagosci.submit();
  178. }
  179.  
  180. function noteEdit(noteid)
  181. {
  182. document.ksiegagosci.noteid.value = noteid;
  183. document.ksiegagosci.action.value = '<? echo $this->ACTION[4]; ?>';
  184. document.ksiegagosci.page.value = <? echo $page; ?>;
  185. document.ksiegagosci.submit();
  186. }
  187.  
  188. function noteDel(noteid)
  189. {
  190. if(confirm('<? echo $this->COMMENTS[6]; ?>'))
  191. {
  192. document.ksiegagosci.noteid.value = noteid;
  193. document.ksiegagosci.action.value = '<? echo $this->ACTION[5]; ?>';
  194. document.ksiegagosci.page.value = <? echo $page; ?>;
  195. document.ksiegagosci.submit();
  196. }
  197. }
  198. countNoteChars();
  199.  
  200. </script>
  201. <?
  202.  
  203. $this->COMMENTS[7] = str_replace("<%PAGE%>", $page, $this->COMMENTS[7]);
  204. $this->COMMENTS[7] = str_replace("<%PAGECOUNT%>", $page_count, $this->COMMENTS[7]);
  205. $this->COMMENTS[7] = str_replace("<%NOTECOUNT%>", $note_count, $this->COMMENTS[7]);
  206.  
  207. echo "<form name=\"ksiegagosci\" action=\"$PHP_SELF\" method=\"post\">";
  208.  
  209. echo "<input type=\"hidden\" name=\"noteid\" value=\"\">";
  210. echo "<input type=\"hidden\" name=\"action\" value=\"\">";
  211. echo "<input type=\"hidden\" name=\"page\" value=\"$page\">";
  212. echo "<input type=\"hidden\" name=\"refreshCode\" value=\"".$this->refreshCode."\">";
  213.  
  214. echo "<table cellspacing=\"0\" cellpadding=\"0\" align=\"center\" border=\"0\" width=\"".$this->szerokosc."\">";
  215.  
  216. echo "<tr bgcolor=\"$this->kolor\">";
  217. echo "<td align=\"left\" valign=\"top\" width=\"".$this->szerokosc."\" colspan=\"3\">";
  218.  
  219. echo "<table cellspacing=\"0\" cellpadding=\"0\" align=\"center\" border=\"0\" width=\"".$this->szerokosc."\"><tr>";
  220. echo "<td width=\"$szerokosc3\" align=\"left\">";
  221.  
  222. echo $this->COMMENTS[7];
  223.  
  224. echo "</td>";
  225. echo "<td width=\"$szerokosc4\" align=\"right\">";
  226.  
  227. if($page != $page_first) echo "<a href=\"java script:pageFirst()\">".$this->NAVIGATION[0]."</a>&nbsp;|&nbsp;";
  228. else echo $this->NAVIGATION[0] ."&nbsp;|&nbsp;";
  229.  
  230. if($page != $page_first) echo "<a href=\"java script:pagePriv()\">".$this->NAVIGATION[1]."</a>&nbsp;|&nbsp;";
  231. else echo $this->NAVIGATION[1] ."&nbsp;|&nbsp;";
  232.  
  233. if($page < $page_last) echo "<a href=\"java script:pageNext()\">".$this->NAVIGATION[2]."</a>&nbsp;|&nbsp;";
  234. else echo $this->NAVIGATION[2] ."&nbsp;|&nbsp;";
  235.  
  236. if($page < $page_last) echo "<a href=\"java script:pageLast()\">".$this->NAVIGATION[3]."</a>";
  237. else echo $this->NAVIGATION[3];
  238.  
  239. echo "</td>";
  240. echo "</tr></table>";
markonix
Po 100 znakach? W połowie słowa ma być enter?

Po co w ogóle jakieś odstępy robić w PHP? Jeżeli chcesz aby tekst miał jakąś tam szerokość to zrób to na div (HTML/CSS).
aras785
dziwna ta księga gości smile.gif
44cichy44
Wiem, że dziwna bo taką dostałem znalezioną gotową wersję na internecie.

Chodzi mi o toże powejściu na stronę jakktoś doda komentarz żeby nie pisało wszystkiego w jednej linijce takjak to jest teraz
markonix
Możesz zacząć używać spacji?

Nikt nie widzi jak jest teraz - rozwiń "w jednej linijce".
44cichy44
Nie nabijajcie zbędnych postów. Ktoś pomoże jak zrobic żeby dodawane komentarze nie były w jednej linijce tylko automatycznie przechodziło niżej np po 100 znakach?.
Czy tylko wszyscy nabijają zbędne posty?
Szymciosek
Wg. mnie Twój pomysł można wyrzucić do kosza, ustawiając na 100 znaków może się zdarzyć tak, że utniesz słowo w połowie i przerzucisz do następnej linii co już przekłada się na komfort czytania.
Lepiej zrób tak jak pisali wyżej, ustaw sobie konkretny div np na 300px szerokości i do niego ładuj ten tekst chociażby wyjustowany, wtedy nic nie zostanie byle jak ucięte w połowie i lepiej będzie się czytało.

Pozdrawiam,
Szymon
mimol
Nie jestem pewien czy o to ci chodzi, ale zakładając, że w zmiennej komentarz masz komentarz to można zrobić tak:
  1. $komentarz = substr_replace($komentarz, '<br>',100,0);
markonix
Cytat(44cichy44 @ 16.02.2013, 09:49:57 ) *
Nie nabijajcie zbędnych postów. Ktoś pomoże jak zrobic żeby dodawane komentarze nie były w jednej linijce tylko automatycznie przechodziło niżej np po 100 znakach?.
Czy tylko wszyscy nabijają zbędne posty?

Koleś jesteś bezczelny - podałem Ci logiczne rozwiązanie w moim pierwszym poście to się nawet nie umiesz do niego ustosunkować.

A za posty nikt mi nikt nie płaci, ani nie daje cukierków.
44cichy44
Cytat(mimol @ 16.02.2013, 10:39:38 ) *
Nie jestem pewien czy o to ci chodzi, ale zakładając, że w zmiennej komentarz masz komentarz to można zrobić tak:
  1. $komentarz = substr_replace($komentarz, '<br>',100,0);


Dzięki jak będzie mi działał komp to sprawdzę.

Markonix - jak bym chciał html/css to bym się nie pytał o php
markonix
Co z tego że to dział PHP - może czasem są lepsze rozwiązania i logiczniejsze.
Kod użytkownika mimol nie ma najmniejszego sensu.

Przyjmując 10 znaków zamiast to komentarz będzie wyglądał tak:

Cytat
To jest ba
rdzo długi komentarz.

i czemu to ma służyć?
mimol
@markonix, przecież wystarczy wyszukać ostatnią spację w stringu [0]-[99], i w tym miejscu podzielić. I rozwiązanie wydaje się dobre.
Poza tym takie rozwiązanie JUŻ istnieje nazwa funkcji - wordwarp()
Chociaż sam na jego miejscu użyłbym css =)
markonix
Czemu mi to tłumaczysz? Ja wiem jak prawidłowo podzielić string co X znaków ale nie podaje tu żadnych rozwiązań bo to głupota.
To ma jakiś tam sens przy długich słowach bez spacji ale to też da się w css ogarnąć za pomocą break-word bodajże.
mimol
Cytat
Nie umię zrobić aby dodany tekst przechodził automatycznie do następnej linijki np po 100 znkach.

Chyba jako jedyny podałem kod, który chciał @44cichy44
Cytat
Czemu mi to tłumaczysz?

Ponieważ, napisałeś, że mój kod jest bezsensu. Ja tak nie uważam, idealnie robi to co ma robić.
Cytat
Nie podaje tu żadnych rozwiązań bo to głupota.
To po co w ogóle piszesz?

Wszystkie twoje posty @markonix nie wnaszą nic do tematu
markonix
Co Twój kod robi?
Wstawia po 100 znakach enter - czyli wywala słowo w połowie do drugiej linii - no piękne działanie..
Potem już nic się nie dzieje - bo robi to tylko raz czyli tym bardziej taki skrypt jest bezsensu bo i tak długi komentarz się rozciągnie tylko że w drugiej linijce.

Mój pierwszy post wnosi najwięcej do tematu - robisz DIV i ustalasz jego szerokość - i na tym powinno się to skończyć.
A w przedostatnim podałem nazwę atrybutu css, który pomoże osiągnąć lepiej efekt.

Piękne demo:
http://jsfiddle.net/audetwebdesign/pTH6Y/
44cichy44
I dalej nic,i kombinuje css i php i nic nie mogę zrobić, za każdymrazem text sie nie zwija cobym nie robił, a kodzieznalazłemjeszcze coś takiego

  1. // Funkcja pomocnicza, do eliminacji długich wpisów (maxsize)
  2. function komentarz_normalizacja($note)
  3. {
  4. return substr(trim($note), 0, $this->maxsize);
  5. }
  6.  
  7. // Funkcja pomocnicza, do wyœwietlania informacji wewnštrz zformatowanej tabeli html
  8. function informacja($informacja, $align = "left")
  9. {
  10. echo "<table align=\"center\" cellspacing=\"0\" cellpadding=\"0\" width=\"".$this->szerokosc."\" bgcolor=\"$this->kolor\">";
  11. echo "<tr><td valign=\"top\" align=\"$align\">";
  12. echo "$informacja </br>";
  13. echo "<hr color=\"$this->kolor_lini\" size=\"$this->wielkosc_lini\">";
  14. echo "</td></tr>";
  15. echo "</table>";
  16. }
markonix
Jak się nie zwija to co się dzieje? Wychodzi poza div?
44cichy44
Rozciąga się wszystko automatycznie.
!*!
A zainstalowałeś już tapetę z żółtymi kwiatkami?

Jakbyś nie rozumiał sensu mojego pytania, to uznaj że tak mniej więcej wygląda Twoja odpowiedź. Może jakiś przykład online?
44cichy44
Online projekt mam zabronione pokazywanie. Tylko kod księgi moę dac bo jest powrzechnie dostępny na necie. Co bym nie robił to im dłuższy tekst wpisany w pole i zatwierdzony rozrzesza automatycznie na bok, że z szerokośći np 500px robi mi sie więcej niż powiedzmy z głupa 1500px.
CuteOne
  1. <div>dlugi tekst</div>

Jeżeli nie nadałeś kontenerowi (w tym wypadku jest nim div) ustalonej szerokości to będzie się on rozszerzał do maksymalnej szerokości

  1. <div style="width: 50px">Jeżeli nie nadałeś kontenerowi (w tym wypadku jest nim div) ustalonej szerokości to będzie się on rozszerzał do maksymalnej szerokości</div>

Ten div natomiast będzie zwiększał swoją długość zamiast szerokości.
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.