Roger: [PHP] Summenfunktion

Guten Tag,

Ich will die Daten aus einer SQL-Datenbank herauslesen und dann mittes einer Summenfunktion in ein anderes Feld schreiben lassen.
[URL=http://img267.imageshack.us/i/unbenannt2s.gif/][IMG]http://img267.imageshack.us/img267/4408/unbenannt2s.gif[/IMG][/URL]
Die Liste heißt "jos_event_table_edit_1", hier sind die eingefügten Zeilen und Werte.

Also ich will das eine Funktion die Werte der Felder Wert 1, Wert 2, Wert 3 der ersten vorhandenen Zeile in der Liste ausliest, addiert und dann im Feld Summe ausgibt.
Und dann das selbe mit den restlichen Feldern tut.

Ich hoffe das mir jemand hier weiterhelfen kann, ich habe zwar die Grundsätze Programmiersprache PHP in der Schule durchgenommen, weiß aber nicht so recht wie ich dieses Problem angehen soll, BITTE also um Hilfe.

gruß Roger

  1. Hallo,
    PHP: $summe = (wert1 + wert2 + wert3);

    Leider verräts du nicht die Datenbank und wie du die Daten auszulesen gedenkst.
    Mit MySQL z.Bsp. kannst du dir das PHP auch sparen und gleich die DB rechnen lassen. Bei anderen DBMS weiss ich es nicht genau, wird aber vermutlich ebeso sein

    Gruß Rainer

  2. Mahlzeit Roger,

    [URL=http://img267.imageshack.us/i/unbenannt2s.gif/][IMG]http://img267.imageshack.us/img267/4408/unbenannt2s.gif[/IMG][/URL]

    Dies hier ist kein BB-Code-kompatibles Board. Du möchtest Grafiken einbinden?

    Die Liste heißt "jos_event_table_edit_1", hier sind die eingefügten Zeilen und Werte.

    Welche "Liste"? Was genau meinst Du?

    Also ich will das eine Funktion die Werte der Felder Wert 1, Wert 2, Wert 3 der ersten vorhandenen Zeile in der Liste ausliest, addiert und dann im Feld Summe ausgibt.

    Wenn ich Deine Grafik korrekt interpretiere, willst Du vermutlich eher, dass die Werte der Tabellenspalten "tname_2", "tname_3" und "tname_4" pro Datensatz summiert und als neue Spalte "tname_5" ausgegeben werden ... richtig?

    SELECT tname_0  
    ,      tname_1  
    ,      tname_2  
    ,      tname_3  
    ,      tname_4  
    ,      (tname_1 + tname_2 + tname_3) AS tname_5  
      FROM tabelle
    

    Und dann das selbe mit den restlichen Feldern tut.

    Wie jetzt? Was "das selbe"? Und welche "restlichen Felder" meinst Du?

    Ich hoffe das mir jemand hier weiterhelfen kann, ich habe zwar die Grundsätze Programmiersprache PHP in der Schule durchgenommen, weiß aber nicht so recht wie ich dieses Problem angehen soll, BITTE also um Hilfe.

    Da es sich um ein Datenbankproblem zu handelt scheint (falls ich falsch liege, solltest Du ggf. die Art und Weise Deiner Fragestellung überdenken und korrigieren), solltest Du Dir lieber die Grundlagen von SQL zu Gemüte führen ...

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Malzeit,

      danke für die Antworten.
      Um es noch einmal genauer zu erklären ich habe eine Joomla-Webseite, hier werden mittels einer Componente die Datensätze in die SQL-Datenbank von phpmyadmin eingetragen.
      Überblick SQL-Datenbank von phpmyadmin
      beim Bild links die Liste mein ich ("jos_event_table_edit_1"), wie man dann rechts sieht stehen bei einem neuen Datensatz die drei Werte schon in den Spalten: tname_1 + tname_2 + tname_3, die Spalte tname_4 gibt es schon ist aber noch leer, in diese Spalte soll die Summenfunktion die Summe reinschreiben.

      Und dann das selbe mit den restlichen Feldern tut.

      Damit habe ich gemeint, dass nach die Funktion als erstes die Summe für den ersten Datensatz ausrechnet und danach die restlichen Datensätze durchgeht.

      Was ich ja bis jetzt habe ist:

        
      SELECT tname_0  
      ,      tname_1  
      ,      tname_2  
      ,      tname_3  
      ,      tname_4  
      ,      (tname_2 + tname_3 + tname_4) AS tname_5  
      FROM jos_event_table_edit_1  
      
      

      Das ist ja nur der aufruf der Dateien aus der Datenbank

        
      $summe = (tname_2 + tname_3 + tname_4);  
      
      

      Und das ist dann die Summenfunktion richtig?
      Ist das alles oder brache ich noch mehr?

      1. Sorry für den Doppelpost

        hier ist die Adresse der Grafik: http://img717.imageshack.us/i/datenb.gif/

        gruß Roger

        1. Hello,

          hier ist die Adresse der Grafik: http://img717.imageshack.us/i/datenb.gif/

          Sieht zuerst mal so aus, wie ein unfertiges Datenmodell.

          Die indizierten Spaltennamen deuten zumindest darauf hin, dass sie lieber in einer eigenen Tabelle stehen wollten, also nicht horizontal, sondern vertikal (als Datensätze) angeordnet sein wollten.

          Und außerdem sind derartige Spaltennamen wenig aussagefähig. Dag Deinem Programmierer mal, dass er sich bessere ausdenken soll, bei denen man sich die Bedeutung vorstellen kann :-)

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
      2. Mahlzeit Roger,

        Um es noch einmal genauer zu erklären ich habe eine Joomla-Webseite, hier werden mittels einer Componente die Datensätze in die SQL-Datenbank von phpmyadmin eingetragen.

        Es ist vollkommen irrelevant, ob Du eine Joomla-, Drupal-, Wordpress-, Typo3- oder sonst irgendeine Webseite hast ... im Moment geht es ausschließlich darum, dass Du Daten aus einer MySQL-Tabelle auslesen willst - korrekt?

        beim Bild links die Liste mein ich ("jos_event_table_edit_1"), wie man dann rechts sieht stehen bei einem neuen Datensatz die drei Werte schon in den Spalten: tname_1 + tname_2 + tname_3, die Spalte tname_4 gibt es schon ist aber noch leer, in diese Spalte soll die Summenfunktion die Summe reinschreiben.

        Nein, das ist nicht korrekt. Was man sieht, sind Spalten mit den Namen "tname_0", "tname_1", "tname_2", "tname_3", "tname_4" und "tname_5", wobei die Spalte "tname_5" offenbar nie gefüllt ist.

        Was genau willst Du jetzt? Willst Du eine Abfrage, die die Spalte "tname_5" mit Werten füllt und diese auch dort *speichert*? Oder willst Du Dir lediglich die Summe beliebiger Spalten *ausgeben* lassen?

        Die grundlegende Abfrage hatte ich Dir bereits genannt - Du kannst die Summe direkt mit MySQL ermitteln ... PHP ist dazu absolut unnötig.

        Und dann das selbe mit den restlichen Feldern tut.
        Damit habe ich gemeint, dass nach die Funktion als erstes die Summe für den ersten Datensatz ausrechnet und danach die restlichen Datensätze durchgeht.

        Das würde eine Abfrage nach dem Muster, das ich Dir genannt hatte, immer tun, wenn Du sie nicht einschränkst.

        Was ich ja bis jetzt habe ist:

        SELECT tname_0
        ,      tname_1
        ,      tname_2
        ,      tname_3
        ,      tname_4
        ,      (tname_2 + tname_3 + tname_4) AS tname_5
        FROM jos_event_table_edit_1

        
        > Das ist ja nur der aufruf der Dateien aus der Datenbank  
          
        Nein. Das ist eine Datenbankabfrage, die Dir Werte liefert. Bitte informiere Dich \*ausführlichst\*, bevor Du mit irgendwelchen Fachausdrücken um Dich wirfst (die Abfrage hat weder etwas mit Aufrufen noch mit Dateien zu tun).  
          
        Und um PHP-Code handelt es sich dabei auch in keinster Weise ...  
          
          
        
        > ~~~php
          
        
        > $summe = (tname_2 + tname_3 + tname_4);  
        > 
        
        

        Und das ist dann die Summenfunktion richtig?

        Nein.

        Ist das alles oder brache ich noch mehr?

        Du brauchst anscheinend erst einmal grundlegendes Verständnis der von Dir verwendeten Technologien - konkret SQL. Anschließend brauchst Du eine verständliche Problembeschreibung ... dann stellt sich brauchbare Hilfe hier im Forum von alleine ein.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Guten Abend,

          Es ist vollkommen irrelevant, ob Du eine Joomla-, Drupal-, Wordpress-, Typo3- oder sonst irgendeine Webseite hast ... im Moment geht es ausschließlich darum, dass Du Daten aus einer MySQL-Tabelle auslesen willst - korrekt?

          stimmt

          Nein, das ist nicht korrekt. Was man sieht, sind Spalten mit den Namen "tname_0", "tname_1", "tname_2", "tname_3", "tname_4" und "tname_5", wobei die Spalte "tname_5" offenbar nie gefüllt ist.

          Wenn ein neuer Datensatz geschrieben wird, wird tname_0 bis tname_4 gefüllt und tname_5 bleibt ohne Wert also ungefüllt.

          Was genau willst Du jetzt? Willst Du eine Abfrage, die die Spalte "tname_5" mit Werten füllt und diese auch dort *speichert*? Oder willst Du Dir lediglich die Summe beliebiger Spalten *ausgeben* lassen?

          Genau ich will eine Abfrage, die die Werte tname_2 + tname_3 + tname_4 addiert und in tname_5 speichert.

          Die grundlegende Abfrage hatte ich Dir bereits genannt - Du kannst die Summe direkt mit MySQL ermitteln ... PHP ist dazu absolut unnötig.

          Ok, gut zu wissen.

          Nein. Das ist eine Datenbankabfrage, die Dir Werte liefert. Bitte informiere Dich *ausführlichst*, bevor Du mit irgendwelchen Fachausdrücken um Dich wirfst (die Abfrage hat weder etwas mit Aufrufen noch mit Dateien zu tun).

          OK, mit dieser Abfrage werden also die Werte aus tname_2 + tname_3 + tname_4 abgefragt und addiert, sehe ich das jetzt richtig. Und wird das Ergebnis auch schon in tname_5 gespeichert? Braucht man dafür nicht auch insert?

          Du brauchst anscheinend erst einmal grundlegendes Verständnis der von Dir verwendeten Technologien - konkret SQL. Anschließend brauchst Du eine verständliche Problembeschreibung ... dann stellt sich brauchbare Hilfe hier im Forum von alleine ein.

          Ja ich weiß.

          mfg Roger

          1. Mahlzeit Roger,

            Nein, das ist nicht korrekt. Was man sieht, sind Spalten mit den Namen "tname_0", "tname_1", "tname_2", "tname_3", "tname_4" und "tname_5", wobei die Spalte "tname_5" offenbar nie gefüllt ist.

            Wenn ein neuer Datensatz geschrieben wird, wird tname_0 bis tname_4 gefüllt und tname_5 bleibt ohne Wert also ungefüllt.

            Aha. Und wie und wo werden diese Spalten gefüllt? Du könntest nämlich bereits an dieser Stelle ansetzen und einfach dort die Spalte "tname_5" mit der Summe der Spalten "tname_0" bis "tname_4" füllen ...

            Genau ich will eine Abfrage, die die Werte tname_2 + tname_3 + tname_4 addiert und in tname_5 speichert.

            UPDATE jos_event_table_edit_1  
               SET tname_5 = (tname_2 + tname_3 + tname_4)
            

            So wird für *ALLE* vorhandenen Datensätze die Summe der Spalten "tname_2" bis "tname_4" in der Spalte "tname_5" gespeichert.

            Mit ein bisschen Grundverständnis und dem entsprechenden Kapitel im MySQL-Handbuch wäre das recht einfach gewesen ...

            OK, mit dieser Abfrage werden also die Werte aus tname_2 + tname_3 + tname_4 abgefragt und addiert, sehe ich das jetzt richtig.

            Nein, mit der Abfrage, die ich Dir genannt hatte, werden die Werte erstmal nur ausgelesen.

            Und wird das Ergebnis auch schon in tname_5 gespeichert?

            Nein, das war aus Deiner "Problembeschreibung" vorher nicht klar erkennbar, dass Du das willst.

            Braucht man dafür nicht auch insert?

            Nur wenn man einen neuen Datensatz anlegen will. Wenn man bestehende Datensätze ändern will, sollte man sich lieber mit UPDATE beschäftigen ...

            Ja ich weiß.

            Und?

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|