Hallo zusammen
Ich habe folgenden Code, der Daten aus einer Datenbankt liest, und diese in einer While Schleife verarbeitet. Es ist nur ein Beispielcode um das Problem darzustellen. Ich kann im Skript kein JOIN machen, da ich die einzelnen While schleifen brauche.
Ausgabe:
Erwartet habe ich, dass ich mindestens 2 mal ein 'x' bekomme, da ich ja auch 2 Datensätze hab.
Der Fehler ist mir bekannt. Die methode select() ruft die Methode query() auf, welche das ergebnis in $this->result speichert. Dieses Attribut wird bei der inneren While schleife überschrieben.
Meine frage ist nun, wie kann ich das so ändern, dass ich nicht überall, wo diese verschachtelte While schleife vorkommt, änderungen vornemen kann?
Bzw. Ich will nur die Klasse bzw. die Methoden ändern.
Habt ihr eine Idee?
Ich habe folgenden Code, der Daten aus einer Datenbankt liest, und diese in einer While Schleife verarbeitet. Es ist nur ein Beispielcode um das Problem darzustellen. Ich kann im Skript kein JOIN machen, da ich die einzelnen While schleifen brauche.
PHP-Code:
$mysql->select('*', $prefix.'option_cat'); // result 1
echo $mysql->count().'<br />';
while ($cat = $mysql->fetchRow()) { // result 1
echo 'x<br />';
$mysql->select('id,name,value,description', $prefix.'option', 'WHERE cat = '.sql($cat['id']));
// result 2
echo $mysql->count().'<br />';
while ($option = $mysql->fetchRow()) { // result 2
echo 'z<br />';
}
}
Code:
2 x 7 z z z z z z z
Der Fehler ist mir bekannt. Die methode select() ruft die Methode query() auf, welche das ergebnis in $this->result speichert. Dieses Attribut wird bei der inneren While schleife überschrieben.
PHP-Code:
public function query($query) {
$this->result = mysql_query($query,$this->connection)
or die('Error: '.mysql_error($this->connection));
$this->counter=NULL;
}
public function select($fields, $table, $zusatz = '') {
$sql = "SELECT ".$fields." FROM ".$table." ".$zusatz.";";
$this->query($sql);
return true;
}
Bzw. Ich will nur die Klasse bzw. die Methoden ändern.
Habt ihr eine Idee?
Kommentar