mok
Goto Top

Multiarray aus einem Mysql Resultset erstellen

Hi Leute,

stellt euch vor ihr habt ein resultset von mysql das ungefähr so aussieht (und ihr könnt diesen nicht ändern):

Hardware Fehlerart PC-NR Fehler Zusatzinformation PC Zusatzinformation
Soundkartekein ton213irgendwasschwarzes gehäuse
GPUkein bild213irgendwasschwarzes gehäuse
GPUkomisches geräusch213irgendwasschwarzes gehäuse
GPUkomisches geräusch213irgendwasschwarzes gehäuse
GPUkomisches geräusch231irgendwasrotes gehäuse

ich würde daruas gerne eine tabelle generieren die so ungefähr aussieht, das array sollte dann theoretisch genau so aussehen...

soundkarte
->kein ton
-->213 - irgendwas - schwarzes gehäuse 1x
gpu
->kein bild
-->213 - irgendwas - schwarzes gehäuse 1x
-> komisches geräusch
-->213 - irgendwas - schwarzes gehäuse 2x
-->231 - irgendwas - rotes gehäuse 1x


die anzahl der doppelten fehler müsste irgendwie berechnet werden... auf jedenfall bin ich am verzweifeln. Mein Kopf lässt mich nicht mal dazu kommen eine vernünftig überlegte Zeile zu schreiben. Könnt ihr mir helfen daraus ein gescheites Array zu basteln?

Gruß moK

EDIT:

so bin ungleiblicherweise auf eine 99%ige Lösung gekommen:


$first = TRUE;
while ($row = mysqli_fetch_row($result)) {
	
	if($first) {
	 $temp_fehlerart = $row[1]; 
	 $temp_hardware = $row;
	 $first = FALSE;
	}
	
	if($temp_fehlerart != $row[1]) {
		$pcliste_array = NULL;
		$temp_fehlerart = $row[1];
	}
	
	if($temp_hardware != $row) {
		$pcliste_array = NULL;
		$fehlerartliste_array = NULL;
		$temp_hardware = $row;
	}
	
		
	$pcliste_array = $row[2] . ';' . $row[3] . ';' . $row[4];    
	
	$fehlerartliste_array[$row[1]] = $pcliste_array;
	
	$hardwareliste_array[$row[0]] = $fehlerartliste_array;
	
}

jedoch fehlt mir immer noch die anztahl der doppelten oder mehrfachen fehler...

Content-Key: 166305

Url: https://administrator.de/contentid/166305

Printed on: April 19, 2024 at 04:04 o'clock

Member: dog
dog May 16, 2011 at 08:10:30 (UTC)
Goto Top
öhm?
SELECT *,COUNT(*) FROM tbl1 GROUP BY Hardware,Fehlerart,PC-NR,Fehler-Zusatzinformationen,"PC Zusatzinformationen"  
Member: moK
moK May 16, 2011 at 08:30:35 (UTC)
Goto Top
ich weiß.. leider kann ich es so aber nicht lösen... gehen wir davon aus das der select unantastbar ist und man sowas mit php lösen muss...
Member: dog
dog May 16, 2011 at 17:40:12 (UTC)
Goto Top
Und, ist doch genauso leicht...

<?php

	error_reporting(E_ALL|E_STRICT);
	ini_set('display_errors','On');  

	$sql = "SELECT * FROM tbl";  
	
	$q = mysql_query($sql);
	
	$data = array();
	
	while ($row = mysql_fetch_assoc($q)) {
		$path = &$data[$row['Hardware']][$row['Fehlerart']][$row['PC-NR']][$row['Fehler-Zusatzinformationen']][$row['PC Zusatzinformationen']];  
		if($path == null)
			$path = 0;
			
		$path++;	
}

	var_dump($data);

?>