Problem mit echo und einem assoziativen Array

dUDALUS

Grünschnabel
Hallo

Ich habe meine Funktionen extern in der functions.php ausgelagert. Nun möchte ich etwa 50 Werte aus der MySQL Datenbank abfragen. Die getDataUser Funktion funktioniert mit var_dump, jedoch möchte ich die Sachene inzeln per echo ausgeben können, wie zB so:

echo ($data['Name']);

Jedenfalls funktioniert das nicht, denn ich vermute, echo kann kein assoziatives Array ausgeben

Hier die Aufruf-Datei:

PHP:
<?php
	session_start(); 
	include 'functions.php';	
	if(isset($_SESSION['login']) && $_SESSION['login'] == 1) {
		$data = getDataUser($_SESSION['username']);
		//var_dump($data);
		//var_dump($data);
		echo ($data["Name"]);
	} else {
		header("Location:index.html");
	}
?>

Hier die funtions.php. Es ist keine Klasse oder so, eine reine Funktion mit dem Parameter username:

PHP:
	function getDataUser($username) {
		// Verbindung zum nicht passwortgeschuetzten MySQL Server
		$link = mysql_connect('localhost', 'root', '')
		or die ("Konnte nicht verbinden, Grund ".mysql_error());
		// Datenbank test2 wird angewaehlt
		$db_selected = mysql_select_db("test3")		
		or die ("Konnte Datenbank nicht auswaehlen, Grund ".mysql_error());
		// Query wird vorbereitet
		$sql = "SELECT * FROM Spieler WHERE Name='".$username."'";		
		// MySQL Query
		$query = mysql_query($sql)
		or die ("Query konnte nicht ausgefuehrt werden, Grund ".mysql_error());
		// Rows auslesen
		while($row = mysql_fetch_array($query, MYSQL_ASSOC)) 
		{
			$temp[] = $row;
		}
		return($temp);
	}


MfG dUDA
 
Du hoslt dir ja nur einen Datensatz in deiner Funktion getDataUser, warum verwendest du dann mysql_fetch_array() ? Mit mysql_fetch_row() sollte es funktionieren.

PHP:
function getDataUser($username) {
        // Verbindung zum nicht passwortgeschuetzten MySQL Server
        $link = mysql_connect('localhost', 'root', '')
        or die ("Konnte nicht verbinden, Grund ".mysql_error());
        // Datenbank test2 wird angewaehlt
        $db_selected = mysql_select_db("test3")        
        or die ("Konnte Datenbank nicht auswaehlen, Grund ".mysql_error());
        // Query wird vorbereitet
        $sql = "SELECT * FROM Spieler WHERE Name='".$username."'";        
        // MySQL Query
        $query = mysql_query($sql)
        or die ("Query konnte nicht ausgefuehrt werden, Grund ".mysql_error());
        // Rows auslesen
        $row = mysql_fetch_row($query);

        return $row;
    }
 
Zuletzt bearbeitet:
Das müsste dir eine Ausgabe mit dem Wert Array geben. Am besten wäre es, wenn du dir die Daten in einer Schleife ausgeben lässt. Dazu solltest du aber vorher mal genau hinschauen, wie dein Array aufgebaut ist: es ist ein zweidimensionales Array, wobei in der ersten Dimension Schlüssel von 0 bis n - 1 (n ist die Anzahl an ausgelesenen Datensätzen) vorhanden sind, in der zweiten Dimension die Spaltennamen aus deiner Abfrage. Du könntest also dein Skript so ändern:
PHP:
session_start();  
include 'functions.php';     

if(isset($_SESSION['login']) && $_SESSION['login'] == 1) { 
    $data = getDataUser($_SESSION['username']); 
    //var_dump($data); 
    //var_dump($data); 
    foreach($data as $row) {
        foreach($row as $column => $value) {
             echo $column . ': ' . $value . '<br />';
        } 
    }
} else { 
    header('Location:index.html'); 
}
 
Zuletzt bearbeitet:
Hallo

Danke, gibt es aber eine Möglichkeit, sowas assoziativ und nicht numerisch anzusprechen, da sich ab und zu mal was in der Datenbank ändert und ich nicht immer anpassen will ;)

Simon

Edit
Okay danke hat geklappt, dank euch vielmals ;)
 
Zuletzt bearbeitet:
Huhu

Japp hab ich auch feststellen dürfen ;)

Jedenfalls mach ich mich jetzt dann daran, das ganze schön geordnet auszugeben. problem also gelöst ;)

MfG Simon
 
Nein Maniac, das war nicht auf deinen Beitrag bezogen. Es ist nur so eine Erkenntnis aus fünf Jahren PHP, dass echo manchmal Array ausgibt.
PHP:
$a = array();
echo $a;

EDIT: Verdammt! Da der Schlüssel name in seinem Array gar nicht existiert, gibt echo null aus.
 
Zuletzt bearbeitet:
Nein Maniac, das war nicht auf deinen Beitrag bezogen. Es ist nur so eine Erkenntnis aus fünf Jahren PHP, dass echo manchmal Array ausgibt.
PHP:
$a = array();
echo $a;

Nicht nur manchmal, echo gibt bei einem Array immer Array aus, es sei denn man gibt die Schlüssel/Bezeichner mit:
PHP:
$array = array(1,2,3);
echo $array;      // ausgabe: Array
echo $array[0]; // ausgabe: 1
 
Wie gesagt: echo gibt manchmal Array aus. Das sagt noch nichts darüber aus, welchen Datentyp der Wert hatte, den ich mit echo ausgebe. In dem Fall, dass ich mit echo ein Array ausgebe, bekomme ich logischerweise immer Array ;)
 
Zuletzt bearbeitet:
Zurück