Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Co jest nie tak z tym sktyptem
Forum PHP.pl > Forum > Przedszkole
darkowski
Witam mam problem ze skryptem do komentarzy tzn. nie wiem dlaczego wyświetla mi cały czas napis NAPISAŁ u samej góry no i nie wiem dlaczego jak ktoś w polu gdzie się pisze treść ktoś da ENTER a potem wyślij to się sypie cały komentarz ja bym wolał żeby po naciśnięciu ENTER był dodawany komentarz a nie obniżenie kursora na następną linijke
Mam nadzieje że mnie ktoś zrozumiał poniżej skrypt i z góry dzięki

dodawacz.php
  1. <style type="text/css">
  2. <!--
  3. body {
  4. background-color: #000000;
  5. }
  6. .style2 {
  7. color: #FF0000;
  8. font-weight: bold;
  9. font-size: 18px;
  10. }
  11. #Layer1 {
  12. position:absolute;
  13. left:204px;
  14. top:69px;
  15. width:81px;
  16. height:22px;
  17. z-index:1;
  18. }
  19. #Layer2 {
  20. position:absolute;
  21. left:98px;
  22. top:54px;
  23. width:82px;
  24. height:20px;
  25. z-index:2;
  26. }
  27. .style3 {
  28. color: #FF0000;
  29. font-weight: bold;
  30. }
  31. -->
  32. </style>
  33. <form action="zapis.php" method="POST">
  34. <table width="100%">
  35. <tr>
  36.  <td width="1%"><div align="center"></div></td>
  37.  <td width="99%">
  38.  <div align="center"><span class="style2">Treść</span>
  39.  <textarea name="tresc" cols="20" rows="5" style="width: 252; height: 70;"></textarea>
  40.  </div></td></tr>
  41. <tr>
  42.  <td width="1%"><div align="center"></div></td>
  43.  <td width="99%"> 
  44.  
  45.  <div align="center">
  46.  <span class="style2">
  47.  Autor</span><span class="style2">
  48.  <input name="autor" type="text" value="" size="38" />
  49.  </span></div></td>
  50. </tr>
  51. <tr>
  52. <td >&nbsp;</td>
  53.  <td>
  54.  
  55.  <div align="center">
  56.  <input type="submit" value="Dodaj" />
  57.  </div></td></tr>
  58. </table>
  59.  
  60. <div align="center"><span class="style3">Komentarze sa własnoscia ich  autor&oacute;w. <br />
  61. Autor strony nie ponosi odpowiedzialności za ich tresć!</span>
  62. </div>
  63. </form>
  64. <table class="all" border="0" width="100%">
  65.  <tr>
  66. <td><?php include "wiadomosc.php"; ?></td>
  67.  </tr>
  68. </table>
  69. <meta http-equiv="Pragma" content="no-cache" />
  70. <div align="center"></div>


zapis.php
  1. <style type="text/css">
  2. <!--
  3. body {
  4. background-color: #CCCCCC;
  5. }
  6. a:link {
  7. color: #000000;
  8. text-decoration: none;
  9. }
  10. a:visited {
  11. text-decoration: none;
  12. color: #000000;
  13. }
  14. a:hover {
  15. text-decoration: none;
  16. color: #FF0000;
  17. }
  18. a:active {
  19. text-decoration: none;
  20. color: #FF0000;
  21. }
  22. .style2 {font-weight: bold; font-size: 36px; color: #000000;}
  23. -->
  24. </style>
  25. <p align="center" class="style2">&nbsp;</p>
  26. <p align="center" class="style2">Właśnie dodałeś komentarz</p>
  27. <p align="center"><a href="http://niedojeby.lua.pl/dodawacz2.php"><strong>wr&oacute;ć</strong></a></p>
  28. <?php
  29. setlocale (LC_TIME, "pl_PL");
  30.  $fp=fopen("dane.php","a+");
  31.  flock($fp,LOCK_EX);
  32.  fwrite($fp,$_POST["autor"]."|".$_POST["tresc"]."|".strftime('%e %B %G o %H:%M:%S')."\n");
  33.  flock($fp,LOCK_UN);
  34.  fclose($fp);
  35.  
  36. ?>


wiadomosc.php
  1. <style type="text/css">
  2. <!--
  3. <meta http-equiv="Pragma" content="no-cache" />
  4. body {
  5. background-color: #000000;
  6. }
  7. body,td,th {
  8. color: #FFFFFF;
  9. }
  10. -->
  11. </style><?php
  12.  
  13.  $linia=explode("\n",file_get_contents("dane.php")); // kolejne linie sa zapisywane jako kolejne elementy tablicy "linia"
  14.  
  15.  $ilosc=count($linia); // ilosc linii/newsów
  16.  
  17.  for($c=$ilosc-1;$c>=3;$c--)
  18.  {
  19.  $element=explode("|",$linia[$c]); // kolejne czesci linii sa rozdzielane jako elementy tablicy "element"
  20.  echo '<table><tr><tr><tr><tr><tr><td><span style="color: #FF0000">'.$element[2].'</span></td></tr>';
  21.  echo '<tr><td><span style="color: #FF0000">Napisal: <b></span>' .$element[0].'</b></td></tr></table>';
  22.  echo '<TR><TD>&nbsp;&nbsp;&nbsp;'.stripslashes($element[1]).'</TD></TR>';
  23.  }
  24.  
  25. ?>
bim2
Co do ENTERA, daj zamiast textarea pole input (jak autor) i już smile.gif
darkowski
Juz sprawdze
darkowski
No działa tylko że teraz w polu gdzie się tekst wpisuje zapamiętuje to co było pisane wcześniej. Da się zrobić zeby tego nie pamiętał?
PawelC
Cytat

guitar.gif
darkowski
DZIAŁA WIELKIE DZIĘKI!!
Został tylko problem z tym czemu cały czas pisze NAPISAŁquestionmark.gif czyli to co pisałem na górze w poście
PawelC
Cytat
echo '<tr><td><span style="color: #FF0000">Napisal: <b></span>' .$element[0].'</b></td></tr></table>';

napisz sobie skrypt który po imieniu albo nicku rozpozna płeć winksmiley.jpg Mam gdzieś taki, zaraz poszukam smile.gif
darkowski
Chyba jednak nie wiecie o co mi chodzi najlepiej by było jakbyście weszli na tą strone www.niedojeby.republika.pl i dali na POGADUCHY i zobaczycie wtedy że na górze pisze samo NAPISAŁ choć nikt nie napisał
PawelC
To sprawdzaj czy pola z formularza są wypełnione, jak nie to nie dodawaj do bazy a jak są to dodaj, wystarczy że teraz ktoś naciśnie u Ciebie guzik który dodaje komentarz i będziesz miał kolejne napisał bez jakiego kolwiek tekstu.
darkowski
Ale ja nie wiem jak to zrobić w tym właśnie jest problem
PawelC
na przykładzie inputu autor
  1. <input name="autor" type="text" value="" size="38" />

dla przykładu zrobie tak jeżeli pole autor będzie puste to wyświetli komunikat brak autora etc... a jak będzie to wyświetli kto jest autorem.
  1. <?php
  2. if($autor=='')
  3. print "Uzupełnij pole autor"; 
  4. }
  5. else 
  6. {print $autor;
  7. }
  8. ?>
darkowski
No dobra rozumiem cię ale ten napis NAPISAŁ który się cały czas wyświetla na stronie to nie jest przez to że ktoś wysłał puste pola bo przed chwilą sprawdzałem i jak się wyśle puste pola to jest podana data i kto niby napisał a tamto to nie wiem skąd się wzięło
PawelC
Zrób tak to nie doda Ci pustego wpisu:
  1. <?php
  2. $tresc=$_POST['tresc'];
  3. $autor=$_POST['autor'];
  4. if ($tresc=='') {
  5.  print "Wpisz treść komentarza";
  6. } elseif ($autor=='') {
  7.  print "Uzupełnij pole autor";
  8. } else {
  9.  setlocale (LC_TIME, "pl_PL");
  10.  $fp=fopen("dane.php","a+");
  11.  flock($fp,LOCK_EX);
  12.  fwrite($fp,$_POST["autor"]."|".$_POST["tresc"]."|".strftime('%e %B %G o %H:%M:%S')."\n");
  13.  flock($fp,LOCK_UN);
  14.  fclose($fp);
  15. }
  16. ?>

Wstaw to w miejsce tego:
  1. <?php
  2. setlocale (LC_TIME, "pl_PL");
  3.  $fp=fopen("dane.php","a+");
  4.  flock($fp,LOCK_EX);
  5.  fwrite($fp,$_POST["autor"]."|".$_POST["tresc"]."|".strftime('%e %B %G o %H:%M:%S')."\n");
  6.  flock($fp,LOCK_UN);
  7.  fclose($fp);
  8.  
  9. ?>
darkowski
Fajne to jest tylko to że nadal nie działa tzn jak skasuje wszystkie wpisy z dane.php i wpisze treść komentarza to pierwszego nie wyswietla potem pisze drugi raz to wyświetla tylko NAPISAŁ czyli tak jak wcześniej wogóle nie kumam tego
PawelC
Czemu nie zrobisz tego na bazie byś niemiał takich problemów? BYć może gdzieś Ci wysyła puste zmienne.
I wywal to:
  1. <p align="center" class="style2">Właśnie dodałeś komentarz</p>

Bo nawet jak formularz będzie pusty to komentarza nie doda a Wyświetli że dodano, już lepiej wstaw to pod kod który dodaje komentarz.
Cienki1980
W kodzie pliku 'wiadomosc.php' wpisz
  1. <?php
  2. //zamiast
  3. for($c=$ilosc-1;$c>=3;$c--)
  4. //wpisz
  5. for($c=$ilosc-2;$c>=3;$c--)
  6. ?>


I problem z pustym "Napisał " masz z głowy
darkowski
WIELKIE DZIĘKI JESTEŚCIE WIELCY!!! TO DZIAŁA!!
darkowski
A jeszcze jedno jak zrobić żeby w polu gdzie się pisze treść i się pisze dłuższe zdanie to żeby przechodziło do następnej linijki a nie tak jak teraz wyświetlało w jednym ciągu jak się coś pisze?(chyba wiecie o co chodzi)
darkowski
oto kod w którym trzeba coś zmienić

  1. <style type="text/css">
  2. <!--
  3. body {
  4. background-color: #000000;
  5. }
  6. .style2 {
  7. color: #FF0000;
  8. font-weight: bold;
  9. font-size: 18px;
  10. }
  11. #Layer1 {
  12. position:absolute;
  13. left:204px;
  14. top:69px;
  15. width:81px;
  16. height:22px;
  17. z-index:1;
  18. }
  19. #Layer2 {
  20. position:absolute;
  21. left:98px;
  22. top:54px;
  23. width:82px;
  24. height:20px;
  25. z-index:2;
  26. }
  27. .style3 {
  28. color: #FF0000;
  29. font-weight: bold;
  30. }
  31. -->
  32. </style>
  33. <form action="zapis.php" method="POST">
  34. <table width="100%">
  35. <tr>
  36.  <td width="1%"><div align="center"></div></td>
  37.  <td width="99%">
  38.  <div align="center"><span class="style2">Autor</span>
  39.  <span class="style2">
  40.  <input name="autor" type="text" autocomplete="off" value="" size="38" />
  41.  </span></input>
  42.  </div></td></tr>
  43. <tr>
  44.  <td width="1%"><div align="center"></div></td>
  45.  <td width="99%"> 
  46.  
  47.  <div align="center">
  48.  <span class="style2">
  49.  Treść</span>
  50.  <input type="text" name="tresc" autocomplete="off" cols="20" rows="5" style="width: 252; height: 70;" />
  51.  </div></td>
  52. </tr>
  53. <tr>
  54. <td > </td>
  55.  <td>
  56.  
  57.  <div align="center">
  58.  <input type="submit" value="Dodaj" />
  59.  </div></td></tr>
  60. </table>
  61.  
  62. <div align="center"><span class="style3">Komentarze sa własnoscia ich  autorów. <br />
  63. Autor strony nie ponosi odpowiedzialności za ich tresć!</span>
  64. </div>
  65. </form>
  66. <table class="all" border="0" width="100%">
  67.  <tr>
  68. <td><?php include "wiadomosc.php"; ?></td>
  69.  </tr>
  70. </table>
  71. <meta http-equiv="Pragma" content="no-cache" />
  72. <div align="center"></div>

i co tu zmienić żeby nie pisać w jednnym ciągu?
darkowski
Chyba nikt mnie nie rozumie to wytłumacze jeszcze raz.
Chodzi mi o to żeby w polu gdzie się wpisuje tekst dział tak jakbym to było <tekstarea>tylko z działającym <input> czyli jak ktoś pisze coś dłuższego i dojdzie do końca ramki to od kursor przechodzi o linijke niżej tak samo jak tutaj się pisze tekst to automatycznie przejdzie kursor na dół jak się dojdzei do końca ramki.
Tego to tym bardziej nikt nie skuma(-:
darkowski
Czyli tak jak jesto oknie GG
PawelC
To jest nie realne żeby w polu input text zejść linijke niżej, to nie jest pole textarea że możesz sobie śmigać ile chcesz. A jak już chcesz powalczyć to poczytaj o formularzach html.
darkowski
No to szkoda bede musiał zostawić tak jak jest ale dzieki
PawelC
zobacz to:
  1. <textarea name="nazwa" style="width:200px;height:25px;"></textarea>
o ile o to Ci chodziło, piszesz tekst i jak dojdzie do końca pola to przechodzi do nowej lini a pole wygląda jak te zwykłe input text
darkowski
No mniej więcej o to tylko że teraz jak daje ENTER to przechodzi do następnej linijki a ja chciałbym żeby wysyłało komentarz
PawelC
Do tego służy submit, bo enter to każdy może przez przypadek nacisnąć i Ci wyśle pusty formularz, to będziesz miał więcej spamu niż powinieneś mieć.
darkowski
Chcą żebym zmienił ponieważ jak coś napiszą to odruchowo naciskają ENTER a tu jest tak że jak ktoś da ENTER a potem SUBMIT to się wszystko sypie w tych komentarzach i dlatego chciałem to zmienić
darkowski
Jeżeli zmienie na textarea i ktoś przez przypadek naciśnie Enert i da DODAJ to wyjdzie takie coś jak tu
darkowski
Albo co zrobić żeby w polu TREŚĆ po naciśnieciu ENTER nie zapisywało tego jako następna linia bo np: jak w polu Autor dam Darkowski a w polu TREŚĆ napisze test1 dam ENTER i napisze tes2 to zapisuje mi to tak:

Napisal: test1

13 marzec 2008 o 16:23:55

Napisal: Darkowski
test2

A powinno być

13 marzec 2008 o 16:23:55
Napisał: Darkowski
test1
test2
darkowski
A nie dałoby się tak zrobić jak jest w gg tzn przycisk WYŚLIJ jest tak jakby cały czas wciśnięty i jak się daje enter to wysyła?
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.