Andreas: Assoziative Arrays dynamisch aufbauen (die 2.)

Hallo,
ich habe ein Assoziatives Array das so aussieht:
$this->var['send_news'] = $row['send_news'];
$this->var['send_blog'] = $row['send_blog'];
.....
return $this->var;

Damit werden Berechtigungen in einem CMS gesteuert.
Das ganze möchte ich jetzt dynamisieren mit folgender Funktion:
 function read() {
  Global $portal;
   $group = $portal->var['group'];
  $query = mysql_query("SELECT * FROM groups where id = '$group'");
  $numfields = mysql_num_fields($query);
  While ($row = mysql_fetch_array($query)){
   for ($i=0; $i < $numfields; $i++) {
    $fieldname = mysql_field_name($query, $i);
    $this->var[$fieldname] = $row[$fieldname];
   }
  }
  return $this->var;
 }

Wenn ich innerhalb der Schleife versuche $this->var[$fieldname] auszugeben wird nichts angezeigt, gebe ich $fieldname oder $row[$fieldname] aus wird alles richtig angezeigt. Wo liegt das Problem? Weiss nicht weiter.

Gruß Andreas

  1. echo $begrüßung;

    Wenn ich innerhalb der Schleife versuche $this->var[$fieldname] auszugeben wird nichts angezeigt, gebe ich $fieldname oder $row[$fieldname] aus wird alles richtig angezeigt. Wo liegt das Problem?

    Hast du das error_reporting auf E_ALL stehen, so dass PHP Hinweise auf nicht initialisierte Variablen geben kann? Was sagt ein var_dump() der entsprechenden Variablen? echo $variable ist zwar nicht schlecht, doch var_dump($variable) ist genauer.

    echo "$verabschiedung $name";

  2. Moin!

    Das ganze möchte ich jetzt dynamisieren mit folgender Funktion:

      
    
    >  function read() {  
    >   Global $portal;  
    
    // Globale Variablen sind böse. Jetzt machst du schon OOP, warum dann trotzdem so ein Müll?  
      
    
    >    $group = $portal->var['group'];  
    
    // Unnötiges Kopieren von Variableninhalten.  
      
    
    >   $query = mysql_query("SELECT * FROM groups where id = '$group'");  
    
    // Kein Escaping von $group - bist du unter allen Umständen sicher, dass da keine bösen Werte drinstehen können?  
    // Außerdem ist SELECT * böse - selektiere die Werte, die du abfragen willst.  
      
    /*  
    
    >   $numfields = mysql_num_fields($query);  
    >   While ($row = mysql_fetch_array($query)){  
    >    for ($i=0; $i < $numfields; $i++) {  
    >     $fieldname = mysql_field_name($query, $i);  
    >     $this->var[$fieldname] = $row[$fieldname];  
    >    }  
    >   }  
    
    */  
    // all das geht einfacher mit  
    $this->var = mysql_fetch_assoc($query);  
    // Du mußt nicht die einzelnen MySQL-Felder, ihre Namen und Inhalte ermitteln und kopieren, wenn es dafür schon eine Funktion gibt, die direkt ein assoziatives Array mit alledem holt.  
      
    
    >   return $this->var;  
    
    // fraglich ist, ob die Klasse tatsächlich eine Eigenschaft "var" benötigt. Wegen der Rückgabe sicher nicht.  
    
    >  }  
    
    

    - Sven Rautenberg

    --
    "Love your nation - respect the others."