letzter eintrag in tabelle und top 5 ranking

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

  • letzter eintrag in tabelle und top 5 ranking

    Hallo zusammen, ich beschäftige mich noch nicht allzulange mit mySql und PHP.

    Folgendes Problem:

    Ich habe eine Tabelle in der die Spalten deutsch und chinesisch vorkommen.
    (Ist eine Art spezielles Fachlexikon)
    Ich kann bereits in dieser Tabelle nach einem Suchbegriff suchen und mir das Ergebniss ausgeben lassen.
    Dabei werden in einer anderen Tabelle folgende Infos gespeichert:
    -URL(von der die Suchanfrage gestellt wurde)
    -Der Suchbegriff ansich
    -Die Anzahl der Treffer
    -und das Datum mit Uhrzeit

    Das funktioniert wunder bar.

    Jetzt möchte ich eine Art Ranking haben in dem mir der Letzte Eintrag in der DB ausgegeben wird und auch die Top Five der gesuchten Begriiffe.
    Leider fehlt mir jetzt ein passender Lösungsansatz.
    Ich könnte zb. die anzahl der einträe anfragen den datenzeiger auf den letzten datensaz stellen und diesen dann abfragen, oder geht das einfacher? mit den top five weiß ich keinen ansatz....

    wer kann mir helfen?

    Sipart

  • #2
    Re: letzter eintrag in tabelle und top 5 ranking

    letzter eintrag: kombiniere ORDER BY aufs datum bezogen mit LIMIT.


    top five: na dazu bräuchtest du in jedem datensatz wohl noch ein zusätzliches zähler-feld, welches bei jeder verwendung des datensatzes um eins hochgezählt wird.
    auslesen der top five dann wiederum mit ORDER BY und LIMIT ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      vielleicht neue tabelle?

      Danke für die Anwort.
      Das mit dem letzten Beitrag werde ich gleich mal ausprobieren.
      Für das Ranking könnte ich auch eine neue Tabelle nutzen,
      in der jeder suchbegriff enweder wenn noch nicht vorhanden neu eingefügt oder wenn vorhanden ein zähler erhöht wird.
      bräuchte nur ne neue tabelle dafür.
      oder wäre das ungeschickt?
      Sipart

      Kommentar


      • #4
        Re: vielleicht neue tabelle?

        Original geschrieben von Sipart
        Für das Ranking könnte ich auch eine neue Tabelle nutzen, in der jeder suchbegriff enweder wenn noch nicht vorhanden neu eingefügt oder wenn vorhanden ein zähler erhöht wird.
        ach so, du willst das auf die suchbegriffe selbst bezogen haben, und nicht darauf, wie oft jeder datensatz gefunden wird.

        ja, dann ist der ansatz mit einer extra tabelle sogar der bessere.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          hab deinen Beitrag nur überflogen, aber
          PHP-Code:
          mysql_insert_id($dbconnection
          gibt dir den letzten getätigten Eintrag der Tabelle, wobei $dbconnection die Verbindung zur Datenbank ist (also z.B. "$dbconnection = mysql_connect(...);").

          für die Top 5 nimmst du eine eigene Tabelle, in der die Suchbegriffe reinkommen. Jeder Eintrag hat auch ein Zählerfeld. Mit Update Query um 1 erhöhen, wenn der Suchbegriff übereinstimmt, also z.B.
          PHP-Code:
          UPDATE $tbl SET zaehler=zaehler+1 WHERE suchbegriff=$eingegebener_suchbegriff 
          Beim Auslesen
          PHP-Code:
          ...ORDER BY zaehler DESC LIMIT 5 
          und du hast die Top 5!!!

          Kommentar


          • #6
            hm grübel grübel...

            vom Sinn her konnte ich nicht ganz folgen.

            Wo soll jetzt der Zähler her?

            In der Tabelle Hits, wird jede Suchanfrage abgespeichert.

            suchbegriff, Hit (anzahl der Treffer), datum

            Wenn ich die tabelle jetzt update, wo kommt der Zähler hin?

            ich grübel nochn bisserl
            Sipart

            Kommentar


            • #7
              Ausgabe der letzten Suchanfrage....

              ....konnte ganz einfach gelöst werden.

              $sql = "SELECT * FROM `lexi_hits` ORDER BY date DESC LIMIT 1";

              simple wie einfach

              Gruß
              SB

              Kommentar


              • #8
                So sollte das aussehen

                Tabelle Hits:
                id(primary key, auto_inc), suchbegriff, Hit (anzahl der Treffer), datum

                dort fügst du eine Spalte "zaehler" hinzu.

                Angenommen folgende Einträge sind bereits in der Datenbank vorhanden:

                id,suchbegriff, Hit, datum, zaehler

                1, schnauze, 5, 20040918, 13
                2, kaliber, 3, 20040513, 5
                3, kackmichan, 10, 20030725, 20

                So, jetzt kommt jemand auf die Seite, sucht nach "schnauze", dann lautet dein Query nach dem übermitteln der Suchabfrage (angenommen, der String, der aus dem Suchformular kommt, hat die Variable $srchstr)
                PHP-Code:
                $update mysql_query("UPDATE HITS SET zaehler=zaehler+1 WHERE suchbegriff=$srchstr"); 
                Anchließend hat der Eintrag mit dem Suchbegriff "schnauze" die Werte (wobei HIT jetzt angenommen 0 ist, weil keine Treffer)

                1, schnauze, 5, 20040924, 14

                Alle anderen Einträge bleiben unverändert, da keine Übereinstimmung

                Um jetzt die Top 5 auszulesen, lautet dein Query
                PHP-Code:
                $top_5 mysql_query("SELECT id FROM HITS ORDER BY zaehler DESC LIMIT 5"); 
                . Das Ganze dann mittels Array und foreach, while oder for Schleife auslesen und ausgeben.

                Musst du nun noch immer tüfteln???

                Kommentar


                • #9
                  Original geschrieben von deltacon
                  (angenommen, der String, der aus dem Suchformular kommt, hat die Variable $srchstr)
                  PHP-Code:
                  $update mysql_query("UPDATE HITS SET zaehler=zaehler+1 WHERE suchbegriff=$srchstr"); 
                  natürlich noch hochkommata um den string in der query setzen.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    sounds cool

                    Moin....

                    ja leuchtet mir nun alles ein.
                    Vielen Dank

                    Wenn ich noch Fragen habe melde ich mich hier....

                    Sipart

                    Kommentar


                    • #11
                      Top 5

                      Hi,

                      ich habe die Top 5 wie folgt gelöst:

                      SELECT
                      suchbegriff-Spalte,
                      COUNT(suchbegriff-Spalte) AS anzahl_suchbegriffe
                      FROM tabelle
                      GROUP BY suchbegriff-Spalte
                      ORDER BY anzahl_suchbegriffe DESC
                      LIMIT 5

                      Bis demnächst
                      Sipart

                      Kommentar


                      • #12
                        wozu brauchst du das count in der Abfrage?

                        Kommentar

                        Lädt...
                        X