Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL

Einklappen

Neue Werbung 2019

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

  • MySQL

    Hallo!

    Ich bin MySQL-Newbie und hätte eine Frage zum Abruf bestimmter Einträge aus der Datenbank.

    Ich möchte mir gerne eine Log-Statistik basteln. Der Eintrag der Seitenaufrufe in die Datenbank stellt kein Problem dar und funzt bei mir auch...

    Zum Abruf der Daten habe ich mir ein Listenfeld zur Auswahl des Jahres sowie 12 Links für je einen Monatsnamen vorgestellt.

    Theoretischer Ablauf: zuerst wähle ich aus dem Listenfeld ein Jahr aus (z.B. 2006) und dann einen Monat durch Klick auf den entsprechenden Link (z.B. April). Dann sollten alle Aufrufe dieses Jahres/ Monats abgerufen und dargestellt werden können a la „Im April 2006 hattest Du XXX Aufrufe.“

    Meine Frage: ist das in dieser Form überhaupt möglich?
    Es geht mir also um das Zusammenspiel zw. Listenfeld und Monatslink, den Befehl zum Abruf der Daten krieg ich dann schon hin.


    Vielen Dank im Voraus,

    mfg Matthias

  • #2
    Re: MySQL

    Zitat von elwood
    [...]
    Meine Frage: ist das in dieser Form überhaupt möglich?
    Es geht mir also um das Zusammenspiel zw. Listenfeld und Monatslink, den Befehl zum Abruf der Daten krieg ich dann schon hin.
    [...]

    Hallo, so ist das durchaus möglich. Das scheint dann aber ehr ins PHP Forum zu passen. Du erstellst ein Formular mit deinem Listenfeld und je nach Auswahl steuert ein PHP Script die SQL Abfrage.

    Kommentar


    • #3
      Wenn du deine Log-Einträge zum Beispiel in dieser Form machst:

      Code:
      log:
      id [INT, auto_increment, primary key]
      page [VARCHAR]
      time [DATETIME, index]
      Kannst du die Anzahl Log-Einträge ganz einfach berechnen:
      Code:
      SELECT COUNT(*) FROM `log` WHERE YEAR(`time`) = 2006 AND MONTH(`time`) = 4

      Kommentar


      • #4
        Hallo!

        Danke erstmal für Eure schnellen Antworten!!!

        Sorry, dass ich mich so spät melde, hatte schlaflose Nächte mit meinem Problem gehabt.

        Also ich habe da jetzt mein Listenfeld mit den Jahreszahlen und 12 -jetzt nicht mehr Monatslinks- sondern grafische SUBMIT-Buttons mit den Monatsnamen.

        Allerdings wurden anfänglich alle Werte der 12 SUBMIT-BUTTONS (im IE) ‚mitgeschickt’, egal welchen ich angeklickt habe.

        Hat eine Ewigkeit gedauert, bis ich auf eine akzeptable Lösung kam: ich habe einfach jedem Button einen Wert in Array-Form zugewiesen. Und jetzt klappt die Übermittlung der Daten!!!

        if (isset($submit[0])) {$month="January";}
        if (isset($submit[1])) {$month="February";}
        if (isset($submit[2])) {$month="March";} usw.

        Theoretischer Ablauf: ich wähle ein Jahr aus dem Listenfeld und übergebe diesen und den Wert des Submit-Buttons an das Auswertungs-Skript. Die Auswertung erfolgt übrigens auf der gleichen Seite, daher:
        <form action="<?php $PHP_SELF ?>" method="POST">

        @ Zergling: mache die Log-Einträge in exakt gleicher Form wie Du, der Abruf der Daten funktioniert aber nicht???

        Wenn ich in phpMyAdmin zwecks Testlauf den Befehl:
        SELECT COUNT(*) FROM statistic WHERE YEAR('time')=2007 AND Month('time')=8 eingebe, erscheint als Ergebnis count(*) 0.

        Der Befehl scheint also richtig zu sein, da keine Fehlermeldung ausgegeben wird, das Resultat ist aber 0.

        Wo könnte der Fehler liegen???

        Vielleicht habt Ihr ja noch eine Idee, ich stehe kurz vorm Ziel.


        Vielen Dank,

        Matthias

        Kommentar


        • #5
          du verwechselst das einfache Anführungszeichen ' nicht mit dem Backtick `

          Der Unterschied ist wie Tag und Nacht:
          Das einfache Anführungszeichen umschließt Strings, Zeichenketten.
          Der Backtick umschließt Bezeichner. Bezeichner für Datenbank-, Tabellen- oder Spaltennamen.

          'time' ist also wirklich time, klar dass hier der Versuch, ein Jahr zu extrahieren fehlschlägt

          `time` bezeichnet in diesem Zusammenhang eine Spalte, diese wird im aktuell selektierten Datensatz gesucht und durch ihren Wert (zum Beispiel die Zeichenkette '2007-08-02' ersetzt). Jetzt kann sehrwohl ein Jahr extrahiert werden.

          Kommentar


          • #6
            @ Zergling

            Dank, Dank und nochmals Dank!!!

            Es kunktioniert!!!

            Ich habe ein MySql-Anfängerbuch, da steht aber von einem Backtick nichts drin.

            Ist das Basiswissen oder habe ich da irgendwas verpasst?

            Wie gesagt, ich bin Newbie!

            Du hast mir SEHR geholfen,

            Matthias

            Kommentar


            • #7
              Die Backticks sind optional. Allerdings entscheidet MySQL dann selbst, für was es deine Bezeichner hält. Das geht fast immer gut. Aber bei Sonderzeichen oder reservierten Worten scheppert es dann halt ohne Backticks.

              Kommentar

              Lädt...
              X