Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ShoutBox.... problem z odświeżaniem
Forum PHP.pl > Forum > Gotowe rozwiązania
Shahow
Na strone pisze shoutboxa. Skrypt jest zmodyfikowany z jednej księgi gości opartej na txt. I dobrze jest, działa ok, tylko, że jedno mnie wkurza. Po wysłaniu wiadomości otwiera sie nowa strona z wpisami i nowym wpisem. Ale ta strona (shoutbox.php) jest w ramce plywającej, która jest umieszczona w pliku index.php. Prosze Was, by mnie nakierować jak napisać kod, by po wysłaniu wiadomości odświeżyła sie strona shoutbox.php, która jest w ramce pływającej, bez zbędnych otwierających sie okien. Ewentualnie odświeżenie całej strony index.php.

index.php
  1. <?php
  2. <table width=&#092;"100%\" height=\"100%\" border=0 cellpadding=\"0\" cellspacing=\"0\">
  3.           <tr><td height=&#092;"200\">
  4.             <div align=&#092;"center\">
  5.               <iframe name=&#092;"shoutbox\" src=\"shoutbox.php\" width=\"126\" frameborder=\"0\" scrolling=\"auto\" height=\"100%\"></iframe>
  6.               </div></td></tr>
  7.           <tr><td align='center'><form class='form' METHOD=POST ACTION=shoutbox.php?id=add_msg>
  8.           <input name=autor_msg type=text class=form value=autor><br>
  9.           <input name=wpis_msg type=text class=form value=treść><br>
  10.           <input type=submit name=add-msg value=wyslij class=form></form></td></tr></table>
  11.           </div></td>
  12.         </tr><tr><td height=&#092;"8\" background='menu_logend.gif'></td>
  13.       </table>
  14. ?>


shoutbox.php
  1. <? if ($id==add_msg) {
  2.  
  3. $plik_box = &#092;"msg.txt\";
  4. $wpis_box = &#092;"<p><b>$autor_msg</b><br>$wpis_msg</p>\";
  5. $myFile2 = fopen($plik_box, &#092;"r+\");
  6. $wpis_box=$wpis_box.fread($myFile2, filesize($plik_box));
  7.   rewind($myFile2);
  8.   fputs($myFile2, $wpis_box);
  9.   fclose($myFile2);
  10. }
  11.  
  12.  $plik_box = &#092;"msg.txt\";
  13.   $myFile2 = fopen($plik_box, &#092;"r\");
  14.   $k=1;
  15.   $end=$st+29;
  16.   while(!feof($myFile2))
  17.    {
  18.      $myLine2 = fgets($myFile2, 2000);
  19.      if ($k>=$st) {
  20.         if ($k<=$end) {
  21.  
  22.                 print(&#092;"$myLine2\");
  23.         };
  24.      };
  25.      $k++;
  26.    }
  27. ?>
vala
header() ?
ReeV
A nie lepiej umieścić wszystko w jednym pliku (niech to będzie plik shoutbox.php) czyli formularz na pola, funkcje (czyli dodawanie wpisu do bazy czy określonego pliku tekstowego), oraz funkcję wyświetlania wpisów.

Wtedy sprawa była by bardzo prosta. Includował byś ten plik (shoutbox.php) na odpowiednią stronę (załóżmy, że jest to strona główna czyli index.php) i wtedy dajesz

Kod
<form action="index.php" method='post'>


i przy daniu posta odrazu będzie ci się strona z wpisami odświeżać i będziesz widział nowy wpis bez jakiś tam zabaw z odświeżaniem.
Shahow
EDIT!!!! :
Ok juz wszystko działa! Tylko teraz plik jest includowany. I tabela bedzie sie bardzo rozciagac w pionie. Więc chciałbym, by np 30 wpisow aktualnych było, a reszta przepadała, lub była w pliku, ale nie wyswietlana. Plik msg.txt: jeden wpis = jedna linia.
Wave
Zrób warunek:
  1. <?php
  2. $a = file(msg.txt);
  3. if(count($a) >= 30) {
  4. function file_DeleteLine ($filename, $index) { 
  5.     $file = file ($filename); 
  6.     $fp = fopen ($filename, &#092;"w\"); 
  7.     flock($fp, LOCK_EX); 
  8.     for( $w = 0; $w < count($file); $w++ ) 
  9.     { 
  10.       if ($index <> $w) 
  11.         fwrite ($fp, $file[$w]); 
  12.     } 
  13.     flock($fp, LOCK_UN); 
  14.     fclose($fp); 
  15.   } 
  16. file_DeleteLine('msg.txt', 0); // albo zamiast 0 - count($a) jeżeli najstarsze wpisy są na końcu.
  17. }
  18. ?>
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-2024 Invision Power Services, Inc.