Ankündigung

Einklappen
Keine Ankündigung bisher.

Summe aus verknüpften (INNER JOIN) Tabellen bilden

Einklappen

Neue Werbung 2019

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

  • kayleigh
    hat ein Thema erstellt Summe aus verknüpften (INNER JOIN) Tabellen bilden.

    Summe aus verknüpften (INNER JOIN) Tabellen bilden

    Hallo Gemeinde,

    es ist wieder mal soweit, ich brauche Eure Hilfe.
    Zum Problem:
    Ich habe 2 Tabellen die ich per "INNER JOIN" verknüpft habe. Aus einer Tabelle kommen die relevanten Daten, aus der anderen die dazugehörigen Preise.
    Das sieht so aus:
    PHP-Code:
    $dbh = new PDO("mysql:host=$hostname;dbname=$db"$username$password);
    foreach(
    $dbh->query('SELECT qi_domains.mo,qi_domains.tld,qi_domains.aktiv,netto
    FROM qi_domains
    INNER JOIN qi_domainpreise
    ON qi_domains.tld=qi_domainpreise.endung
    WHERE qi_domains.kdnr="1234"'
    ) as $row) {
    echo 
    "<tr>";
    echo 
    "<td>" $row['mo'] . "</td>";
    echo 
    "<td>" $row['tld'] . "</td>";
    echo 
    "<td>" $row['aktiv'] . "</td>";
    echo 
    "<td>" $row['netto'] . "</td>"
    echo 
    "</tr>";

    Funktioniert auch wunderbar, es wird die Tabelle ausgegeben in der 4. Spalte stehen die (Netto)Preise.
    Nun möchte ich aus eben diesen Preisen eine Summe bilden.
    Natürlich kann ich mit einem weiteren Query die Preise aus der DB per "SUM" addieren und darstellen, aber es sollen ja nur die Preise aus der vorangegangenen WHERE-Definition addiert werden und nicht die gesamte Tabelle.
    Mit
    PHP-Code:
    $a = array($row['netto']);
    echo 
    "" array_sum($a) . ""
    komme ich nicht weiter, hier wird mir als "Summe" nur der erste Wert aus der Tabelle ausgegeben...!?

    Wie kriege ich das am Besten hin? Wer hat mir die Lösung?

    Danke schon mal!

  • kayleigh
    antwortet
    Danke, aber so komme ich nicht weiter, mit diesen Hinweisen kann ich einfach nicht umgehen.
    Sei's drum, werde ich woanders fragen müssen.

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    Zitat von kayleigh Beitrag anzeigen
    Was ich eben gepostet habe, das ist der "Ursprungscode".
    Wenn ich den Schnipsel aus #2 einsetze, dann sieht der Part (1:1 übernommen) so aus:
    Du hast bereits zweimal gesagt bekommen dass du den Pseudocode eben *nicht* einfach übernehmen kannst, einfach Code irgendwo kopieren und auf gut Glück irgendwo einfügen hat noch nie funktioniert. Tipp: das was im Pseudocode innerhalb von for steht gehört bei dir in deine foreach-Schleife, der Rest entsprechend davor/danach.

    Einen Kommentar schreiben:


  • kayleigh
    antwortet
    Was ich eben gepostet habe, das ist der "Ursprungscode".
    Wenn ich den Schnipsel aus #2 einsetze, dann sieht der Part (1:1 übernommen) so aus:
    PHP-Code:
    echo "<table class='table table-bordered'>";
    echo 
    "<tr>";
    echo 
    "<th colspan='4' style='text-align: right'>Preis gesamt</th>";
    echo 
    "</tr>";
    echo 
    "<tr colspan='4'>";
    echo 
    "<td style='text-align: right'>";

    $summe 0;
    for () {
    $summe += ($row['netto']);
    }

    echo 
    $summe;
    echo 
    "</td>";
    echo 
    "</tr>";
    echo 
    "</table>"
    Und dies wirft den Fehler:
    Parse error: syntax error, unexpected ')', expecting ';' in ......... on line 46
    Die Zeile 46 ist hierbei:
    PHP-Code:
    for () { 

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    Zitat von kayleigh Beitrag anzeigen
    Mehr Code als ich bereits gepostet hatte gibt es halt nicht...
    d.h. du hast den Hinweis aus #2 überhaupt nicht umgesetzt (wobei das for darin bei dir ein foreach ist) sondern wunderst dich einfach dass dein Code nicht funktioniert? Und Fehlermeldung hast du auch nicht gepostet …

    Hier nochmal in Gänze:
    du erzeugst invaliden Code, nach </tr> darf kein <table> kommen, außerdem ist deine array_sum-Konstruktion natürlich Unsinn: du bastelst in $a ein Array mit dem Wert der letzten Zeile und wunderst dich dass nicht die Summe aller Zeilen dabei rauskommt?

    Einen Kommentar schreiben:


  • kayleigh
    antwortet
    Mehr Code als ich bereits gepostet hatte gibt es halt nicht...
    Hier nochmal in Gänze:
    PHP-Code:
    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    </head>
    <body>
    <div class="container">
    <div class="row">
    <div class="col-md-12">
    <h2>&nbsp;</h2>
    <table class='table table-bordered'>
    <tr>
    <th>Monat</th><th>TLD</th><th>aktiv</th><th>Preis</th>
    </tr>
    <?php
    $hostname
    ="localhost";
    $username="xxxxxx";
    $password="xxxxxx";
    $db "xxxxxx";
    $dbh = new PDO("mysql:host=$hostname;dbname=$db"$username$password);
    foreach(
    $dbh->query('SELECT qi_domains.mo,qi_domains.tld,qi_domains.aktiv,netto
    FROM qi_domains
    INNER JOIN qi_domainpreise
    ON qi_domains.tld=qi_domainpreise.endung
    WHERE qi_domains.kdnr="4444"'
    ) as $row) {
    echo 
    "<tr>";
    echo 
    "<td>" $row['mo'] . "</td>";
    echo 
    "<td>" $row['tld'] . "</td>";
    echo 
    "<td>" $row['aktiv'] . "</td>";
    echo 
    "<td>" $row['netto'] . "</td>"
    echo 
    "</tr>";
    }

    echo 
    "<table class='table table-bordered'>";
    echo 
    "<tr>";
    echo 
    "<th colspan='4' style='text-align: right'>Preis gesamt</th>";
    echo 
    "</tr>";
    echo 
    "<tr colspan='4'>";
    echo 
    "<td style='text-align: right'>";
    $a = array($row['netto']);
    echo 
    "" array_sum($a) . "";
    echo 
    "</td>";
    echo 
    "</tr>";
    echo 
    "</table>";

    ?>
    </tbody></table>
    </div>
    </div>
    </div>
    </body>
    </html>

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    Zitat von kayleigh Beitrag anzeigen
    Schon, aber da gibt es doch nichts anzupassen?
    Habe zwar ein paar Sachen probiert, aber der 500er bleibt...
    Doch, da gibt es was anzupassen - der Code in #2 zeigt nur das Prinzip, ist aber kein lauffähiger Code! Wenn du deinen Code nicht zeigst und auch nicht die Fehlermeldung kann dir hier auch keine helfen. Und nein das "500er" ist nicht die Fehlermeldung, die steht im Errorlog (error_reporting/display_errors ist aktiviert?).

    Einen Kommentar schreiben:


  • kayleigh
    antwortet
    Schon, aber da gibt es doch nichts anzupassen?
    Habe zwar ein paar Sachen probiert, aber der 500er bleibt...

    Einen Kommentar schreiben:


  • Zeichen32
    antwortet
    Du musst das natürlich an deinen Code anpassen. Das ist nur Phantasie Code um zu zeigen, wie es geht.

    Einen Kommentar schreiben:


  • kayleigh
    antwortet
    Hm, danke, aber wenn ich das so einfüge, dann crasht die ganze Seite... (500 Error)

    Einen Kommentar schreiben:


  • Zeichen32
    antwortet
    Mach dir über deine Schleife eine Variable und dann:

    PHP-Code:
    $summe 0;

    for () {
    $summe += $row['netto'];
    }

    echo 
    $summe

    Einen Kommentar schreiben:

Lädt...
X