php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.11.2004, 22:46  
Erfahrener Benutzer
 
Registriert seit: 11.03.2004
Beiträge: 138
Sonja
Standard Monatsstatistik/Datensätze zählen

Hi

möchte gerne die Datensätze in einer Statistik ausgeben. Pro Monat ein Query zu machen klappt, ist aber recht aufwendig. Geht es nicht anders?

Das geht, ist eben etwas aufwendig

Code:
 <?$query="select  id_kunde  from anmeld
WHERE erfassdatum between  '1101855600' and '1104533999' ";
$result = mysql_query ($query, $link);
$num=mysql_numrows($result);
echo"$num";?>
Da versuchte ich es zu vereinfachen, es geht aber nicht. Was mache ich falsch?

Code:
$query = "select id_kunde,erfassdatum from anmeld";
$result = mysql_query ($query, $link);
$row = mysql_fetch_array($result);
$erfassdatum = $row[erfassdatum];

$monat=(strftime ("%m.%Y", $erfassdatum));

$okt04=($monat=='10.2004');
$okt04b = count($okt04);
echo"$okt04b";
Ich möchte aus den Datensätzen, welche seit Mitte 03 erfasst werden die Anzahl erfassungen pro Monat ausgeben und dann noch die Veränderung zum Vorjahr errechnen.

Wer weiss da einen Tipp oder Ratschlag?

Danke
Sonja ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.11.2004, 10:41  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Meinst du z.B. so wtwas?
PHP-Code:
$sql "SELECT id_kunde,  date_format('%Y-%m', erfassdatum) monat,  sum() anzahl
    FROM anmeld 
    GROUP BY id_kunde, monat
    ORDER BY id_kunde, monat"
;
$result mysql_query ($query) or die(mysql_error()); 
while (
row mysql_fetch_array($result))
{
    echo 
'Kunde ' .  $row['id_kunde'] . ' hat im Monat ' implode(' 'reverse(explode('-'$row['datum']))) . ' ' .  $row['anzahl'] . ' Eintr&auml;ge
'
;

Dieser Code gibt dir für jeden Kunden die Anzahl Einträge pro Monat aus. Wegen der Sortierung wird der Monat im Fomat JJJJ-MM selektiert und dann bei der Ausgabe nach MM JJJJ umformatiert.
__________________
Gruss
L
lazydog ist offline  
Alt 07.11.2004, 17:44  
Erfahrener Benutzer
 
Registriert seit: 11.03.2004
Beiträge: 138
Sonja
Standard

Nicht ganz! Jede ID ist nur einmal drin, die Leute tragen sich ein, und ich will wissen wieviele Eintragungen pro Monat erfolgten

Für 2004 machte ich die Statistik mit Einzelabfragen
<?
$query2="select id_kunde from anmeld
WHERE erfassdatum between '1064959200' and '1067641199'";
$result2 = mysql_query ($query2, $link);
$num2=mysql_numrows($result2);
echo"$num2";
?>

Nun wollte ich es vereinfachen

mit dem Code von lazydog versuchte ich es auf verschiedene Arten, aber es gibt immer nur "Query was empty" raus.

Pro Monat sind es rund 180 bis 200 Einträge resp. ID und die möchte ich pro Monat zählen. Das Erfassadtum ist als UNIX erfasst, also 1099842458 für 7.11. die Miinutne und sekunden iteressieren mich nicht, ich weiss einfach, dass der Eintag heute war.

Jetzt will ich wissen, wieviele Einträge es pro Monat waren, reps. dann in Zununft auch sein werden
Sonja ist offline  
Alt 07.11.2004, 18:01  
Gast
 
Beiträge: n/a
Standard

Zitat:
es gibt immer nur "Query was empty" raus
kein wunder:
Zitat:
$sql="blabla";
[...]
mysql_query($query);
 
Alt 07.11.2004, 18:27  
Erfahrener Benutzer
 
Registriert seit: 11.03.2004
Beiträge: 138
Sonja
Standard

was meinst du damit?

bisher habe ich immer $query=" select ...... gemacht

Aber der Code von lazydog fängt mit $sql an. Wenn ich das wechsle auf $query geht es nicht. Auch geht es nicht wenn ich $result = mysql_query ($sql) schreibe.

"You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('%Y-%m', erfassdatum)"
Sonja ist offline  
Alt 07.11.2004, 19:27  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 146
Hakima befindet sich auf einem aufstrebenden Ast
Standard

versuchs mal so: (Bei Nutzung von lazydogs Vorschlag)

PHP-Code:
(erfassdatum'%Y-%m'
anstatt:
PHP-Code:
date_format('%Y%m'erfassdatum
http://dev.mysql.com/doc/mysql/de/Da...functions.html
Hakima ist offline  
Alt 07.11.2004, 20:35  
Erfahrener Benutzer
 
Registriert seit: 11.03.2004
Beiträge: 138
Sonja
Standard

Geht immer noch nicht

ich kann alle Monate ausgeben

Code:
<?
$query="select erfassdatum from anmeld";
$result = mysql_query ($query, $link);
$num=mysql_num_rows($result);
echo"$num";
for ($i = 0; $i < $num; $i++)
 {
$row = mysql_fetch_array($result);
$monat=(strftime ("%m.%Y", $row[erfassdatum])); 
echo"$monat
";}
?>
Aber ich sollte sie mach Monat zählen und bündeln. Wie mache ich das? Im Moment kommt das Total aller Datensätze mit $num und eine ellenlange Auflistung der Monate und Jahre also
09.2003
09.2003
bis
11.2004
11.2004
11.2004
usw pro id eine Zeile
Sonja ist offline  
Alt 07.11.2004, 21:09  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 146
Hakima befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht hilft Dir das weiter:

Der mysql-Befehl:
Zitat:
select id_kunde from anmeld
WHERE erfassdatum between '1101855600' and '1104533999'
ist ja, - um einen bestimmten Zeitraum wiederzugeben, o.k. Dazu kommt dann:

count()

PHP-Code:
select  count(id_kunde)  from anmeld 
WHERE erfassdatum between  
'1101855600' and '1104533999' 
Der Count-Befehl zählt die ID´s und gibt (später in der Ausgabe der Abfrage) die gezählte Anzahl aus (halt genau für diesem Zeitraum).

Für die Ausgabe zu jedem Monat gibt es ja die Möglichkeit, mit einer Case-Anweisung zu arbeiten (in der Case-Anweisung stehen dann die mysql-Abfragen für jeden Monat ), oder aber mit if-Anweisungen. So kann auch erst geprüft werden, ob für den jeweiligen Monat überhaupt Einträge vorhanden sind... natürlich können die Monate auch in eine Schleife, die 1-12 durchläuft, gepackt werden (Case-Anweisung oder if-Anweisungen innerhalb der Schleife).

http://dev.mysql.com/doc/mysql/de/Gr...functions.html
Hakima ist offline  
Alt 07.11.2004, 21:20  
Erfahrener Benutzer
 
Registriert seit: 11.03.2004
Beiträge: 138
Sonja
Standard

Ich glaube jetzt was kapiert zu haben! count () geht nur innerhal vom select, und ich muss ja zuerst des select machen, das Datum formatieren und erst dann kann ich alles auseinandernehmen und zählen.

Gut aber wie?

das geht nicht! Sieht aber auch komisch aus

<?
$query="select erfassdatum from anmeld";
$result = mysql_query ($query, $link);
$row = mysql_fetch_array($result);
$monat=(strftime ("%m.%Y", $row[erfassdatum]));
case 104 : $monat="01.2004" ;break;
case 204 : $monat="02.2004";break;
case 304 : $monat="03.2004";break;
case 404 : $monat="04.2003";break;
echo"$monat";

?>
Sonja ist offline  
Alt 08.11.2004, 00:43  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 146
Hakima befindet sich auf einem aufstrebenden Ast
Standard

wie gesagt, die Anzahl müßte durch count() ausgebbar sein...

PHP-Code:
$query="select count(erfassdatum) from anmeld" 
die Anzahl aller Einträge müßte jetzt ausgegeben werden. Für jeden Monat formulierst Du je eine Abfrage, die Du mit if-Anweisungen oder Case-Anweisung abfragst (Einen anderen Lösungsansatz sehe ich jetzt hier nicht). Es gibt da noch die Möglichkeit, die Monate per Button anzuklicken (dann gibt er die Anzahl der Einträge für den ausgewählten Monat per Klick aus).

PHP-Code:
<? 
switch ($datum) {
case 
Januar:   $monat="01.2004" ;
                     
$query="select count(erfassdatum) from anmeld WHERE
                     erfassdatum between  '1101855600' and '1104533999' "

                     
$result mysql_query ($query$link); 
                     
$num=mysql_num_rows($result); 
                     break; 
case 
Februar$monat="02.2004" ;
                     
$query=... 
                     
$result=...
                     
$num=...
                     break; 
echo
"$monat"
}
if(isset(
$datum)) echo $num;
?>
Maßgebend für die folgenden Monate (Cases) ist das Beispiel "case Januar" ...

ich poste das ungeprüft

P.S.: count(spaltenname) zählt die Anzahl der vorhandenen Zeilen, bzw. Datensätze innerhalb einer select-Anweisung. Dies kannst Du in Deiner Testumgebung aber gut testen (ich setze ja mal voraus, daß Du eine Testumgebung hast?!)
Hakima ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql monatsstatistik, monatsstatistik php, php monatsstatistik, sql anzahl pro monat, datensätze pro monat php, php einträge pro monat zählen, monate zählen php, anzahl einträge je monat, mysql anzahl im monat zählen, mysql beiträge je monat zählen, biostatistik datensatz auszählen, mysql anzahl monate im jahr zählen, mysql einträge eiens monats zählen pro tag, monatsstatistik aus mysql db, zählen wieviel einträge pro monat, sql statistik monate zählen, mysql monat statistik, mysql anzahl datensätze eines monat, mysql monatsstatistik php, php sql statistik mit vorjahr

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:30 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.