Mailinglisten-Archive |
Hallo, erstmal ein gekuerzter Auszug aus meinen Klassen (Connecten usw. hab ich zur Uebersicht entfernt) : class DB { var $result; function Query($sql) { $this->freeResources(); $this->query = $sql; if (eregi("^select ", $this->query)) { // Testen auf SELECT if (($this->result = mysql_query($this->query, $this->conn)) == false) { $this->mysql_error = _(at)_mysql_error($this->conn); $this->mysql_errno = _(at)_mysql_errno($this->conn); $this->error = 1; return false; } if ( ($this->numrows = _(at)_mysql_num_rows($this->result)) <= 0) { _(at)_mysql_free_result($this->result); $this->mysql_error = _(at)_mysql_error($this->conn); $this->mysql_errno = _(at)_mysql_errno($this->conn); $this->error = 1; return false; } return $this->result; } else { if (($this->result = mysql_query($this->query, $this->conn)) == false) { $this->mysql_error = _(at)_mysql_error($this->conn); $this->mysql_errno = _(at)_mysql_errno($this->conn); $this->error = 1; return false; } if ( ($this->affected_rows = _(at)_mysql_affected_rows($this->conn)) == 0) { $this->mysql_error = _(at)_mysql_error($this->conn); $this->mysql_errno = _(at)_mysql_errno($this->conn); $this->error = 0; return true; // Query war OK, es hat sich nur nichts geaendert } else { $this->error = 0; return true; } } } } class CAT_MAIN extends DB { function CAT_MAIN() { DB::DB(); $this->error = 0; $this->prepareConnection(SQL_USER, SQL_PASS, SQL_DB, SQL_HOST); if(!$this->Connect()) { $this->error = 1; } } function getnav() { return $this->Query('SELECT * FROM nav ORDER BY position'); } function getsubnav($nid) { return $this->Query("SELECT * FROM subnav WHERE navid=$nid ORDER BY name"); } function pageNavigation() { $nav = $this->getnav(); while ($row = mysql_fetch_array($nav)) { // LINE 112 $re = $this->getsubnav($row["id"]); /* ..... */ while ($ro = mysql_fetch_array($re)) { echo $re["name"]; } } } } So. in pageNavigation() hole ich mir zuerst einen Result und speicher diesen in $nav ab. Diesen gehe ich per mysql_fetch_array durch und in dieser schleife hole ich mir einen 2. Result in $re. Der 1. Durchlauf der aeussern Schleife funktioniert problemlos, doch beim 2. Durchlauf kommt die Meldung: Warning: 3 is not a valid MySQL result resource in /data/www/cat.n-online.net/mods/catmainclass.php on line 112 Line 112 ist oben mit // LINE 112 gekennzeichnet zwecks Uebersicht. Es sieht so aus, als wuerde der innere Aufruf von $re = $this->getsubnav(...) die Variable $nav mit dem Result aus dem inneren Aufruf ueberscheiben (sowas bin ich bisher nur von meiner schlampigen C-Programmierung gewont). Sehe ich das richtig? Die Frage ist nun, wie kann ich das Problem beheben? Solange ich nur 1 Mysql-Result habe klappt meine Vererbung und Funktionen usw. problemlos, nur wenn ich 2 Results habe, die ich aber in 2 verschiedenen Variablen habe kommt dieser Fehler. Kann mir dazu jemand einen Tipp geben oder mir eine "bessere" Loesung zeigen? (Vielleicht sollte man das mit den Klassen anders machen?!) Vielen Dank, Thomas
php::bar PHP Wiki - Listenarchive