Ankündigung

Einklappen
Keine Ankündigung bisher.

Php Chatlog am anfangschreiben/ Jquery Aktuelisierung

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Php Chatlog am anfangschreiben/ Jquery Aktuelisierung

    Also ich hab da n Chat geschriben und immernoch probleme damit.
    Im grunde 2 große Probleme:
    1-Die Aktuelisierung.
    Ich weis nich wiso aber Mein chat Aktuelisiert nicht mit Jquery Javascript.
    Ich hab selbst versucht das ganze in eine neue Datei zu tun und selbst über
    Xampp getestet um den fehler am schulserver auszuschließen
    Jedoch ohne erfolg hier die Reload.php
    PHP-Code:
    <?
    ?>
    <html>
     <head> 
    <script type="text/javascript">
         $(document).ready(function() {
           $("#refresh").load("refresh.php");
           var refreshId = setInterval(function() {
              $("#refresh").load('refresh.php?' + 1*new Date());
           }, 1000);
        });
    </script>
    </head> 
    </html>
    <?php
    $timestamp 
    time();
    $datum date("d.m.Y",$timestamp);
    $uhrzeit date("H:i:s",$timestamp);


    echo 
    "<div id='refresh' style='text-align:center;'>";


    echo 
    $uhrzeit
    echo 
    "</div>"
    ?>
    -2
    Mein zweites Problem ist etwas komisch.
    Der text der als Chatnachricht angezeigt wird wird ziemlich analog einfach in eine textdatei geschriben und so wie sie ist komplett in einer Divbox ausgelesen.
    Das problem ist aber wenn die Tabelle mit der Div box voll wird dann muss man immer manuell herunterscrollen und deswegen möchte ich das der Text immer am anfang des Dokuments geschrieben wird.
    Dafür hab ich es so geschrieben:
    PHP-Code:
    $chatlog fopen ("chatmain.log","w");
    fwrite($chatlog"<b>$uhrzeit|<font color='gold'>$username:</font> $text</b>\r\n");
    $chatlog =fclose
    Jedoch wird bei dieser Methode der gesamte Chatlog gelöscht und das geschriebene nicht einmal formatiert
    (da der text einfach ausgelesen wird funktioniert Html deswegen das Html in der Zeile)

    Bitte um schnelle Lösung
    lg Spytrycer

  • #2
    1: Arbeite mal an deiner Rechtschreibung
    2: Deine Reload.php erzeugt eine saubere endlose Schachtelung.
    3: http://de1.php.net/manual/de/function.fopen.php
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      1: Arbeite mal an deiner Rechtschreibung
      2: Deine Reload.php erzeugt eine saubere endlose Schachtelung.
      3: http://de1.php.net/manual/de/function.fopen.php
      Ich fass es nicht ich komme mit einem PROBLEM hierher und ständig sagt mir jemand was das Problem ist.

      Ich habe es NATÜRLICH bereits mit r+ als mode für Fwrite versucht aber es hat nicht funktioniert!
      Es ersetzt die erste Zeile einfach.
      Ich würd das hier doch nicht schreiben wenn ich einfach GOOGLEN müsste!

      Und zu dem Javascript
      2: Deine Reload.php erzeugt eine saubere endlose Schachtelung.
      Ich muss sagen ich hab noch NIE so eine hilfreiche Antwort gesehen also wirklich hattest richtig bock mir zu helfen was?

      Natürlich bin ich noch ein anfänger aber ich hab es ja fertig gebracht mir alles anzueignen aber Javascript ist mir zu umfangreich tut mir leid das ich das nicht können will im Moment.

      Kommentar


      • #4
        Das mit dem Chat hab ich mich jetzt selbst stundenlang hingehockt und es gelöst war ne mords arbeit aber es klappt hier ma das Beispiel beim schreiben von Admins:
        PHP-Code:
        $chatlog2 'chatmain.log';
        //file_put_contents($chatlog2,"<b>$uhrzeit|<font color='gold'>$username:</font> $text</b>\r\n", FILE_APPEND);
        $chatlog fopen ("chatmain.log","w");
        fwrite($chatlog,"$nix");
        $chatlog =fclose;

        $chatlog fopen ("chatmain.log","a");
        fwrite($chatlog,"<b>$uhrzeit|<font color='gold'>$username:</font> $text</br></b> $textvorher");
        $chatlog =fclose
        Im grunde einfach ich hab erst den chat in eine Variable gepackt genannt $chatlogvorher dann die datei geleert und die nachricht und dann den chat vorher reingeklatscht
        *selbst high five*

        Kommentar


        • #5
          Zitat von Spytrycer Beitrag anzeigen
          Ich würd das hier doch nicht schreiben wenn ich einfach GOOGLEN müsste!
          zwar hab ich mich bisher noch nicht näher mit dem Umgang mit Dateien befasst, aber eine 2-minütige Googlesuche brachte mehrere Codebeispiele, bei denen mit fputs() ans Ende einer Textdatei geschrieben wird.


          Ich denke, dass das Einlesen der gesamten Datei und das anschließende Schreiben der gesamten Datei nicht optimal für die Performance ist.

          Kommentar


          • #6
            Vergesst es leute bringt irgendwie nix.
            Lesen ist zu schwer anscheinend

            Kommentar


            • #7
              Zitat von Spytrycer Beitrag anzeigen
              Vergesst es leute bringt irgendwie nix.
              Lesen ist zu schwer anscheinend
              Das einzige Problem ist deine überaus herausragende Arroganz im Stil eines 12 jährigem verwöhntem Kind.

              Was m.white geschrieben hat, ist nämlich vollkommen richtig.
              Schon mal darüber nachgedacht die Datei rückwärts auszulesen?

              1. file
              2. array_reserve
              3. implode
              svenwegner.net

              Kommentar


              • #8
                Zitat von Spytrycer Beitrag anzeigen
                PHP-Code:
                $chatlog =fclose
                *selbst high five*
                Die Hand hättest du dir lieber an den Kopp hauen sollen
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Schön dass du es selbst doch noch geschafft hast, jedoch frage ich mich dennoch, warum aktuelle Logeinträge immer am Anfang der Logdatei geschrieben werden sollen?

                  Wenn du dir mal reguläre Logdateien anschaust, findet sich der aktuellste Logeintrag grundsätzlich am Ende der Logdatei, was ja auch logisch ist, da man z.B. ein Buch oder jede andere Textdatei immer von oben nach unten liest (Alt > Neu).

                  Das was du machst verringert letztendlich nur die Performance des Scriptes, je größer die Logdatei wird, da du immer erst alle(!) bisherigen Logeinträge auslesen musst.

                  Wesentlich performanter ist da die bewährte Lösung:
                  - Neuste Einträge am Ende der Logdatei
                  - Täglich neues Logfile

                  Hier mal ein Beispiel wie das Ganze aussehen könnte:

                  Logger.php
                  PHP-Code:
                  <?php
                  /*
                   * Filename        Logger.php
                   * Author        Steffen Haase
                   * Date            07.03.2014
                   */

                  class Logger
                  {
                      private 
                  $_sLogfile;
                      private static 
                  $_instance null
                      
                      public static function 
                  getInstance()
                      {
                          if (
                  is_null(self::$_instance)) {
                              
                  self::$_instance = new self();
                          }
                          return 
                  self::$_instance;
                      }
                      
                      private function 
                  __construct()
                      {
                          
                  $this->_sLogfile 'log_'.date('d.m.y').'.txt';
                          if (!
                  is_writable($this->_sLogfile)) {
                              
                  touch($this->_sLogfile);
                              
                  chmod($this->_sLogfile0666);
                          }
                      }
                      
                      public function 
                  log($sValue)
                      {
                          
                  $FileHandler fopen($this->_sLogfile'a+');
                          
                  fwrite($FileHandler$sValue);
                          
                  fclose($FileHandler);
                      }

                      public function 
                  getLastLog($iLines 1)
                      {
                          
                  $sOutput '';
                          
                  $aLines file('log_'.date('d.m.y').'.txt'FILE_SKIP_EMPTY_LINES);
                          
                  $aLines array_reverse($aLines);
                          
                  $iCount count($aLines);
                          if (
                  $iLines $iCount) {
                              
                  $iLines $iCount;
                          } 
                          for (
                  $i 0$i $iLines$i++) {
                              
                  $sOutput .= nl2br($aLines[$i]);
                          }
                          return 
                  $sOutput;
                      }    
                  }
                  test.php
                  PHP-Code:
                  <?php

                  ini_set
                  ('display_errors'true);
                  error_reporting(E_ALL);

                  include 
                  'logger.php';

                  $oLogger Logger::getInstance();

                  // write log
                  for ($i 1$i <= 20$i++) {
                      
                  $sText "<b>Logeintrag ".$i.": Lorem ipsum Lari fari</b>\r\n";
                      
                  $oLogger->log($sText);
                  }

                  // get last 5 entries
                  echo $oLogger->getLastLog(5);

                  /* OUTPUT
                   * Logeintrag 20: Lorem ipsum Lari fari
                   * Logeintrag 19: Lorem ipsum Lari fari
                   * Logeintrag 18: Lorem ipsum Lari fari
                   * Logeintrag 17: Lorem ipsum Lari fari
                   * Logeintrag 16: Lorem ipsum Lari fari
                   */

                  ?>

                  Kommentar


                  • #10
                    Also bevor ich irgendetwas weiteres lese erstmal dazu
                    Zitat von Spytrycer Beitrag anzeigen
                    Vergesst es leute bringt irgendwie nix.
                    Lesen ist zu schwer anscheinend
                    Das einzige Problem ist deine überaus herausragende Arroganz im Stil eines 12 jährigem verwöhntem Kind.

                    Was m.white geschrieben hat, ist nämlich vollkommen richtig.
                    Schon mal darüber nachgedacht die Datei rückwärts auszulesen?

                    1. file
                    2. array_reserve
                    3. implode
                    Und an der stelle Applaus denn auch DU kannst anscheinend nicht lesen.
                    Wenn ich mich selbst zitieren darf:
                    Das mit dem Chat hab ich mich jetzt selbst stundenlang hingehockt und es gelöst
                    Zum sweiten kommentar
                    Zitat:
                    Zitat von Spytrycer Beitrag anzeigen
                    PHP-Code:
                    $chatlog =fclose;
                    *selbst high five*
                    Die Hand hättest du dir lieber an den Kopp hauen sollen
                    Ich weis nicht was du meinst oder woher du dieses Zitat herhast aber immerhin jemand der nicht das SCHON GELÖSTE VERSUCHT ZU LÖSEN
                    und man darf sich dochwohl freuen wenn man etwas von allein gelöst bekommt

                    Und @ CPCoder DANKE
                    jemand der ließt und sich mit dem Problem anderer auseinandersetzt DANKE
                    Also zu dem Problem. Natürlich ist das wirklich enorm schlecht gelöst gebe ich zu.
                    Das ganze ist schlicht und einfach: Analog.
                    Nur ich hatte das Problem das ich den Ganzen text genau wie von dir erklärt am Ende einer Log datei schreiben ließ. das warf allerdings irgendwann (nach ca 25postst oder mehreren Bildern oder rumgespiele mit html) das Problem auf das man runterscrollen musste um die neuste Nachricht zu lesen.
                    Und da ich es auch als schöner empfand den Chat von oben lesen zu können und nicht wusste wie automatisch runtergescrollt werden konnte habe ich das nun so gelöst.
                    Aber vielen dank für deine Hilfe.

                    UND NOCHMAL FÜR ALLE DIE NICHT LESEN WOLLEN AKTUELES PROBLEM IST NUR DIE AKTUELISIERUNG MIT Javascript

                    Kommentar


                    • #11
                      1. Mit Javascript selber geht das nicht Stichwort: AJAX (Google Ergebnisse und oh Wunder dass erste Ergebnis! Wenn man dann noch lesen kann und zwar die Kommentare dann hat man den Fehler gefunden!)
                      2. Wer es nicht hinbekommt ein Tutoiral abzupause naja dann selbst schuld!
                      3. Capslock ist Böse! Merk dir das!

                      MFG paulnator2112

                      Kommentar


                      • #12
                        ich glaube du verstehst nicht, dass die Performance von deiner "Lösung" auch noch ein Problem ist.
                        No Sacrifice , no Glory--

                        Kommentar


                        • #13
                          ich glaube du verstehst nicht, dass die Performance von deiner "Lösung" auch noch ein Problem ist.
                          War das nicht klar das meinte ich aber, die performance ist tatsächlich mist, aber es ist lediglich ein eigenes Projekt und soll keine Musterlösung werden.

                          Capslock böse merk ich mir, aber is schon irgendwie gruselig das man noch so viel über ein Thema schreiben kann und nur wenige lesen es.

                          Also so muss die Reload.php dann so ausehen?
                          PHP-Code:
                          <?php
                          $timestamp 
                          time();
                          $datum date("d.m.Y",$timestamp);
                          $uhrzeit date("H:i:s",$timestamp);
                          ?>
                          <html>
                           <head> 
                           </head> 
                           <body>
                              <script type="text/javascript">
                               $(document).ready(function() {
                                 $("#refresh").load("Stuff.php");
                                 var refreshId = setInterval(function() {
                                    $("#refresh").load('Stuff.php?' + 1*new Date());
                                 }, 1000);
                              });
                          </script>

                          </body>
                          </html>
                          Und die Stuff.php dann so?
                          PHP-Code:
                          <?php

                          echo "<div id='refresh' style='text-align:center;'>";
                          $timestamp time();
                          $datum date("d.m.Y",$timestamp);
                          $uhrzeit date("H:i:s",$timestamp);





                          echo 
                          $uhrzeit
                          echo 
                          "</div>"
                          ?>
                          Weil ich möchte das ganze in einer Datei haben wenn es geht

                          Kommentar


                          • #14
                            schreiben
                            PHP-Code:
                            $file fopen("text.txt","a+");
                            fputs($filetime() . "\r\n");
                            fclose($file); 
                            lesen mit unverändertem array
                            PHP-Code:
                            $lines file("text.txt");
                            $count count($lines);
                            for(
                            $i $count-1$i >= 0$i--) {
                                echo 
                            $lines[$i] . "<br>";

                            lesen mit invertiertem array
                            PHP-Code:
                            $reverse array_reverse(file("text.txt"));
                            $count count($reverse);
                            for(
                            $i 0$i<$count$i++) {
                                echo 
                            $reverse[$i] . "<br>";

                            Kommentar


                            • #15
                              Ich werd mich bei gelegenheit dransetzten und versuchen das zu verbessern aber im Moment ist mein Hauptproblem die Aktuelisierung

                              Kommentar

                              Lädt...
                              X