• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] mysql classe will nicht.

Status
Für weitere Antworten geschlossen.
C

chillmaster

Guest
Also hier mal der Fehler:

Fatal error: Call to undefined method sql_db::sql_query() in C:\Programme\xampp\htdocs\greatbook\common.php on line 82

dann mal wie ich die mysql classe erstelle, und welcher code das verursacht:

PHP:
$db = new sql_db($sql_server, $sql_user, $sql_password, $sql_database);
include($greatbook_root_path. 'includes/constants' .$phpEx);
//
// We needn´t the password any longer so delete it
//
unset($sql_password);
//
// fetch config datas
//
$greatbook_config = array();
$sql = 'SELECT * FROM '.CONFIG_TABLE;
$result = $db->sql_query($sql);

zeile 82 ist das result.
soweit zum php, da ich nun nicht weiter weis was ich alles posten kann, stell ich meine jetzige mysql classe auch mal mit rein:

PHP:
<?PHP
//
// check constant
//
if (!defined('IN_GREATBOOK'))
{
die('Hacking attempt');
}
//
// declar mysql class
//
class sql_db
{
//
// declar variables
//
 
var $connection_id;
var $result;
 
//
// declar functions
//
 
function sql_db($sql_server, $sql_user, $sql_password, $sql_database)
{
$this->connection_id = mysql_pconnect($sql_server, $sql_user, $sql_password);
 
if (!$this->connection_id)
{
die(mysql_error());
} 
else
{
$this->connection_id = mysql_select_db($sql_database);
 
if (!$this->connection_id)
{
die(mysql_error());
}
else
{
return $this->connection_id;
}
}
 
function sql_query($sql)
{
$this->result = mysql_query($sql);
 
if (!$this->result)
{
die(mysql_error());
}
else
{
return $this->result;
}
}
}
 
} // end class
?>

danke

und warum mag der wysiwyg mein weaverslave nicht und macht immer diese beschissenen size 2 und color rein? weil mein editor highlightet? das kanns ja wohl nicht sein*bin schon leise*
 
Werbung:
PHP:
else
{$this->connection_id = mysql_select_db$sql_database);

fehlt die schliessende klammer der else und unten ist dann eine zuviel

Mod-Edit: Code-Tags editiert - Mach' dir keine Mühne mit Farben, Code-Tags sind einfacher (XraYSoLo)
 
nö nicht ganz, ich hatte bei der letzten function zwei schliesende } klammern und die 2te function war sozusagen in der 1.ten eingebettet. aber nun funktioniert es wunderbar, und ich danke für deine wachsamen äuglein.

edit: ich befasse mich heute eigentlich zum ersten mal mit classen, was stimmt denn da schon wieder nicht? es wird kein fehler ausgegeben, und kein echo:

PHP:
$sql = 'SELECT * FROM '.CONFIG_TABLE;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetch_assoc($result))
{
echo $row['version'];
}

und die function:

PHP:
function sql_fetch_assoc($result)
{
$this->result = mysql_fetch_assoc($result);

if (!$this->result)
{
die(mysql_error());
}
else
{
return $this->result;
}
}
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
ich will ja nicht schonwieder mit dir streiten aber wenn da nach der else { statment die klammer fehlt und die dann am ende zuviel ist kannst du nicht einfach nö sagen. es ist wie es ist!

nur mal so zum drüber nachdenken du überschreibst eine resource id mit einem resultset

Mod-Edit: Doppelpost zusammengeführt - Bitte das nächste Mal draus achten (XraYSoLo)
 
man ich benutz die sch**le classen erst seit paar tagen. ich weißwo´s hängt, aber nicht wie ich es lösen kann sonst hätte ich nicht gepostet.
 
Dann probier halt mal etwas rum. Du hast doch einen Thread zum Thema Performance von MySQL-Abfragen erstellt ... dann solltest du das Problem hier auch ohne Hilfe gelöst bekommen.

Mal drüber nachdenken!
 
Werbung:
PHP:
class sql_db
{
//
// declar variables
//

var $connection_id;
var $result;
var $queryId;
//
// declar functions
//

function sql_db($sql_server, $sql_user, $sql_password, $sql_database)
{
$this->connection_id = mysql_pconnect($sql_server, $sql_user, $sql_password);

if (!$this->connection_id)
{
die(mysql_error());
}
else
{
$this->connection_id = mysql_select_db($sql_database);
}
if (!$this->connection_id)
{
die(mysql_error());
}
else
{
return $this->connection_id;
}
}

function sql_query($sql)
{
$this->queryId = mysql_query($sql);

if (!$this->queryId)
{
die(mysql_error());
}
else
{
return $this->queryId;
}
}
function sql_fetch_assoc($queryId=null)
{

if(empty($queryId)){
    $queryId = $this->queryId;
}
$this->result = mysql_fetch_assoc($queryId);

if (!$this->result)
{
die(mysql_error());
}
else
{
return $this->result;
}
} 


}
 
also ich denke meins läuft, auch, aber nun spinnt was im code:

PHP:
$greatbook_config = array();
$sql = 'SELECT * FROM '.CONFIG_TABLE;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetch_assoc($result))
{
$greatbook_config[$row['config_name']] = $row['config_value'];
 
echo $row['config_value'];
}
echo $greatbook_config['version'];

das echo in der while schleife funktioniert, aber das echo danach nicht. woran kann das liegen?

edit: @xraysolo: wenn man was versucht einzurücken, dann ignoriert der wysiwyg das.
 
Werbung:
Was soll das hier bitte sein?
PHP:
function sql_db($sql_server, $sql_user, $sql_password, $sql_database)
{
    $this->connection_id = mysql_pconnect($sql_server, $sql_user, $sql_password);

    if (!$this->connection_id)
    {
        die(mysql_error());
    }
    else
    {
        $this->connection_id = mysql_select_db($sql_database);
    }
    if (!$this->connection_id)
    {
        die(mysql_error());
    }
    else
    {
        return $this->connection_id;
    }
}

Was soll bitte connection_id sein? Das passt doch von den Zuweisungen überhaupt nicht! Oder wolltest du das mit dem Code zeigen? Oder wie oder was?

Bzgl. "Problem mit echo". Lass dir das Array ausgeben .. und lerne endlich richtig zu debuggen Mann!
 
siehe:

PHP:
$greatbook_config[$row['config_name']] = $row['config_value'];

$row configname enthält version als string, und vonfig value eigentlich 1.0.0 deshalb sollte das auch so funktionieren.

ein print_r($greatbook_config); geht übrigens auch nicht. wieder keine ausgabe.. eines kann ich sagen, ich schaffe die classen sobald wie möglich ab und arbeite lieber wieder ohne.

edit. das ist der scheiß wysiwyg editor der nix von meinem eingerückten code annimt. das mit der connection id habe ich mir von foren abgeguckt, in der while schleife wird auch alles ausgegeben, aber danach nichtmehr. @ben was meinste genau mit debuggen? ich schau doch schon immer mit print_r wo der fehler hängt, und der ist diesmal der das das mit der while schleife nicht läuft.

nochmal edit: also nach der while schleife führt er überhaupt kein code mehr aus und ben meinst du nicht das man in deinem satz das mann in man ändern sollte?
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
ein print_r($greatbook_config); geht übrigens auch nicht. wieder keine ausgabe
Meine Fresse ... was gibt dann bitte
PHP:
echo '<pre>';
var_dump($greatbook_config);
echo '</pre>';

eines kann ich sagen, ich schaffe die classen sobald wie möglich ab und arbeite lieber wieder ohne.
Wenn dir die Fähigkeit und Geduld fehlt die Arbeit mit objektorientierten Strukturen zu lernen, dann ist das allein dein Problem.

Programmiere so, wie du es für richtig hälst. Niemand zwingt dich objektorientiert zu arbeiten.
 
nein, das sind 98 einträge in der datenbank. dein code bringt auch nix, nach der while schleife wird überhaupt nixmehr angenommen geschweige denn von ausgeführt.
 
Werbung:
was willst du denn? Deine Fresse hätte ich auch gerne.

Back to topic. Die mysql classe ist noch die alte, nicht die von dracul.

ein debuggen ist nicht möglich, auch hier wieder deine fresse ben.

es wird nach der while schleife nichts mehr geparst vom php, wenn ich:

PHP:
echo 'Bens Fresse';

noch mitreinschreibe wird dieses ebenfalls nicht ausgeben.
 
Werbung:
bleib bei deiner klasse dann ist auch klar warum es so gut geht ich hab die bei mir ausprobiert meine natürlich und die geht!!!
 
ok, hier:

php code:

PHP:
$db = new sql_db($sql_server, $sql_user, $sql_password, $sql_database);
include($greatbook_root_path. 'includes/constants' .$phpEx);
//
// We needn´t the password any longer so delete it
//
unset($sql_password);
//
// fetch config datas
//
$greatbook_config = array();
$sql = 'SELECT * FROM '.CONFIG_TABLE;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetch_assoc($result))
{
    $greatbook_config[$row['config_name']] = $row['config_value'];
}

mysql:

PHP:
<?PHP
//
// check constant
//
if (!defined('IN_GREATBOOK'))
{
    die('Hacking attempt');
}
//
// declar mysql class
//
class sql_db
{
    //
    // declar variables
    //

    var $connection_id;
    var $result;

    //
    // declar functions
    //

    function sql_db($sql_server, $sql_user, $sql_password, $sql_database)
    {
         $this->connection_id = mysql_pconnect($sql_server, $sql_user, $sql_password);

         if (!$this->connection_id)
         {
            die(mysql_error());
         } 
         else
         {
            $this->connection_id = mysql_select_db($sql_database);

            if (!$this->connection_id)
         {
            die(mysql_error());
         }
         else
         {
             return $this->connection_id;
          }
    }
}

function sql_query($sql)
{
    $this->result = mysql_query($sql);

    if (!$this->result)
    {
        die(mysql_error());
    }
    else
    {
         return $this->result;
    }
}

function sql_fetch_assoc($result)
{
    $this->result = mysql_fetch_assoc($result);

    if (!$this->result)
    {
        die(mysql_error());
    }
    else
    {
         return $this->result;
    }
}

} // end class
?>
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben