Top 10 erstellen

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

  • Top 10 erstellen

    Hallo!

    Ich habe folgendes Problem:

    Ich hab ein textfile als Datenbank und darin sind meine Referer sowie die Anzhl der Hits die von jedem Referer gekommen sind gespeichert.

    Die "Datenbank" ist wie folgt aufgebaut:
    www.seite1.de~100
    www.seite2.de~200
    www.seite3.de~300
    .
    .
    .

    Wie schaffe ich es jetzt mit einer möglichst einfachen Routine eine Liste der 10 oder 5 (oder irgend ne andere zahl) aktivsten Referer zu erstellen? Ist es möglich das ganze variabel zu gestalten, also dass man mal ne top 5, ein anderes mal aber eine top 50 anzeigen könnte?

    Gruß,
    BigFab

  • #2
    Hab leider im Moment nicht viel Zeit, aber hier ein kurze Erklärung wie ich da ran gehen würde:

    Zunächst würde ich einen benutzerdefinierten Typ definieren, der aus einem String "URL" und einer Zahl "Hits" besteht. Dann wird ein Array diese Typs angelegt und in diesem Array alle Einträge der Textdatei gespeichert (dazu muss natürlich jede Zeile per explode/split in ihre zwei Elemente zerlegt werden). Anschliessend wird dieses Array mit einem einfachen Sortieralgorithmus anhand seiner Hits sortiert.
    Wenn du ein sortiertes Array hast, ist es kein Problem variabel die Top10, Top5 oder Top271 anzeigen zulassen ... du musst bei der Ausgabe ja einfach nur mit einer For-Schleife das sortierte Array durchlaufen. Und je nachdem wie weit du die Einträge anzeigen lassen willst, lässt du diese Schleife laufen ....

    Ich hoffe ich konnte dir weiterhelfen ... für codebeispiele habe ich aber wie gesagt im Moment keine Zeit ...
    [color=red]Geht nicht[/color] ist keine Fehlermeldung

    Kommentar


    • #3
      Meine Variante.. bitte verbessern falls es einfacher geht...
      PHP-Code:
      <?PHP
      $anzahl 
      3;//Anzahl Einträge anzeigen
      $datei "./db/news.store.php"
      $trennzeichen "~"
      $zeile =  file($datei); 

          for(
      $i=0;$i<(sizeof($zeile));$i++) 
          { 
            if((
      $zeile[$i] != "")||($zeile[$i] != "\n")) 
              { 
              
      $eintrag =  explode($trennzeichen,$zeile[$i]); 
              
      $sortiert[$eintrag[0]] = $eintrag[1];
              }   
           }
      arsort($sortiert,SORT_NUMERIC);
        for(
      $i=0;$i<$anzahl;$i++)
          { 
          list(
      $schluessel,$inhalt) = each($sortiert); 
          echo 
      $schluessel." ".$inhalt."<br>";
          }
      ?>
      _____________
      Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
      [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

      Kommentar


      • #4
        danke für die antwort. leider etwas zu spät, gestern bin ich dann selbst fast zu genau der gleichen lösung gelangt. der einzige unterschied liegt darin, dass ich den array anders sortiere.

        Gruß,
        BigFab

        Kommentar

        Lädt...
        X