Werte eines zweidimensionalen Arrays nur ein Zeichen lange

deltacon

Mitglied
Hallo Forum!

ein kniffliges Problem:
ich habe eine Funktion (PHP), der ich ein Array (mit ids von Artikeln einer DB) übergebe.
In der Funktion lese ich dann Kategorien aus (ebenfalls ids) und ordne die übergebenen ids den Kategorien zu.
Die Funktion soll nun ein zweidimensionales Array zurückgeben nach der Struktur
PHP:
<?php
$array[$kategorie_id][$artikel_id] = $artikel_ueberschrift;
?>
Das tut sie auch alles ordnungsgemäß, nur dass der Wert jedes Elements des Arrays nur ein Zeichen lange ist (also wenn z.B. das array $array[1][1] den Wert "die frau mit dem damenbart" hat, gibt echo $array[1][1] "d" aus.

Ich weiß nicht mehr weiter, woran das liegen kann. Ich poste hier noch meine Funktion:
PHP:
<?php
//Funktion, der ein Array mit Artikel IDs übergeben wird. Die Funktion gibt dann ein zweidimensionales
//Array zurück mit den Artikeln (2. Dimension) und den jeweiligen Kategorien (1. Dimension)
function sort_articles($article_ids)
{
    //Tabellennamen
    global $tbl_kategorien;
    global $tbl_artikel;
    
    //Aus Array String machen für SQL Abfrage
    $articles = implode(",", $article_ids);
    
    //Array für Endergebnis indizieren
    $sorted_array = array();

    //1. Dimension - Kategorien aus Datenbank
    $kat_query = mysql_query("SELECT id FROM $tbl_kategorien");
    while($kat_array = mysql_fetch_assoc($kat_query))
    {
        //id der Kategorie aus DB
        $kat_id = $kat_array['id'];
        
        //Element zum Ausgabearray hinzufügen - 1. Dimension
        $sorted_array[$kat_id] = $kat_id;
        
        //Query für die 2. Dimension - jeder Artikel des Arrays in dieser Kategorie
        $article_query = mysql_query("SELECT id,ueberschrift FROM $tbl_artikel WHERE kategorien=$kat_id AND id IN ($articles)");
        
        while($article_array = mysql_fetch_assoc($article_query))
        {
            //Definition der Elemente und Schreiben in array
            $artikel = $article_array['ueberschrift'];
            $id = $article_array['id'];
            $sorted_array[$kat_id][$id] = $artikel; 
        }
    }
    return $sorted_array;
}
?>
Vielleicht seht ihr etwas, was ich nicht sehe....danke schon mal!
lg, Bernie
 
Versuch mal folgende Funktion:
PHP:
<?php
	function sort_articles($article_ids) {
		global $tbl_kategorien;
		global $tbl_artikel;
    
		$sorted_array = array();

		$query = "
			SELECT
			        `a`.`id` AS `idArtikel`,
			        `a`.`ueberschrift`,
			        `k`.`id` AS `idKategorie`
			  FROM
			        `".$tbl_kategorien."` `k`,
			        `".$tbl_artikel."` `a`
			  WHERE
			        `k`.`id` = `a`.`kategorien`
			    AND `k`.`id` IN (".implode(',', $article_ids).")
			";
		if( !$result = mysql_query($query, MYSQL_ASSOC) ) {
			echo '<p><strong>MySQL Error <tt>'.mysql_errno().'</tt>:</strong> '.htmlspecialchars(mysql_error()).'<pre>'.$query.'</pre></p>';
			exit;
		}
		while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
			$sorted_array[$row['idKategorie']][$row['idArtikel']] = $row['ueberschrift'];
		}
		return $sorted_array;
	}
?>
 

Neue Beiträge

Zurück