select sum()... mit PHP ausgeben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • select sum()... mit PHP ausgeben

    Ich hab mal wieder eine Frage...
    Folgendes Problem:
    Ich will mir aus meiner Datenbank die Summe der Werte für die Anzahl Buchungen in einer Zeitspanne holen. Ich habe in der Datenbank für die Zeitspanne eine Zelle mit dem Jahr und eine mit dem Monat. Die Werte zu addieren und so brachte mir keine Probleme, jedoch verstehe ich da etwas mit der Ausgabe mit php nicht...
    Hier mein Code:

    Quellcode

    1. $query = "Select SUM($t_anzahl) from $tabellenname where CONCAT(fk_jahr, fk_monat) BETWEEN '$vjahr$vmonat' AND '$bjahr$bmonat' AND fk_gaestekarte=$gaestekartetyp";
    2. $ergebnis = mysql_query($query);
    3. while($row = mysql_fetch_object($ergebnis)){
    4. $anz = $row -> $t_anzahl;
    5. }
    6. echo "</br>".$anz;

    Eine kurze Erklärung zu den verwendeten Variablen:
    $t_anzahl ist ein Zellenname. Hier wird die Anzahl der Buchungen gespeichert. Ich habe eine Variable gewählt, da dieser Zellenname je nach Tabelle unterschiedlich ist.
    $tabellenname ist der Tabellenname.
    fk_jahr ist das Jahr, welches dann für die Zeitspanne benötigt wird.
    fk_monat ist der Monat, welcher dann für die Zeitspanne benötigt wird.
    $gaestekartetyp ist der Typ Gästekarte welcher verwendet wurde.

    Die ganze Mysql-Abfrage funktioniert, wenn ich Sie nur in der Kommandozeile ausführe... D.h an der Abfrage dürfte es ja schon mal nicht liegen.
    Wenn ich es ohne Sum() mache werden mir die Werte ausgegeben aber nicht addiert. Da der Rückgabewert der Select Abfrage ja nur ein einziges Objekt ist sollte die Ausgabe über Mysql_fetch_object doch funktionieren oder nicht?

    Dann hätte ich da noch ne kleine Nebenfrage, welche mir nicht so wichtig ist, mich aber interessieren würde: Wie kann ich eine noch nicht Deklarierte Variable mit einer bereits deklarierten Variable zusammenfügen? Bsp. in diesem Fall:

    Quellcode

    1. $anzahl wird vom user definiert
    2. for($i=0; $i<=$anzahl; $i++){
    3. $VarNeu{$i} = $_POST['irgendetwas'.$i]; //erhalte per post eine gewisse anzahl werte bzw Daten und möchte die jetz einzeln in Variablen speichern
    4. }

    Mit dem $VarNeu{$i} hat es mir nicht funktioniert... Erhalten möchte ich dann bspw. wenn $anzahl=3 ist, erhalte ich $VarNeu1, $VarNeu2, $VarNeu3

    Bitte um rasche Hilfe

    Danke schon mal im Voraus
    Bei Fragen stehe ich gerne zu Verfügung
  • Da du bei sum() ohne angabe einer Guppierung immer nur eine Zeile als ergebnis zurück bekommst kannst du dir die while schleife sparen:

    Quellcode

    1. $t_anzahl = 'spaltenname';
    2. $query = "Select SUM(".$t_anzahl.") as ".$t_anzahl." from ".$tabellenname." where CONCAT(fk_jahr, fk_monat) BETWEEN ' ".$vjahr$vmonat." ' AND ' ".$bjahr$bmonat." ' AND fk_gaestekarte=' ".$gaestekartetyp." ' ";
    3. $ergebnis = mysql_query($query);
    4. $row = mysql_fetch_object($ergebnis);
    5. $anz = $row -> $t_anzahl;
    6. echo "</br>".$anz;


    Bitte das >> as ".$t_anzahl." << in SQL query beachten !

    Zu deiner zweiten Frage: php.net/manual/de/language.variables.variable.php
  • So hat es nun funktioniert:

    Quellcode

    1. $query = "Select SUM(".$t_anzahl.")as ".$t_anzahl." from ".$tabellenname." where CONCAT(fk_jahr, fk_monat) BETWEEN '".$vjahr.$vmonat."' AND '".$bjahr.$bmonat."' AND fk_gaestekarte='".$gaestekartetyp."'";
    2. $ergebnis = mysql_query($query);
    3. $row = mysql_fetch_object($ergebnis);
    4. $anz = $row -> $t_anzahl;
    5. echo "</br>".$anz;


    Ich hab alles ein bisschen durchgetestet und nehme an, der ausschlaggebende Fehler war das << as".$t_anzahl.">>. Sobald ich das wegnehme funktioniert es nicht mehr... Vielen Dank für deine Hilfe der_robert
    Ich weiss nicht ob ich das mit dem as falsch verstanden habe aber ich dachte immer wenn man keine <<as-Angabe>> mache, würde mysql standartmässig den gesuchten Wert so zurückgeben wie er im select steht, sprich wenn man hier das as nicht verwendet hätte, würde das $t_anzahl einfach als $t_anzahl zurückgegeben werden auch wenn man keine as Angabe macht...

    @der_robert

    Ich hatte mir die Beispiele der variablen Variablen bereits angeschaut... Dort wird allerdings nur mit 2 bereits deklarierten Variablen gearbeitet und nicht der Variablenname einer nicht deklarierten Varibale durch den Wert einer deklarierten Variable ergänzt. Mit einer variablen Variable kann ich den Inhalt einer Variable ergänzen durch den einer anderen und somit die Variable variabel machen. Mein Ziel ist es allerdings den Variablenname variabel zu machen. Beispiel:

    Quellcode

    1. $anzahl = 3;
    2. $_POST['irgendwas'.$i] = "test";
    3. for($i=0; $i<=$anzahl; $i++){
    4. $VarNeu = $_POST['irgendwas'.$i];
    5. $$VarNeu = $i;
    6. $Variable = $VarNeu."${$VarNeu}";
    7. echo "</br>Variable=".$Variable;
    8. }
    9. //Was ich erhalte durch die Ausgabe per echo: Variable=test1, Variable=test2, Variable=test3
    10. //Was ich möchte ist jedoch das ich dann sowas habe: Variable1=test1, Variable2=test2, Variable3=test3

    (sorry Darstellung des Codes funktioniert irgendwie nicht so ganz...)

    nochmal Danke an der_robert

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von SJay96 ()

  • Was ich möchte ist jedoch das ich dann sowas habe: Variable1=test1, Variable2=test2, Variable3=test3


    Variable1, Variable2, Variable3, ... sollen dynamisch erzeugt werden und dann die Werte test1, test2, test3,... vom User bekommen?!
    Wenn ich das richtig verstanden habe (wobei ich mir nicht sicher bin^^), kommen sowohl Variable1 als auch test1 vom User?

    Quellcode

    1. // ich vermute deine $_POST sieht dann ungefähr so aus?
    2. $_POST (
    3. [variable1] => test1
    4. [variable2] => test2
    5. )
    6. // dann mach doch einfach
    7. for ($_POST as $key => $value) {
    8. $key => $value;
    9. }

    Vielleicht kannst du auch erklären was du umsetzen möchtest, da ich mir ziemlich sicher bin, dass ich dich falsch verstanden habe.
  • Ich habe eine Variable $i, welche in einer For-Scheife solang hochgezählt wird bis Sie einen gewissen Wert($anzahl) erreicht, welcher vom User vorgegeben wird. Ich erhalte über $_POST einen Wert. Diesem Wert würde ich gerne die Variable $i anfügen und den neuen zusammengesetzten Werte ($_POST und $i) möchte ich nun einer Variable zuweisen, welche aus ihrem Variablenamen($VarNeu) und der Variable $i zusammengesetzt wird. Also:

    Quellcode

    1. for($i=1; $i<=$anzahl; $i++){
    2. $VarNeu und $i = $_POST['irgendwas'.$i ]//wie setz das $VarNeu mit dem $i zusammen, wenn $VarNeu noch nie zuvor gebraucht wurde, sprich nicht deklariert ist und $i deklariert(durch die Vorschleife) ist.
    3. }

    Wenn jetzt $_POST['irgendwas'.$i] immer eine Zahl und der Wert von $i wäre sollte es dann so aussehen:

    $VarNeu1=2001
    $VarNeu2=2002
    $VarNeu3=2003

    Der Wert der Variable $i soll den Namen der Variable $VarNeu ergänzen.

    Was nicht funktioniert hat:
    $VarNeu.$i //$VarNeu ist nicht deklariert, geht deshalb nicht
    $VarNeu{$i} //gab auch einen Fehler
    VariableVariable mit $VarNeu ${$VarNeu} fügt mir die Werte zusammen und ergänzt nicht den Namen der $VarNeu durch den Wert $i

    Jemand ne idee oder noch Fragen?

    Danke schonmal
  • Ein array sollte in diesem falle auf jeden fall zum gleichen Ergebnis führen.

    Vorallem hätte es den vorteil das du die for-Schleife durch eine foreach ersetzen kannst.

    Quellcode

    1. foreach($daten as $key => $value){
    2. $variable[] = $_POST['irgendwas'.$key ];
    3. }


    erzeugt dann


    Quellcode

    1. array(
    2. 0 => "inhalt von $_POST['irgendwas'.$key]",
    3. 1 => "inhalt von $_POST['irgendwas'.$key]",
    4. 2 => "inhalt von $_POST['irgendwas'.$key]",
    5. 3 => "inhalt von $_POST['irgendwas'.$key]"
    6. )
  • Die For-Schleife kann ich nicht durch ein foreach ersetzen aber was in meinem Fall funktioniert ist, eine foreach noch in die for-Schleife und dann das mit dem Array. Auf ein Array wäre ich nie gekommen, hab zu weit gedacht "schäm".
    @bYemma
    Das mit dem $VarNeu($i) würde nicht funktionieren, da dies in PHP ein Funktionsaufruf mit Übergabewert $i ist.

    Vielen Dank für eure Hilfe