php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 06-01-2013, 23:38
Cetax
 Registrierter Benutzer
Links : Onlinestatus : Cetax ist offline
Registriert seit: Feb 2009
Ort: Niedersachsen
Beiträge: 31
Cetax ist zur Zeit noch ein unbeschriebenes Blatt
Standard MySQL abfrage Gruppiert ....

Hallo allerseits,
ich hoffe das ich hier im richtigen Bereich Poste, wenn nicht bitte ich um Nachsicht und um Verschiebung. Danke.

Also, ich möchte gern, meine DB abfragen, Gruppiert nach 'Datum' und Summe 'id'
Zumindest denke ich das es so ist
Ich möchte als Ausgabe, den Verbrauch pro Tag.


Die DB sieht so aus:

id | datumzeit | GZStand
1 | 2013-01-05 19:43:11 | 9002.96
2 | 2013-01-05 19:51:02 | 9002.97
3 | 2013-01-05 19:55:45 | 9002.98
4 | 2013-01-05 20:01:42 | 9002.99
5 | 2013-01-06 02:33:12 | 9003.00
6 | 2013-01-06 04:17:32 | 9003.01

Wenn ich das richtig verstanden habe, muss ich alle Einträge mit dem selben Datum Gruppieren und dann die 'id´s' Summieren, oder ?

PHP-Code:
SELECT idDATE_FORMAT(datumzeit,'%Y.%m.%d') AS DATUMDATE_FORMAT(datumzeit,'%H:%i:%s') AS ZEITGZStand 
FROM Gas 
WHERE 
<-- ???
GROUP BY DATE_FORMAT(datumzeit'%Y-%m-%d %H:%i:%s'
ORDER BY datumzeit ASC 
Das ist mein Ansatzt, aber ich weiß nicht wie die WHERE regel aus sehen muss

Ich weiß nicht mal ob der Ansatz der richtige ist, habe von MySQL sehr wenig bis gar keine Ahnung.
Kann jemand einem Anfänger Helfen ?

Vielen Dank

Gruß
Stefan
Mit Zitat antworten
  #2 (permalink)  
Alt 07-01-2013, 00:55
Cetax
 Registrierter Benutzer
Links : Onlinestatus : Cetax ist offline
Registriert seit: Feb 2009
Ort: Niedersachsen
Beiträge: 31
Cetax ist zur Zeit noch ein unbeschriebenes Blatt
Question

Hi,
ok habe es hinbekommen

Aber eine Frage habe ich noch, warum bekomme ich nur eine Ausgabe, wenn die '}'
am Ende steht und nicht vor dem 'echo' ?

Vielleicht zum besseren Verständnis, so funktioniert es:
PHP-Code:
<?php
include("db-config.php");
$tag "
SELECT id, count(datumzeit) as Summe_Gas
FROM Gas
GROUP BY DATE_FORMAT(datumzeit, '%Y-%m-%d') 
ORDER BY Summe_Gas DESC"
;

$result mysql_query($tag) OR die(mysql_error()); 

$temp_id 0;

while (
$array=mysql_fetch_array($result)) {  
    
$temp_id $array[1];

$i++;

$gesamt $temp_id*0.01;

echo 
$gesamt;
echo 
'<br>';
}
?>
Aber so bekomme ich nur "Eine" Zahl als Ausgabe :
PHP-Code:
<?php
include("db-config.php");
$tag "
SELECT id, count(datumzeit) as Summe_Gas
FROM Gas
GROUP BY DATE_FORMAT(datumzeit, '%Y-%m-%d') 
ORDER BY Summe_Gas DESC"
;

$result mysql_query($tag) OR die(mysql_error()); 

$temp_id 0;

while (
$array=mysql_fetch_array($result)) {  
    
$temp_id $array[1];

$i++;
}

$gesamt $temp_id*0.01;

echo 
$gesamt;
echo 
'<br>';
?>
Ich möchte gern die Ausgabe '$gesamt' gerne weiterverarbeiten, das geht aber nicht,
wenn die '}' am Ende steht.

Ich hoffe ihr versteht was ich meine
Kann mir bitte jemand Helfen und sagen woran das liegt und wie ich das ändern muss?

Vielen Dank

Gruß
Stefan
Mit Zitat antworten
  #3 (permalink)  
Alt 07-01-2013, 02:04
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Cetax Beitrag anzeigen
Ich möchte gern die Ausgabe '$gesamt' gerne weiterverarbeiten, das geht aber nicht,
wenn die '}' am Ende steht.
$gesamt wird bei jedem Schleifendurchlauf überschrieben, bzw. bei jedem Durchlauf mit einem neuen Wert belegt. Innerhalb der Schleife erfolgt die Ausgabe mit echo bei jedem einzelnen Durchlauf. Die Ausgabe mit echo außerhalb der Schleife wird aber erst ausgeführt, nachdem die Schleife bereits abgearbeitet wurde und nur noch mit dem Wert vom letzten Durchlauf belegt ist.
Du könntest aber die Ergebnisse in einem Array schreiben und den Array außerhalb der Schleife weiterverarbeiten.
PHP-Code:
...

$i++;

$gesamt[] = $temp_id*0.01;

// Ende der Schleife


foreach ($gesamt as $ausgabe) {

    echo 
$ausgabe."<br>\n";

Eine andere Möglichkeit bestünde darin die Ergebnisse mit einem Punktoperator und = zu verknüpfen. Kommt aber auf den Verwendungszweck an. Die Variable $gesamt sollte dann bereits vor der Schleife deklariert und definiert werden.
PHP-Code:
  $gesamt "";  // Bekanntmachung vor der Schleife
...
$i++;

$gesamt .= $temp_id*0.01;

// Ende der Schleife


echo $gesamt
In Deinem Beispiel dürfte wohl $gesamt[] besser geeignet sein.
Mit Zitat antworten
  #4 (permalink)  
Alt 08-01-2013, 23:34
Cetax
 Registrierter Benutzer
Links : Onlinestatus : Cetax ist offline
Registriert seit: Feb 2009
Ort: Niedersachsen
Beiträge: 31
Cetax ist zur Zeit noch ein unbeschriebenes Blatt
Thumbs up [gelöst]

Hallo Melewo,
vielen Dank, das ist wirklich KLasse

Es klappt, mein ganzer Code sieht so aus (falls es nochmal jemand braucht) :
PHP-Code:
<?php
include("db-config.php");

$sql "
SELECT id, DATE_FORMAT(datumzeit,'%Y.%m.%d') AS DATUM, DATE_FORMAT(datumzeit,'%H:%i:%s') AS ZEIT, GZStand 
FROM Gas 
WHERE `datumzeit` >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY DATE_FORMAT(datumzeit, '%Y-%m-%d %H:%i:%s') 
ORDER BY datumzeit ASC"
;

$result mysql_query($sql) OR die(mysql_error()); 

while (
$array=mysql_fetch_array($result)) {  
     
$id[$i] = $array[0]; 

$i++;

}
$gesamt $i*0.01;

echo 
$gesamt;
?>
Also nochmal Vielen Dank für die tolle Hilfe


Gruß
C3tax
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Array gruppiert ausgeben Truncate PHP Developer Forum 1 13-03-2011 16:35
Lösungsansatz um mysql tabelle gruppiert auszulesen ? Sawyer28 PHP Developer Forum 13 16-06-2008 17:11
[MySQL 4.0] Tabellen gruppiert sichern Olaf123 SQL / Datenbanken 3 17-12-2006 12:43
ID's von der DB gruppiert anzeigen m-werk PHP Developer Forum 5 12-10-2006 15:07
Abfrage auf eine Tabelle gruppiert mit max Wert eines Feldes yabbax SQL / Datenbanken 0 08-02-2006 13:09

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
FAQ Script PHP ansehen FAQ Script PHP

FAQ Script PHP is a simple knowledgebase script and you could use it as a Frequently Asked Question section on your website. It is written in PHP and MySQL.

14.01.2019 nevenov | Kategorie: PHP/ FAQ
Admidio Mitgliederverwaltung

Admidio ist eine kostenlose Online-Mitgliederverwaltung, die für Vereine, Gruppen und Organisationen optimiert ist. Sie besteht neben der Mitgliederverwaltung aus einer Vielzahl an Modulen (Foto-, Download-, Terminverwaltung), die in eine neue oder besteh

08.01.2019 webmaster52@ | Kategorie: PHP/ Groupware
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:52 Uhr.