Eigenes Forum & MySQL Klasse

Verwende NestedSet nur bei kleinen Datenmengen oder bei Datenmengen, die sich fast nie ändern, da jede Operation innerhalb des NestedSet mehr Performance kostet als bei einem "normalen" Modell.

Also meinst du jetzt ich sollte Nested Sets benutzen oder auf andere Weise versuchen das Problem zu lösen

Ja, denn genau das höchstwahrscheinlich ist der Grund. Wie ebenfalls schon gesagt soll mysql_query() direkt der Rückgabewert sein ohne ihn vorher in einer Objektvariablen zwischen zu speichern. Eventuell ist der Fehler damit behoben.

Das Query wird im moment so aufgebaut oder meinst du das mysql_fetch_array()?

PHP:
//::::: query :::::
    function query($str, $get = 0)
    {
        if(@!$this->query = mysql_query($str, $this->connection))
        {
            $this->make_error(2, "Kann den Befehl \"".$str."\" nicht ausführen", mysql_errno($this->connection), mysql_error($this->connection));
        }
        else
        {
            if($get == 1)
            {
                return $this->query;
            }
        }
	}
 
Also meinst du jetzt ich sollte Nested Sets benutzen oder auf andere Weise versuchen das Problem zu lösen

Das liegt bei deinem Konzept. Wie gesagt, wenn es kleine Datenmengen sind dann kann man NestedSet verwenden. Wenn es große Datenmengen oder komplexe sind, die sich fast nie ändern, dann kann man NestedSet auch verwenden. Andernfalls geht ab einem gewissen Grad Geschwindigkeit verloren.

Das Query wird im moment so aufgebaut oder meinst du das mysql_fetch_array()?

Schon richtig, ich meine [phpf]mysql_query[/phpf], wie nun drei mal gesagt:
mysql_query() direkt der Rückgabewert [...]

Betonung liegt auf dem "direkt". Also nicht erst in $this->query speichern, da ich davon ausging das eine Referenz erzeugt wird. Dies Teste bitte mal und wenn der Fehler dann weg ist, weist du woran es liegt.
 
Zuletzt bearbeitet:
Wenn ich anstatt $this->query gleich mysql_query() nehm funktioniert gar nichts mehr. Wenn ich auch noch die anderen änder bekomm ich auch nicht das richtige angezeigt
 
Darf ich die neue Funktion sehen?
Ruhig immer Änderungen mitliefern, sonst wird das ein sehr langer Thread mit stetigem hin und her.
 
Entschuldige bin heut etwas daneben :-(

Hier ist die Funktion

PHP:
//::::: query :::::
    function query($str, $get = 0)
    {
		if(@!mysql_query($str, $this->connection))
        {
            $this->make_error(2, "Kann den Befehl \"".$str."\" nicht ausführen", mysql_errno($this->connection), mysql_error($this->connection));
        }
        else
        {
            if($get == 1)
            {
                return mysql_query($str, $this->connection);
            }
        }
	}

wobei ich mir nicht erklären kann wann der $get auf 1 setzt
 
Zuletzt bearbeitet:
Mal was anderes wenn ich error_reporting(E_ALL); mache dann zeigt er mir das alle Querys leer sind aber alles so wies sein sollte angezeigt wird

Code:
Notice: Undefined variable: query_forum_last_thread in E:\xhodon\xampp\htdocs\fdl\forum.php on line 40

Notice: Undefined variable: query_forum_count_posts in E:\xhodon\xampp\htdocs\fdl\forum.php on line 44

Notice: Undefined variable: query_forum_count_threads in E:\xhodon\xampp\htdocs\fdl\forum.php on line 48

Notice: Undefined variable: query_forum_last_thread in E:\xhodon\xampp\htdocs\fdl\forum.php on line 40

Notice: Undefined variable: query_forum_count_posts in E:\xhodon\xampp\htdocs\fdl\forum.php on line 44

Notice: Undefined variable: query_forum_count_threads in E:\xhodon\xampp\htdocs\fdl\forum.php on line 48

Notice: Undefined variable: query_forum_last_thread in E:\xhodon\xampp\htdocs\fdl\forum.php on line 40

Notice: Undefined variable: query_forum_count_posts in E:\xhodon\xampp\htdocs\fdl\forum.php on line 44

Notice: Undefined variable: query_forum_count_threads in E:\xhodon\xampp\htdocs\fdl\forum.php on line 48

Notice: Undefined offset: 2 in E:\xhodon\xampp\htdocs\fdl\inc\functions.inc.php on line 476

Notice: Undefined offset: 1 in E:\xhodon\xampp\htdocs\fdl\inc\functions.inc.php on line 476

Notice: Undefined variable: query_forum_last_thread in E:\xhodon\xampp\htdocs\fdl\forum.php on line 40

Notice: Undefined variable: query_forum_count_posts in E:\xhodon\xampp\htdocs\fdl\forum.php on line 44

Notice: Undefined variable: query_forum_count_threads in E:\xhodon\xampp\htdocs\fdl\forum.php on line 48

Notice: Undefined offset: 2 in E:\xhodon\xampp\htdocs\fdl\inc\functions.inc.php on line 476

Notice: Undefined offset: 1 in E:\xhodon\xampp\htdocs\fdl\inc\functions.inc.php on line 476

Notice: Undefined variable: query_forum_last_thread in E:\xhodon\xampp\htdocs\fdl\forum.php on line 40

Notice: Undefined variable: query_forum_count_posts in E:\xhodon\xampp\htdocs\fdl\forum.php on line 44

Notice: Undefined variable: query_forum_count_threads in E:\xhodon\xampp\htdocs\fdl\forum.php on line 48

Notice: Undefined offset: 2 in E:\xhodon\xampp\htdocs\fdl\inc\functions.inc.php on line 476

Notice: Undefined offset: 1 in E:\xhodon\xampp\htdocs\fdl\inc\functions.inc.php on line 476

Notice: Undefined variable: query_forum_last_thread in E:\xhodon\xampp\htdocs\fdl\forum.php on line 40

Notice: Undefined variable: query_forum_count_posts in E:\xhodon\xampp\htdocs\fdl\forum.php on line 44

Notice: Undefined variable: query_forum_count_threads in E:\xhodon\xampp\htdocs\fdl\forum.php on line 48

Notice: Undefined offset: 2 in E:\xhodon\xampp\htdocs\fdl\inc\functions.inc.php on line 476

Notice: Undefined offset: 1 in E:\xhodon\xampp\htdocs\fdl\inc\functions.inc.php on line 476

Ich bin jetzt auch mal auf ne andere Klasse umgestiegen die ist von php-einfach.de

PHP:
<?
error_reporting(E_ALL);

/*
    @ PHP5 Mysql-klasse 
    @ Copyright by Web Communication World (www.wccw.in)
    @ Diese Klasse darf frei unter diesem Vermerk eingesetzt, verändert und weitergegeben werden
    @ Weitere Klassen, sind auf www.wccw.in Kostenlos erhältlich


    Verwendete Funktionen:
    @ mysql_connect
    @ mysql_select_db
    @ mysql_error
    @ mysql_query
    @ mysql_fetch_array
    @ mysql_fetch_assoc
    @ mysql_fetch_object
    @ mysql_fetch_row
    @ mysql_num_rows
    @ mysql_real_escape_string
    @ mysql_free_result
    @ mysql_insert_id
    @ mysql_close
    @ htmlspecialchars
    @ trigger_error
*/








class mysql
{
    private $host     = ''; 
    private $user     = '';
    private $passwort     = ''; 
    private $dbname     = '';
    private $last_injection = '';
    private $conn_id = null;
    
    
    
    
    public function __construct($host, $user, $passwort, $dbname)
    {
        $this->host     = $host;
        $this->user     = $user;
        $this->passwort = $passwort;
        $this->dbname     = $dbname;
        $this->connect_mysql();
        return($this->conn_id);
    }
    
    
    
    private function connect_mysql()
    {
        $this->conn_id = mysql_connect($this->host,$this->user,$this->passwort);
        
        if($this->conn_id === false)
        {
            $message  = "Verbindung zur Datenbank nicht m&ouml;glich.<br />\n";
            $message .= "Mysql-fehlermeldung: <br />\n";
            $message .= mysql_error();
            
            trigger_error($message);
            } 
            else 
            {
            $this->select_db();
        }
    }
    
    
    
    private function select_db()
    {
        $select = mysql_select_db($this->dbname,$this->conn_id);
        
        if($select === false)
        {
            $message  = "Die angegebene Datenbank \"".$this->dbname."\" existiert nicht.<br />\n";
            $message .= "Mysql-fehlermeldung: <br />\n";
            $message .= mysql_error();
            
            trigger_error($message);
        }
    }
    
    
    
    public function query($sqlcode)
    {
        $this->last_injection = mysql_query($sqlcode);
        
            if($this->last_injection === false)
            {
                $message  = "Fehler bei dem Ausf&uuml;hren eines Mysql-codes!<br />\n";
                $message .= "Mysql-Code: " . htmlspecialchars($sqlcode, ENT_QUOTES) . "<br />\n";
                $message .= "Mysql-fehlermeldung:<br />\n";
                $message .= mysql_error();
                trigger_error($message);
            }
            
        return($this->last_injection);
    }
    
    
    
    public function array_result($sql = NULL, &$row = '')
    {
        $inc = '';
        if($sql === NULL)
        {
            $inc = $this->last_injection;
            } else {
            $inc = $sql;
        }
        
        $row = mysql_fetch_array($inc);
        
        return($row);
    }
    
    
    
    public function row_result($sql = NULL, &$row = '')
    {
        $inc = '';
        if($sql === NULL)
        {
            $inc = $this->last_injection;
            } else {
            $inc = $sql;
        }
        
        $row = mysql_fetch_row($inc);
        
        return($row);
    }
    
    
    
    public function object_result($sql = NULL, &$row = '')
    {
        $inc = '';
        if($sql === NULL)
        {
            $inc = $this->last_injection;
            } else {
            $inc = $sql;
        }
        
        $row = mysql_fetch_object($inc);
        
        return($row);
    }
    
    
    
    public function assoc_result($sql = NULL, &$row = '')
    {
        $inc = '';
        if($sql === NULL)
        {
            $inc = $this->last_injection;
            } else {
            $inc = $sql;
        }
        
        $row = mysql_fetch_assoc($inc);
        
        return($row);
    }
    
    
    
    public function num_result($sql = NULL)
    {
        $inc = '';
        if($sql === NULL)
        {
            $inc = $this->last_injection;
            } else {
            $inc = $sql;
        }
        
        $num = mysql_num_rows($inc);
        
        return($num);
    }
    
    
    
    public function sql_string($string)
    {
        return(mysql_real_escape_string($string));
    }
    
    
    
    public function free_result($sql = NULL)
    {
        $inc = '';
        if($sql === NULL)
        {
            $inc = $this->last_injection;
            } else {
            $inc = $sql;
        }
        
        mysql_free_result($inc);
    }
    
    
    
    public function result($set = 0, $field = 0, $sql = NULL, &$row = '')
    {
        $inc = '';
        if($sql === NULL)
        {
            $inc = $this->last_injection;
            } else {
            $inc = $sql;
        }
        
        $row = mysql_result($result, $set, $field);
        
        return($row);
    }
    
    
    
    public function insert_id(&$row = '')
    {
    
        $row = mysql_insert_id();
        
        return($row);
    }
    
    
    
    public function close_connect()
    {
        mysql_close($this->conn_id);
    }
}



/************************************************************/
# Einfache anwendung:


$sql = new mysql("localhost","user","passwort","datenbank");

$res = $sql->query("SELECT * FROM `tabelle` ORDER BY `spalte` DESC;");
while($row = $sql->array_result($res))
{
    echo($row['spalte']."<br />\n");
}

$sql->free_result();

$sql->close_connect();
?>

Mit der Läufts eigentlich ich versteh nur nicht warum die querys als leer also undefined Variablen angezeigt werden
 
Zurück