Kleine Probleme/Fragen wegen Datenbankabfrage

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

  • Kleine Probleme/Fragen wegen Datenbankabfrage

    Hi,

    Ich wollte ein Counter Script schreiben aber leider fehlen mir einige Informationen wie man das genau umsetzen kann.

    Problem 1:
    Ich habe eine Tabelle in der Datenbank, links am zeilenanfang steht jeweils das datum und die Spaltennamen haben die Namen der refids.
    Wenn also jemand mit einer bestimmten refid auf die seite kommt soll automatisch überprüft werden ob es eine spalte mit eben diesem namen gibt und den wert gegebenenfalls um 1 erhöhen.
    DIe Frage ist jetzt wie kann ich eine Datenbankabfrage machen, die die refids mit den spaltennamen vergleicht ?

    Probmem2:
    Ich will alle Refids mit zugehörigen Werten ausgeben lassen. Dazu nimmt man ja am besten eine while Schleife um alle Spalten auszulesen.
    Frage1: Wie kann ich den Namen der Spalte als Variable auslesen ?
    Frage2: wie kann ich eine while Schleife machen, die so oft die Daten ausgibt wie spalten vorhanden sind ?

    Mit Zeilen ist es mir klar wie ich die ausgeben kann, das Problem ist in diesem Fall eben, dass es sich um Spalten handelt.

    Vielen Dank für eure Hilfe schonmal im vorraus!

  • #2
    Re: Kleine Probleme/Fragen wegen Datenbankabfrage

    Original geschrieben von tschekowski
    Ich habe eine Tabelle in der Datenbank, links am zeilenanfang steht jeweils das datum und die Spaltennamen haben die Namen der refids.
    unsinniges datenmodell.

    anständig normalisieren, dann gibt's auch weniger probleme.
    Code:
    datum      | refid | zähler
    31.05.2005 | 4711  | 13
    01.06.2005 | 4711  | 4
    01.06.2005 | 1313  | 47
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      das 1. verstehe ich nicht was du da machen willst...

      beim 2. könnte dir ein SHOW COLUMNS FROM tabellenname helfen...

      http://dev.mysql.com/doc/mysql/en/show-columns.html


      http://se2.php.net/manual/en/functio...etch-field.php ist auch toll
      Zuletzt geändert von Shurakai; 01.06.2005, 09:53.
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        wie wahsaga schon sagte: "unsinniges...",

        ... aber wenn du willst, kannst du auch einfach 1 Datensatz auslesen, per foreach die Keys durchlaufen und dabei prüfen, ob die gesuchte Spalte dabei ist. Diese Vorgehensweise kannst du für beide Probleme anwenden.

        oder du setzst einfach die Abfrage ab, ohne zu prüfen, ob die Spalte existiert, dann musst du den eventuell auftretende Fehler manuell abfangen.

        Kommentar


        • #5
          also beim ersten ist es so wie es wahsaga schon gesagt hat nur das da wo refid steht gleich die id steht und in der spalte stehen dann die zugriffe an diesem tag - der vorteil ist, dass man so alle refids gebündelt in einer tabelle hat

          Kommentar


          • #6
            das ist kein vorteil, sondern ein verkorkstes datenmodell.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Original geschrieben von wahsaga
              das ist kein vorteil, sondern ein verkorkstes datenmodell.
              Jo, dieses Datenmodell am besten ohne Umwege in die Tonne treten. Vor Jahren, als ich noch null Ahnung von ner anständigen DB-Struktur hatte, hab ich genau so nen Schrott zusammengeschustert wie du es grad vorhast. Das Ergebnis war ein Teil, das gleich mal ein paar Sekunden gebraucht hat um ein paar Datensätze auszuspucken.

              Guck dir wahsaga's Datenmodell an und setze es um, außer es macht dir nix aus in nem halben Jahr nochmal von vorne beginnen zu müssen

              Gruss
              Quetschi
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                der counter an sich steht schon, d.h er funktioniert eigentlich schon eine weile - ich will jetzt eigentlich nur das script vereinfachen damit ich nicht bei jeder neuen refid so viel arbeit habe - die struktur ändere ich jetzt nicht mehr
                kann mir jemand auf trozdem helfen (vom prinzip her sind die ja sehr ähnlich) ?

                (ich hab jetzt eigentlich keine lust hier diskussionen anzufangen warum das andere system besser ist etc. - die struktur steht und ich bin auf der such nach einer lösung für eben dieses problem - so viel anders wie das von wahrsaga ist es nun auch wieder nicht - also wird es denk ich auch ähnlich funktionieren)

                Kommentar


                • #9
                  Original geschrieben von tschekowski
                  ...damit ich nicht bei jeder neuen refid so viel arbeit habe...
                  Was für Arbeit? das du jedesmal eine neue Spalte für ne neue refid anlegen musst? genau das würdest mit dem anderen Datenmodell erreichen...

                  EDIT:
                  Doch, wahsaga's Datenmodel ist sehr viel anders und wesentlich einfacher und schneller, es kommt mit 3 Spalten aus, während bei deinem Modell immer mehr Spalten erzeugt werden, je mehr refid's du brauchst.

                  Trotzdem:
                  Guck dir Shurakis Links an. 'Show columns' sollte dir weiterhelfen, guck dir mal an, was bei so einer Abfrage auf deiner tabelle rauskommt, darauf solltest du aufbauen können.
                  Zuletzt geändert von Quetschi; 01.06.2005, 10:36.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    es ist noch etwas hinzugekommen:
                    Wie kann ich die Zahlenwerte einer ganze Zeile über einen SQL Befehl zusammenaddieren ohne jede spalte einzeln angeben zu müssen ?

                    Kommentar


                    • #11
                      Original geschrieben von tschekowski
                      es ist noch etwas hinzugekommen:
                      Wie kann ich die Zahlenwerte einer ganze Zeile über einen SQL Befehl zusammenaddieren ohne jede spalte einzeln angeben zu müssen ?
                      OffTopic:
                      und, stellt sich immer noch keine einsicht ein, dass das datenmodell mist ist ...?
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        ich kann aber trozdem nicht die alte datenbankstruktur ändern - ich brauche die daten noch

                        Bitte nur noch posten wenn ihr wirklich eine lösung für mein problem habt - ganz egal ob die datenbankstruktur schlecht ist oder nicht - das steht hier nicht zur debatte!

                        Kommentar


                        • #13
                          Wer sagt denn dass du deswegen deine bisherigen Daten verlieren würdest? Hab damals auch aus dieser 'Irrsinns'-Tabelle heraus die Daten in eine vernünftige konvertiert. Und gerade die neu hinzugekommene Aufgabe wäre mit dem vernünftigen Datenmodell in einer ganz simplen Abfrage zu lösen.

                          Wenn du aber auf Teufel komm raus nicht umsteigen willst, dann guck dir endlich mal den Link zu 'Show Columns' an, auch deine neue Aufgabe lässt sich mit deinem Datenmodell darüber lösen.

                          Mit 'Show Columns' erhälst du Infos zu allen Spalten deiner Tabelle, auch z.B. die jeweiligen Spaltennamen, die nimmst du her und bastelst draus ne neue Query, so ungefähr,

                          SELECT (t1.spalte1 + t1.spalte2 + t1.spalte3.... usw.) as meineSumme .... usw.

                          Genauso kannst mit 'Show columns' ermitteln ob bereits eine Spalte für die betreffende refid vorhanden ist und falls nicht, dann gleich die entsprechende 'Alter Table'-Query an Mysql absenden damit die Spalte angelegt wird.

                          Ist halt mit deinem Datenmodell alles ein schönes Stück komplizierter als mit ner vernünftigen Struktur wo man dann ganz simpel mit SELECT, INSERT und UPDATE arbeiten könnte...
                          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                          Schön - etwas Geschichte kann ja nicht schaden.
                          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                          Kommentar


                          • #14
                            Dann mal ne Frage,... Wie viele Spalten hat deine Datenbank denn bis jetzt?

                            Kommentar


                            • #15
                              es sind max. 10 Spalten - die sind dann nach bereichen sortiert

                              Kommentar

                              Lädt...
                              X