Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]problem z księgą gości
maniek30dg
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.09.2013

Ostrzeżenie: (0%)
-----


Witam, mam pytanie jak zrobić żeby wpisy oddzielała pozioma kreska i pod imię była data wpisu z mniejszą czcionką? jeszcze jest jeden poważny problem, po wpisaniu dłuższego tekstu i wysłaniu go wychodzi on poza wymiary strony, proszę o pomoc.
kod:
  1. <form action="index.php" method="post">
  2. <input name="imie" type="text" value="imie">
  3. <br><input name="email" type="text" value="e-mail">
  4. <br><input name="www" type="text" value="http://">
  5. <br><textarea name="wpis" rows="3" cols="30">wpis</textarea>
  6. <br><input type=submit value=" dodaj! ">
  7. </form>
  8.  
  9. <?
  10. $ksiega = "ksiega.txt";
  11.  
  12. $imie=$_POST["imie"];
  13. $email=$_POST["email"];
  14. $www=$_POST["www"];
  15. $wpis=$_POST["wpis"];
  16.  
  17.  
  18. if (strlen($wpis)>5) {
  19. $f=fopen($ksiega,"a");
  20. $rekord="`$imie`$email`$www`$wpis`";
  21. $rekord=ereg_replace(10," ",$rekord);
  22. $rekord=ereg_replace(13," ",$rekord);
  23. fputs($f,"$rekord\n"); fclose($f);
  24. }
  25.  
  26. $wpisy=file($ksiega);
  27. $wpisy=array_reverse($wpisy);
  28. $ile=count($wpisy);
  29. for ($i=0;$i<$ile;$i++) {
  30. $wpis = explode("`",$wpisy[$i]);
  31. echo "<p>$wpis[1] - $wpis[2] - $wpis[3]<br>$wpis[4]<p>";
  32. }
  33. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
BigPig
post
Post #2





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 18.06.2013
Skąd: Białystok

Ostrzeżenie: (0%)
-----


1) Funkcja ereg_replace jest przestarzała co widać w manualu:
http://www.php.net/manual/en/function.ereg-replace.php

Jej działanie możesz zastąpić funkcją preg_replace albo str_replace.

2) Jeśli chodzi o kreskę to najbardziej prowizorycznie można tak to zrobić, że mając ten kod:
  1. $wpisy=file($ksiega);
  2. $wpisy=array_reverse($wpisy);
  3. $ile=count($wpisy);
  4. for ($i=0;$i<$ile;$i++) {
  5. $wpis = explode("`",$wpisy[$i]);
  6. echo "<p>$wpis[1] - $wpis[2] - $wpis[3]<br>$wpis[4]<p>";
  7. }
  8. ?>


Dodajemy np. zmienną $kreska = "_______________________"; i dodajesz ją np. tu:
  1. echo "<p>$wpis[1] - $wpis[2] - $wpis[3]<br>$wpis[4]<p> $kreska";


Z tego co pamiętam to <p> narzuca nową linię, więc powinno być ok. Jeśli ma to wyglądać o wiele lepiej, to trzeba już się pobawić stylami CSS.

3) Jeśli chodzi o date to na początku sprawdź funkcję "date" i zrób mniej więcej tak:
  1. $imie=$_POST["imie"];
  2. $email=$_POST["email"];
  3. $www=$_POST["www"];
  4. $wpis=$_POST["wpis"];
  5. $data = date()//w date uzupełniasz nawias tak jak chcesz(oczywiście zgodnie ze standardem, poczytaj więcej w manualu).
  6.  
  7. if (strlen($wpis)>5) {
  8. $f=fopen($ksiega,"a");
  9. $rekord="`$imie`$email`$www`$wpis`$data`";
  10. $rekord=ereg_replace(10," ",$rekord);
  11. $rekord=ereg_replace(13," ",$rekord);
  12. fputs($f,"$rekord\n"); fclose($f);
  13. }


Potem, gdy chcesz wyświetlić date to normalnie tu ją wypisujesz oznaczająć jako $wpis[5].(nie analizowałem dokładnie kodu, więc może być to inny element tablicy, ogólnie tak to ma być)

  1. echo "<p>$wpis[1] - $wpis[2] - $wpis[3]<br>$wpis[4]<p> $kreska";


4) Jeśli chodzi o ostatni problem, z długością tekstu. Tutaj też byś się musiał pobawić ze stylami CSS, żeby np. wpakować to co wyrzuca nam pętla for w trakcie odczytywania pliku w DIV'y, a potem poprzez CSS jakoś ładnie to ułożyć w całość.


Na koniec takie trzy rady.
a) Widzę, że raczej na pewno uczysz się PHP z jakiejś książki. To dobrze, ale pamiętaj o tym, że jak książka jest stara, to część przykładów też powinna być inaczej przedstawiona. Np. jak tu widać, autor użył funkcji ereg_replace, której już nie powinno się używać. Bądź wyczulony na takie rzeczy.
b )
  1. $imie=$_POST["imie"];
  2. $email=$_POST["email"];
  3. $www=$_POST["www"];
  4. $wpis=$_POST["wpis"];

Nie musisz tak koniecznie obsługiwać zmiennych formularza. Równie dobrze od razu możesz podawać dane poprzez POST bez wcześniejszego deklarowania zmiennych o tych samych nazwach. Kiedyś miałem podobny nawyk co Ty, było to spowodowane faktem, że autor pewnej książki, robił tak samo (IMG:style_emoticons/default/smile.gif) Praktycznie to raczej nic nie dawało.
c)Kod jest o wiele bardziej czytelny, gdy zamiast układać klamry w ten sposób:
  1. if (strlen($wpis)>5) {
  2. $f=fopen($ksiega,"a");
  3. $rekord="`$imie`$email`$www`$wpis`";
  4. $rekord=ereg_replace(10," ",$rekord);
  5. $rekord=ereg_replace(13," ",$rekord);
  6. fputs($f,"$rekord\n"); fclose($f);
  7. }

Układamy tak:
  1. if (strlen($wpis)>5)
  2. {
  3. $f=fopen($ksiega,"a");
  4. $rekord="`$imie`$email`$www`$wpis`";
  5. $rekord=ereg_replace(10," ",$rekord);
  6. $rekord=ereg_replace(13," ",$rekord);
  7. fputs($f,"$rekord\n"); fclose($f);
  8. }


Jakie to ma znaczenie? Takie, gdy się przegląda kod, który jest bardziej skomplikowany to nie musimy zaznaczać klamer by zobaczyć, które ze sobą są połączone. Wszystko widać na pierwszy rzut oka. Zdecydowanie łatwiej jest się połapać w takim czymś:
  1. if (strlen($wpis)>5)
  2. {
  3. $f=fopen($ksiega,"a");
  4. $rekord="`$imie`$email`$www`$wpis`";
  5. $rekord=ereg_replace(10," ",$rekord);
  6. $rekord=ereg_replace(13," ",$rekord);
  7. fputs($f,"$rekord\n"); fclose($f);
  8. if()
  9. {
  10. switch()
  11. {
  12. }
  13. }
  14. }


Niż w tym:

  1. if (strlen($wpis)>5)
  2. {
  3. $f=fopen($ksiega,"a");
  4. $rekord="`$imie`$email`$www`$wpis`";
  5. $rekord=ereg_replace(10," ",$rekord);
  6. $rekord=ereg_replace(13," ",$rekord);
  7. fputs($f,"$rekord\n"); fclose($f);
  8. if(){
  9. switch(){
  10. }
  11. }
  12. }


Te ostatnie trzy punkty to takie moje drobne rady (IMG:style_emoticons/default/smile.gif)

Ten post edytował BigPig 14.09.2013, 19:22:32
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 21:07