Sven Rautenberg: Hilfe! Mein Skript vertauscht mir Spalten!!!

Beitrag lesen

Moin!

Zwei Dinge fallen mir auf:

$result = safe_query($query) or die(mysql_error());

Erstens: Was tut "safe_query"? Ist jedenfalls kein Standardbefehl von PHP.

while (list($cat_id, $category, $button, $buttonover) = mysql_fetch_array($result))

Hast du schonmal das Array angeschaut, welches mysql_fetch_array zurückliefert? Da sind zum einen Hash-Schlüssel der Spaltennamen drin, aber auch numerische Indices! Also ungefähr doppelt soviele Daten, wie du deiner Liste zuweist, und auch in einer völlig beliebigen Reihenfolge (wie das bei einem Hash eben so ist).

Also solltest du entweder sowas machen:
$resulthash = mysql_fetch_array($result);
...
echo $resulthash['cat_id']; // Angenommen die Spalte heißt auch so

oder explizit den kurzen Variablennamen die Inhalte des Hashes zuweisen, oder durch Verwendung eines Ergebnistyps die Funktion dazu bewegen, nur ein numerisches Array oder einen Hash zurückzugeben. Siehe auch http://www.php.net/manual/de/function.mysql-fetch-array.php.

- Sven Rautenberg