Seite 1 von 1
mögliche user_id herausfinden
Verfasst: 06.11.2006 14:52
von Lausch
Guten Tag, ich dreh hier grad leicht durch...
Ich habe den Code aus der phpbb-register entnommen:
Code: Alles auswählen
// $tableprefix = "phpbb_";
// $usertable = "phpbb_users";
define('USERS_TABLE', $tableprefix.'users');
$sql = "SELECT MAX(user_id) AS total
FROM " . USERS_TABLE;
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
}
if ( !($row = $db->sql_fetchrow($result)) )
{
message_die(GENERAL_ERROR, 'Could not obtain next user_id information', '', __LINE__, __FILE__, $sql);
}
$user_id = $row['total'] + 1;
echo "$user_id";
Jetzt sollte ich die nextmögliche user_id angezrigt bekommen jedoch erhalte ich nur folgende ausgabe:
Fatal error: Call to a member function on a non-object in F:\server\xampp\htdocs\a.php
und zwar hier
if ( !($result = $db->sql_query($sql)) )
wieso?
hab ich sicher irgendwo was falsch ausgeklammert?
mysql connect funktioniert 100%, daran liegts nicht.
Gruss
Lausch
Verfasst: 06.11.2006 15:05
von mad-manne
Hast du den hier geposteten Code einfach so "alleine" stehen, oder ist er wie z.B. dieses Beispiel( KB:72 ) in das phpBB "eingebettet".
Ich tippe mal auf ersteres, weshalb ganz banal die db-Klasse(includes/db.php) nicht bekannt ist, weil das entsprechende include aus der common.php fehlt!
Gruss,
Manne.
Verfasst: 06.11.2006 15:09
von gn#36
Du hast das Datenbankobjekt nicht eingebunden, da fehlen die includes die du am Anfang jeder phpBB Datei findest. ("...on a non-object...") Da müsste sowas stehen wie
Code: Alles auswählen
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.' . $phpEx);
Das an den Anfang des Skriptes und dann sollte es gehen, sofern relativ zu dem aktuellen Ordner gesehen "./" der Pfad zum Basisordner des Forums ist.
EDIT: Da war mad-manne wohl schneller

Verfasst: 06.11.2006 15:18
von Lausch
klar aber das muss ja auch systemunabhängig funktionieren.
ein script das eine verbindung mit einer db und tabelle aufbaut (was es tut)
Code: Alles auswählen
$server = 'localhost';
$username = "root";
$password = "root";
$database = "phpbb";
$usertable = "phpbb_users";
$tableprefix = "phpbb_";
$db = @mysql_connect($server, $username, $password)
or die ('Konnte keine Verbindung zur Datenbank herstellen');
mysql_select_db("$database");
...nun soll der codeschnipsel von oben einfach herausfinden, welche die höhste user_id ist und die nächst mögliche anzeigen..
gruss
Lausch
Re: mögliche user_id herausfinden
Verfasst: 06.11.2006 15:30
von mad-manne
aber
hierund
hiergreifst du auf Methoden der phpBB-eigenen db-Klasse zurück. Dadurch dass sie nicht included ist, kann das Skript auch nicht wissen, was es tun soll.
Wenn du also dein Skript so aufbauen möchtest, dass es nicht die phpBB-eigenen Methoden nutzt, dann musst du auf die PHP-eigenen Befehle zur Datenbankabfrage zurückgreifen
Gruss,
Manne.
Verfasst: 06.11.2006 15:31
von gn#36
Das ist nicht die gleiche Art und Weise, wie phpBB die DB Verbindung aufbaut. Wenn du die Verbindungsinformationen an die Variable $db zuweist (was du ja durchaus machen kannst) dann enthält diese Variable auch nichts anderes. mysql_connect macht kein Objekt aus dieser Variablen, sondern speichert nur die Information über die Verbindung.
Jeder Aufruf $db->xxx führt daher zu einem Fehler, da es sich nicht um ein Objekt handelt, sondern um eine Variable.
Wenn du mit der angegebenen Verbindung arbeiten solltest, dann musst du eben weiterhin die direkten mysql Funktionen verwenden. $db ist in phpBB ein zu phpBB gehörendes Objekt (siehe includes/db.php und gesamtes Verzeichnis db) welches phpBB-eigene Funktionen enthält die es bei mysql (und anderen Datenbanken) direkt nicht gibt, die als Abstraktionsschicht zwischen Forum und DB dienen, so dass das Forum platformunabhängig ist.
EDIT: Schon wieder Überschneidung!
Verfasst: 06.11.2006 15:35
von Lausch
aaaaaaaaaah ich bin unwürdig. klar ich habs gelesen aber nicht kappiert.
tut mir leid klar ok, hab die files includet und jetzt gehts....
danke vielmals leute für die schnelle hilfe...
gruss
Lausch
Verfasst: 06.11.2006 15:39
von mad-manne
gn#36 hat geschrieben:EDIT: Schon wieder Überschneidung!
Nicht verzweifeln
Und ausserdem: Doppelt gemoppelt hält besser
So long,
Manne.