Eigenschaft aus Klasse ausgeben

chuvak

Erfahrenes Mitglied
Ich habe eine Klasse User, wo ich aus einer Datenbank mit einer While-Schleife und mysql_fetch_assoc alle Informationen über die User hole (z.B. ID, Name, usw). Das Ergebnis möchte ich in der Datei liste.php strukturiert in mehreren DIV-Boxen anzeigen.

Im Moment habe ich das so:
PHP:
 // Auszug aus der Klasse User 

 $sql = "SELECT * FROM user"; 
 $res = mysql_query($sql); 
 while ($row = mysql_fetch_assoc($res)) { 
 $id = htmlspecialchars($row['id']); 
 $name = htmlspecialchars($row['name']); 
// ... 

 echo ' 
  <div> 
  <div>' . $id . '</div> 
  <div>' . $name . '</div> 
// ... 
</div>';

Ich möchte die Ausgabe aber gerne nicht bereits in der Klasse "vorformatieren" (in DIV-Boxen verpacken), sondern erst in der Datei liste.php.

Würde das auch so gehen:

PHP:
  // Erweiterung der Klasse User 

 $id = "";       // neue Eigenschaft einfügen 
 $name = "";  // neue Eigenschaft einfügen 

 $sql = "SELECT * FROM user"; 
 $res = mysql_query($sql); 
 while ($row = mysql_fetch_assoc($res)) { 
 $id = htmlspecialchars($row['id']); 
 $name = htmlspecialchars($row['name']); 
// ... 

 echo ' 
  <div> 
  <div>' . $this->id = $id . '</div>                // mit $this zuweisen 
  <div>' .  $this->name = $name . '</div>     // mit $this zuweisen 
// ... 
</div>';
Und in der Datei liste.php ausgeben
PHP:
   // Auszug aus der Datei liste.php 

$user = new User(); 

echo '<div>' . $user->id . '</div>'; 
echo '<div>' . $user->name . '</div>'; 

// ...
In der Datei liste.php müsste man auch irgendwie eine Schleife einbauen...
Ist meine Idee umsetzbar?

Kurz: Ich möchte die Klassen/Funktionen von der Ausgabe (DIV, CSS, usw) trennen.
 
Ich vermute mal, dass der Code in deiner Klasse so aussehen sollte, denn so wie du ihn als "verändert" eingereicht hast, ist er immer noch vorformatiert.
PHP:
$sql    = 'SELECT * FROM `user`';
$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result)) {
    $this->id[]   = htmlspecialchars($row['id']);
    $this->name[] = htmlspecialchars($row['name']);
}

Und dann kannst du deinen Quelltext so formatieren:
PHP:
$user = new User();

foreach($user->id as $key => $value) {
    echo '<div>'.$value.'</div>'."\n";
    echo '<div>'.$user->name[$key].'</div>'."\n";
}
 
Er liefert leider:
Notice: Undefined property: Box::$id
Warning: Invalid argument supplied for foreach()
PHP:
  $res = mysql_query($sql);
      while ($row = mysql_fetch_assoc($res)) {
        $this->id[] = htmlspecialchars($row['id']);
PHP:
foreach($user->id as $value)
{
  echo $value;
}
 
Zur ersten Meldung: füge in deiner Klasse noch folgendes hinzu:
PHP:
class User {
    public $id   = array();
    public $name = array();
    
    // ...
}
Und zur zweiten Meldung: das bedeutet dann wohl auch, dass deine Datenbankabfrage keine Datensätze als Ergebnis liefert.
 
Zurück