mysql classe will nicht.

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);
[/php]

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

[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 ?>

[/php]

[SIZE=2]danke[/SIZE]

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[SIZE=1]bin schon leise[/SIZE]

[php]
else
{$this->connection_id = mysql_select_db$sql_database);
[/php]

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‘];
}
[/PHP]

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;
}
}
[/PHP]

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!

[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;
}
}

}[/php]

ojee…mit einrücken is’ da echt nichts…könnteste das bitte noch nacheditieren, danke.

Nils aka XraYSoLo

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‘];
[/php]

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.

Wo deklariest du denn das
$greatbook_config[‚version‘]
in der while schleife :rolleyes:

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;
}

}[/php]

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‘];
[/php]

$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?

Meine Fresse … was gibt dann bitte
[php]echo ‚

‘;
var_dump($greatbook_config);
echo ‚
‘;[/php]

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.

mal ne frage du machst den ganzen affentanz um die versionsnummer aus der datenbank zu lesen?

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.

WERDE ICH HIER IGNORIERT. Boah ey …

poste mal das zeugs

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‘;
[/PHP]

noch mitreinschreibe wird dieses ebenfalls nicht ausgeben.

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‘];
}
[/PHP]

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 ?>

[/PHP]