Doppelte Werte in Array?

Dragonate

Erfahrenes Mitglied
Moin,

ich lese aus einer Tabelle die sich in einer mit Php.My.Admin erstellten Datenbank befindet einen Bestimmten Datensatz aus. Die Werte werden über "mysql_fetch_array" in ein Array gespeichert.

Hinterher gebe ich alle Werte dann über eine "foreach" Schleife in HTML aus.

Merkwürdigerweise gibt er alle Werte Doppelt aus in der Form : "Array[0] = wert" , "Array[0] = wert", "Array[1] = wert1" , "Array[1] = wert1", wert2, wert2 ....... usw.

Hier der betreffende Code :

Code:
if (count($errors) == 0) {
	
	mysql_select_db($_POST['datenbank_wert']) or die
	("Datenbank konnte nicht ausgewählt werden");
			
	$sql = "Select * FROM {$_POST['tabellen_wert']} WHERE id={$_POST['datensatz_wert']}";
	$resDatenSatz = mysql_query($sql);
			
	while($ds_inhalt = mysql_fetch_array($resDatenSatz)){
				
		$datensatz_array = $ds_inhalt;
				
	}
			
}

Und hier die Ausgabeschleife:

Code:
<table border="1">
	
	<?php
		foreach($datensatz_array as $value){
	?>
	<td class="info"><?php echo $value; ?></td>
	<?php
	}
	?>
		
</table>

Also wie gesagt, er holt sich die richtigen Inhalte, einen vollständigen Datensatz, und gibt diesen aber Doppelt in Form von jedem Wert 2 mal aus. In der Datenbank sind die Werte aber nur einmalig vorhanden !?
 
Zuletzt bearbeitet:
http://ch2.php.net/manual/de/function.mysql-fetch-array.php
mysql_fetch_array() ist eine erweiterte Version von mysql_fetch_row(). Die Daten werden sowohl unter numerischen Indizes des Ergebnis-Arrays abgelegt, als auch unter assoziativen Indizes. Als Schlüssel für die assoziativen Indizes werden die Feldnamen benutzt.

Das ergibt einen Array
Code:
Array[0] = wert
Array['feld1'] = wert
Array[1] = wert1 
Array'feld2'] = wert1
...

Wenn du nun einfach durchloopst, ist es ihm egal ob es mit index oder mit key gespeichert ist. Er gibt dir jeweils beide Einträge raus

Entweder du fügst bei mysql_fetch_array einen Parameter hinzu, der die Rückgabe auf "nur index" oder "nur key" beschränkt oder du nimmst gleich mysql_fetch_assoc() oder mysql_fetch_row()
 
Zurück