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-ID: 166305

Url: https://administrator.de/forum/multiarray-aus-einem-mysql-resultset-erstellen-166305.html

Ausgedruckt am: 25.12.2024 um 02:12 Uhr

dog
dog 16.05.2011 um 10:10:30 Uhr
Goto Top
öhm?
SELECT *,COUNT(*) FROM tbl1 GROUP BY Hardware,Fehlerart,PC-NR,Fehler-Zusatzinformationen,"PC Zusatzinformationen"  
moK
moK 16.05.2011 um 10:30:35 Uhr
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...
dog
dog 16.05.2011 um 19:40:12 Uhr
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);

?>