Statistik / Counter Problem

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

  • Statistik / Counter Problem

    Hallo.

    ich habe ein einfachen Counter in mein Script eingebaut, das funktioniert alles einwandfrei, Wenn ich einen neuen Datensatz im Administrationsbereich erstelle erstellt es mir im Statistiordner einen neue Leere TXT datei, mit der ID des neuen Eintrags. sobald jemand den Datensatz öffnet, greift der Counter auf die Statistikdatei zu, liest den aktuellen wert aus, erhöht in um eins, und schliesst das ganze wieder.

    Wie gesagt das funktioniert alles. nur das Problem, das wenn ich dannn mal 20 Datensätze habe, hab ich auch 20 Statistikfiles mit dem namen 0001.txt, 0002.txt etc.

    was ich ja nachher auf einer eigenen Statistikseite anzeigen lassen will. das kanze ist so etwas unüberischtlich.

    es sollte doch machbar sein, das man nur ein Statistikfile hatt, un da die einträge getätigt werden können.

    um das ganze etwas überichtlich zu machen, müsste z.B. die ID aus der DB gesucht werden, und dann hinter dem | die Zahl um eins erhöht werden.

    aber wie erstelle ich solch eine abfrage, nun mit eine if schleife, ? hilfe!!!
    so sollte die Statistik Datenbank nachher aussehen
    $ID|counterzahl

    mein Jetztiger Counter:

    PHP-Code:
    $file "statistik/$ID.txt";

    $ftp = @fopen($file,"r+");

    $count = (int)fgets($ftp,10);

    $count++; // Counterstand wird um 1 erhöht

    rewind($ftp); 
    fwrite($ftp,$count);

    fclose($ftp); 
    Danke für eure Tipps.

  • #2
    - mit file() liest du eine textdatei zeilenweise in ein array ein.
    - mit einer schleife (etwa foreach) gehst du das array durch, zeile für zeile
    - nimmst jede zeile mit explode() auseinander und findest so die zeile, die geändert werden muss.
    - änderst die zahl
    - setzst ggfs. die zeile wieder zusammen
    - führst das array mittels implode() wieder zusammen (nach zeilenumbrüchen) und erhältst eine string variable
    - diese speicherst du wie gewohnt in die textdatei

    Kommentar


    • #3
      Hallo, ist leider schon zu viel.

      das foreach versteh ich nicht,

      das tönt alles so einfach, "und findest so die zeile..."

      brauche weitere unterstützung

      mfg

      Iloveratte

      Kommentar


      • #4
        Also Projekthilfe, oder versuchst du es wenigstens erstmal?

        Kommentar


        • #5
          http://de.php.net/manual/en/control-...es.foreach.php
          ist aber genau so gut wie alle anderen schleifen: http://de.php.net/manual/en/language...structures.php

          Kommentar


          • #6
            Werde morgen die sahcen mal in angriff nehmen, und Probieren.

            melde mich dann

            Iloveratte

            Kommentar


            • #7
              So, ich bin nun sie mittag wider zuhause. und hatte zeit mal was auszuprobieren. allerdings verstehe ich das mit der schleiffe nicht,

              nun ich hab mein bisheriges Script mal angehängt

              Bitte hellft mir da weiter.

              PHP-Code:
              <?php

              $datenbank 
              "statistik.txt";

               
              $array fopen ($datenbank"r");

                  foreach(
              $array as $line)
                        {
                             
              $splitt[0]|$splitt[1]
                             }
                 }

              $splitt explode("|",$line);  

              $splitt[1] = "0";

              $splitt[1]++;

              $newarray implode(splitt[0"|" $splitt[1]);

               
              fwrite ($array $neuersender);
               
              fclose ($array);
              ?>
              mfg Iloveratte

              Kommentar


              • #8
                immer schön langsam: wenn du meine erste antwort als schrittweise anleitung ansiehst, so beachte auch, dass die funktionen, die ich genannt habe, auch gemeint habt. und von fopen() hab ich im ersten schritt nicht geredet.

                Kommentar


                • #9
                  hm, ist das denn nicht das gleiche öffnen ist doch öffnen oder nicht?

                  PHP-Code:
                  <?php

                  $datenbank 
                  "statistik.txt";

                  $array file('$datenbank');
                  also nun hab ich das. und nun die super schleife..

                  Kommentar


                  • #10
                    Anbei die suuuuuper Schleife
                    PHP-Code:
                    foreach($array as $wert){
                        
                    $temp explode('|',$wert);
                        
                    $temp[1] = intval($temp[1]) + 1    
                        
                    //Rest des Codes also Array neu erstellen und in die Datei schreiben

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Hallo, also

                      ich verstehe das nicht

                      "$array as $wert" ich meine $array ist doch eine Zeile in der DB oder? und was bedeutet "as" $wert?

                      "$temp = explode('|',$wert);"

                      damit wird der String an | geteilt und die eintelnen segmente als $temp[0] $temp[1] angesprochen oder?

                      und nun muss ich nach der "}" oder da wo du deinen Comentar reingeschrieben hast weitermachen?

                      also fehlt nach meiner auffassung nur noch die zusammenfürung und das Schreiben oder?
                      -----------
                      PHP-Code:
                      $newarray implode('|'$temp[1]);

                       
                      fwrite ($array $newarray);
                       
                      fclose ($array); 
                      Gruss Iloveratte

                      Kommentar


                      • #12
                        1. im offiziellen manual findest du ausführliche erklärungen zu foreach - frag nicht nach kleinigkeiten, die im manual stehen, sondern bemühe die suche.

                        2. erstz setzst du die zeile zusammen, die du auseinander genommen hast.

                        3. dann setzst du den gesamten datei-inhalt wieder zusammen, der aus einzelnen zeilen besteht.

                        dann erst schreiben. ok?

                        Kommentar


                        • #13
                          Also punkt 2

                          ich füge die auseinander genommene zeile nun wider in das Newarray.

                          PHP-Code:

                          $newarray 
                          implode('|'$temp[1]); 
                          dann setzst du den gesamten datei-inhalt wieder zusammen
                          wie soll das gehen? $wert?

                          und dann
                          PHP-Code:
                          fwrite ($array $newarray);
                           
                          fclose ($array); 

                          Kommentar


                          • #14
                            zu 2: nein, implode arbeiter mit einem array, nicht mit einem array-element (in deinem fall string). sprich: das zweite argument ist falsch.

                            Kommentar


                            • #15
                              Hm, nun versteh ich dann gar nix mehr.

                              habe gerade mal gegooglet

                              und diese seite http://www.computer-tipps.net/webdesign80.html
                              da heisst es: Arrayelemente zu einem String zusammenfügen

                              das ist ja das gleiche, wie ich gemacht habe, resp wollte. ebenfals mit Implode.

                              wie kannst du da nur den überblick behalten?

                              Iloveratte

                              Kommentar

                              Lädt...
                              X