Erstellen einer kleinen Statistik

E

Ec16

Hi,

nach dem ich nun mein Problem mit der URL Übergabe und den Formular endlich in den Griff bekommen habe, habe ich nun wieder das nächste Problem.

Hab mir da so eine kleine Statistik gebastelt.

Nun möchte ich es aber so machen das wenn man auf der Seite nach z.B. Jahr filtert, auch nur der Wert ausgegeben wird für das Jahr und nicht alle.
Hatte da schon ein wenig rum gebastelt aber wie so immer bei mir nur mit Fehlern.
Die Daten für das Jahr würde ich dann auch so wie den Rest per Formular übergeben.
 
Zuletzt bearbeitet von einem Moderator:
Ach du meine Güte.
Soviele einzelne DB-Zugriffe für immer dasselbe - sowas gehört in ein SQL. Einmal DB-Zugriff.

Also, zu deinem Problem.
item: Was willst du mit einem Jahr filtern? (welches der 10'000 Queries)
item: Was hast du schon Probiert?
item: Und GAAAAAAAAANZ wichtig, Was für Fehlermelduingen. Weisst du, Fehlermeldungen sagen einem was falsch ist. Sie sind dazu da, einem bei der Fehlersuche zu helfen.
 
Nunja, ohne Fehlermeldung ists grad nicht einfach dir zu helfen.

Wenn keiner von deinen beiden Filtern gesetzt ist, hast du kein "WHERE" in den SQLs um den Typ auszufiltern.


Aber wie oben schon angedeutet, fasse deine SQLs zusammen...

PHP:
//Alle gewünschten Typen auflisten und mit 0 Initialisieren
//TODO Liste vervollständigen
$totals = array('tornado'=>0, 'tornadof0'=>0, 'sturmboe'=>0);

//Formular auswerten und WHERE zusammenstellen
$wheres = array();
if (isset($_GET['year']) && $_GET['year'] != 'alle')
	$wheres[] = "year = " . mysql_real_escape_string($_GET['year']);
}
if (isset($_GET['country']) && $_GET['country'] != 'alle'){
	$wheres[] = "country = '" . mysql_real_escape_string($_GET['country']);	
}
if(count($wheres)>0) $where = "WHERE ".implode(' AND ', $wheres);

// Alle vorhanden Typen zählen
$sql = "SELECT type, COUNT(*) AS cnt FROM markers {$where} GROUP BY type";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)){
	// Tpyen überschreiben
	$totals[$row['type']] = $row['cnt'];
}
//Noch die Gesammtanzahl dazu nehmen
$result = mysql_query("SELECT * FROM markers");
$totals['all'] = mysql_num_rows($result);

//Deine $gesammtzahltorn würde dann etwa so aussehen
$selectedTypes = array('tornado','tornadof0','tornadof1','tornadof2','tornadof3','tornadof4','tornadof5');
$selectedTotals= array_intersect_key($totals, array_flip($selectedTypes));
$gesamtzahltorn = array_sum($selectedTotals);
 
PHP:
echo $totlas['tornadof0'];
Bitte versuche den Code zu verstehen. Nimm dir die PHP-Hilfe zur Hand für Befehele die du nicht kennst. Wenn du dann immer noch nicht verstehst was da passiert, dann frage nach.

Aber einfach nur C&P bringt dir nicht viel.
 
Zurück