Erste Arbeit mit Arrays, natürl. mit einer MySQL-Schleife!

icecream

Grünschnabel
Hallo, ich habe einen Counter erstellt und möchte den Schnitt der Benutzer, die pro Tag die Seite aufrufen. Nach ewig langem Nachdenken bin ich zu dem Schluss gekommen, dass es mit Array funktionieren muss. So wie ich es umgesetzt habe, funktioniert es auf jeden Fall NICHT! ^^

PHP:
$fetch1 = mysql_query("SELECT DATE_FORMAT(datum, '%d') FROM counter");
$i1 = 0;
while ($ds = mysql_fetch_object($fetch1)) {
$schnitt[$i1] = $ds -> datum;
}
echo "Das sind im Schnitt ".array_sum($schnitt)." User am Tag.";
Die Spalte "datum" ist vom Typ DATE. Ich bin heute total komisch d'rauf, also wenn ich nen Mist geschrieben habe (Bezüglich der MySQL-Abfrage), dann habt bitte Nachsicht ;):)

Ich weiß, dass der Schnitt noch nicht korrekt berechnet ist, aber darum geht es nicht. Es geht darum:
Es sind 2 Einträge in der DB vorhanden, aber es wird folgendes ausgegeben:

2 Besucher gesamt.
2 Besucher heute
0 Besucher gestern
Das sind im Schnitt 0 User am Tag. <--- DIE ZEILE
 
Zuletzt bearbeitet:
Hallo,
so sollte es funktionieren:
PHP:
 $fetch1 = mysql_query("SELECT DATE_FORMAT(datum, '%d') FROM counter"); 
$i1 = 0; 
while ($ds = mysql_fetch_object($fetch1)) { 
$schnitt[$i1] = $ds -> datum;
$i1++;
} 
echo "Das sind im Schnitt ".array_sum($schnitt)." User am Tag.";
Den Durchschnit einer MySQL Tabllenspalte kann man übrigends auch so
Code:
SELECT AVG(feld) as feld FROM tablle
berechnen.

mfg
forsterm
 
Irgendwie logisch dass es mit diesem Code nicht funktionieren wird. Du lässt die Variable $i1 gar nicht mit hochzählen.
Probiers mal so:
PHP:
   $fetch1 = mysql_query("SELECT DATE_FORMAT(datum, '%d') FROM counter"); 
  $i1 = 0; 
  while ($ds = mysql_fetch_object($fetch1)) { 
  $schnitt[$i1] = $ds -> datum; 
   $i1++;
   } 
  echo "Das sind im Schnitt ".array_sum($schnitt)." User am Tag.";

[EDIT] Da war ich leider wieder mal zu langsam +gg+
 
Zuletzt bearbeitet:
Ich finde es etwasProbier mal Folgendes:
PHP:
<?php

	$counterDaten = array();

	$query = '
		SELECT
		        COUNT(*) AS `anzahl_gesamt`
		  FROM
		        `counter`
		';
	$counterDaten['gesamt'] = mysql_result(mysql_query($query), 0);

	$query = '
		SELECT
		        COUNT(*) AS `anzahl_heute`
		  FROM
		        `counter`
		  WHERE
		        TO_DAYS(`datum`) = TO_DAYS(NOW())
		';
	$counterDaten['heute'] = mysql_result(mysql_query($query), 0);

	$query = '
		SELECT
		        COUNT(*) AS `anzahl_gestern`
		  FROM
		        `counter`
		  WHERE
		        TO_DAYS(`datum`) = TO_DAYS(DATE_ADD(`datum`, INTERVALL -1 DAY))
		';
	$counterDaten['gestern'] = mysql_result(mysql_query($query), 0);

?>
Oder existert etwa zu jedem Tag nur ein Datensatz?
 
Das mit dem "$i++;", das habe ich irgendwie vergessen hier reinzuposten, aber das habe ich natürlich. Es ist lieb von euch, aber könntet ihr mir nicht sagen, was an meinem Code nicht passt? Ich meine... Das muss doch an der "mysql_query();" liegen, oder Bitte nennt mir keine Alternativen, da ich ziemlich am Anfang bin und 1. Den code nicht verstehen würde ^^ und 2. Ich es selbst probieren möchte...

Danke! :)
Gruß
icecream

Hier nochmal der KOMPLETTE code:
PHP:
<?php
include("config.php");
$ip = $_SERVER['REMOTE_ADDR'];
$heute = date("Y-m-d");
$d = date("d");
$d = $d - 1;
$gestern = date("Y-m-".$d);
$fetch = mysql_query("SELECT * FROM counter WHERE ip = '$ip' AND datum = '$heute'");
if (!mysql_fetch_object($fetch)) {
mysql_query("INSERT INTO counter (ip, datum) VALUES ('$ip', NOW())");
}
$b = mysql_query("SELECT COUNT(*) FROM counter");
$b = mysql_result($b,0);
$bHeute = mysql_query("SELECT COUNT(*) FROM counter WHERE datum = '$heute'");
$bHeute = mysql_result($bHeute,0);
$bGestern = mysql_query("SELECT COUNT(*) FROM counter WHERE datum = '$gestern'");
$bGestern = mysql_result($bGestern,0);
echo "Heute ist der $heute";
echo "<b>$b</b> Besucher <b>gesamt</b>.<br>";
echo "<b>$bHeute</b> Besucher <b>heute</b><br>";
echo "<b>$bGestern</b> Besucher <b>gestern</b><br>";
$fetch1 = mysql_query("SELECT DATE_FORMAT(datum, '%d') FROM counter");
$i1 = 0;
$i1++;
while ($ds = mysql_fetch_object($fetch1)) {
$schnitt[$i1] = $ds -> datum;
}
echo "Das sind im Schnitt ".array_sum($schnitt)." User am Tag.";
?>
 
Hallo,
so vielleicht:
PHP:
<?php 
	include("config.php");
	
	$ip = $_SERVER['REMOTE_ADDR']; 
	$heute = date("Y-m-d");
	$d = date("d"); 
	$d = $d - 1;
	$gestern = date("Y-m-".$d);
	
	$fetch = mysql_query("SELECT * FROM counter WHERE ip LIKE '$ip' AND datum LIKE '$heute'"); 
	
	if (!mysql_fetch_object($fetch)) { 
		mysql_query("INSERT INTO counter (ip, datum) VALUES ('$ip', NOW())"); 
	} 
	
	$b = mysql_query("SELECT COUNT(*) FROM counter"); 
	$b = mysql_result($b,0); 
	
	$bHeute = mysql_query("SELECT COUNT(*) FROM counter WHERE datum LIKE '$heute'"); 
	$bHeute = mysql_result($bHeute,0); 
	
	$bGestern = mysql_query("SELECT COUNT(*) FROM counter WHERE datum LIKE '$gestern'"); 
	$bGestern = mysql_result($bGestern,0); 
	
	echo "Heute ist der $heute"; 
	echo "<b>$b</b> Besucher <b>gesamt</b>.<br>"; 
	echo "<b>$bHeute</b> Besucher <b>heute</b><br>"; 
	echo "<b>$bGestern</b> Besucher <b>gestern</b><br>";
	
	$fetch1 = mysql_query("SELECT DATE_FORMAT(datum, '%d') FROM counter"); 
	$i1 = 0;
	
	while ($ds = mysql_fetch_object($fetch1)) { 
		$schnitt[$i1] = $ds -> datum;
		$i1++; 
	}
	
	echo "Das sind im Schnitt ".array_sum($schnitt)." User am Tag."; 
?>

mfg
forsterm
 
Zuletzt bearbeitet:
Zurück