Mod SRM² <-> phpbb3

Ce forum vous servira à trouver de l'aide uniquement en ce qui concerne le développement d'un de vos MODs, ou l'adaptation d'un MOD phpBB2 pour phpBB3.

Modérateur: Equipe

Mod SRM² <-> phpbb3

Messagepar PyRoXtY » 27 Déc 2007 à 20:49

Bonjour à tous,

J'ai un serveur de jeux-vidéo et je suis entrain de mettre en place un mod pour phpbb3 qui permet de gérer les comptes de mes joueurs depuis phpbb3 (et je souhaite aussi qu'ils puissent gérer leurs comptes depuis une page personnelle).
Je souhaite donc intégrer leurs comptes sur le forum phpbb3, mais malheureusement, il semblerai que phpbb3 n'accepte pas que je me connecte à deux bases de donnée.
Effectivement, les variables avec lesquels je me connecte et j'exécute mes requêtes sql sont déjà utilisée par phpbb3. Par conséquent, il me retourne une erreur (tous à fait logique cela dit) :
Fatal error: Call to a member function on a non-object in /homepages/0/d140090879/htdocs/Aeris/includes/functions.php on line 3528

Je voudrai savoir si il est possible de jongler entre 2 bases de données avec phpbb, et si oui, comment (ou si non, pourquoi)...

Au cas ou, voici le code php de ma page (très mal codée, certes, mais normalement fonctionnelle, L'amélioration viendra dès que j'aurai résolu ce problème ^^) :
Code: Tout sélectionner
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('common');

// include page language file
$user->add_lang('srm');

// Output page
page_header($user->lang['SRM']);

// Ici, on recherche le numéro du compte du joueur.
// Si il est égal à 0, on conclu qu'il n'a pas encore de compte, sinon, il en a un...
if ($user->data['user_srm'] != 0) {
   // On se connecte à la base de donnée du jeu
   $db = mysql_connect($srm_dbhost.':'.$srm_dbport, $srm_dbname, $srm_dbpass);
   mysql_select_db($srm_dbbase,$db);
   // On sélectionne un compte de jeu suivant le numéro qui est défini dans la table user, user_srm.
   $sql = 'SELECT * FROM `login` WHERE account_id =' . $user->data['user_srm'];
   $req = mysql_query($sql) or die ('Execution de requête impossible!');
   $data = mysql_fetch_assoc($req);

   // On affiche un résultat pour vérifier ...
   $test = 'Salut ' . $user->data['username'] . ', tu as un personnage qui porte le numero ' . $data['account_id'] . '. J\'en sais des choses hein.';
} else {
   $test = 'Vous n\'avez pas encore de personnage! C\'est pas bien ^^.';
}

// Assign index specific vars
$template->assign_vars(array(
   'L_SRM'   => $test,
));

$template->set_filenames(array(
   'body' => 'srm_body.html')
);

page_footer();

?>

Et le lien de la page : http://www.finitia-world.info/Aeris/srm.php
Voilà, Merci d'avance.
"Il y a 10 sortes de gens dans le monde. Ceux qui comprennent le binaire, et ceux qui ne le comprennent pas."
"L'informatique n'a de limite que celle de son imagination (et la puissance de sa machine XD)."
Portfolio Personnel (PyRoXtY, Monnier Cédric)
Créateur de Finitia-World
Avatar de l’utilisateur
PyRoXtY
Posteur néophyte
Posteur néophyte
 
Messages: 16
Inscription: 17 Déc 2005 à 11:05
Localisation: France - Territoire de Belfort (90) - Reppe

Re: Mod SRM² <-> phpbb3

Messagepar PyRoXtY » 30 Déc 2007 à 11:30

J'aimerai aussi ajouté un détail, toutes les pages que je crée n'affiche pas les caractères accentués, j'ai un point d'interrogation dans un losange à la place ...
Si vous pouviez aussi m'aider à résoudre ce problème afin qu'il prenne en compte les caractères accentués comme sur toutes les autres page du site, se serai parfait, merci d'avance.
"Il y a 10 sortes de gens dans le monde. Ceux qui comprennent le binaire, et ceux qui ne le comprennent pas."
"L'informatique n'a de limite que celle de son imagination (et la puissance de sa machine XD)."
Portfolio Personnel (PyRoXtY, Monnier Cédric)
Créateur de Finitia-World
Avatar de l’utilisateur
PyRoXtY
Posteur néophyte
Posteur néophyte
 
Messages: 16
Inscription: 17 Déc 2005 à 11:05
Localisation: France - Territoire de Belfort (90) - Reppe

Re: Mod SRM² <-> phpbb3

Messagepar PyRoXtY » 03 Jan 2008 à 19:18

Bon, ben finalement j'ai trouvé une solution, elle est un peu foireuse, mais je pense quel fera l'affaire, voici le code solution, au cas ou :
(Effectivement, c'est du codage de kikoulol, j'essayerai d'améliorer ça prochainement, j'donne juste l'idée de ma solution).

Code: Tout sélectionner
// On se connect au serveur et  à la base de donnée externe (connexion violente XD)
$db = mysql_connect($srm_dbhost.':'.$srm_dbport, $srm_dbname, $srm_dbpass) or die ('Erreur : Impossible de se connecter &agrave; la base de donn&eacute;e MySQL!');
mysql_select_db($srm_dbbase,$db) or die ('Erreur : Base de donn&eacute; selectionn&eacute;e introuvable!');

// On effectue une requête qui vérifie si le nom choisi existe déjà
$sql = "SELECT * FROM `login` WHERE userid = '$userid'";
$req = mysql_query($sql);
$res = mysql_num_rows($req);

// Si il existe déjà, on refuse l'inscription et on retourne une erreur qui explique pourquoi.
if ($res != 0) {
   $srm_add_error = 'Le nom de compte que vous souhaitez utiliser existe d&eacute;j&agrave;. Veuillez en choisir un autre.';
} else { // Sinon, on effectue l'inscription
   $sql = "INSERT INTO login(account_id,userid,user_pass,sex,email,level) VALUES('','$userid','$userpass','$sex','$email','$level')";
   $req = mysql_query($sql);
        // On récupère l'id auto_increment du nouveau compte
   $res = mysql_insert_id();
        // On se déconnecte de la base de donnée externe.
   mysql_close($db);

        // On crée une nouvelle connexion pour phpbb3 (connexion méga-violente, y dois pas kifé ça, mais bon, sa marche comme ça XD)
   $db = new $sql_db();
   $db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, defined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK : false);
        // On effectue la mise à jour de la base user
   $sql = "UPDATE " . USERS_TABLE . "
      SET user_srm = $res
      WHERE user_id = " . $user->data['user_id'];
   $db->sql_query($sql);

   $srm_add_error = 'Votre personnage a &eacute;t&eacute; cr&eacute;er avec succ&egrave;s et a bien &eacute;t&eacute; lier &agrave; votre compte Finitia-World sous le num&eacute; ' . $res . '.';
}
// Oh, en voici un code bien begger XD, mais au moins, il marche.


Bon, c'est un code très mauvais mais il fonctionne. Par contre, si quelqu'un à une meilleur solution, j'aimerai quand même la connaitre, merci ;)
Je ne mets pas réglé parce que c'est pas vraiment le cas, je cherche encore un script stable pour effectuer ceci, merci d'avance.
"Il y a 10 sortes de gens dans le monde. Ceux qui comprennent le binaire, et ceux qui ne le comprennent pas."
"L'informatique n'a de limite que celle de son imagination (et la puissance de sa machine XD)."
Portfolio Personnel (PyRoXtY, Monnier Cédric)
Créateur de Finitia-World
Avatar de l’utilisateur
PyRoXtY
Posteur néophyte
Posteur néophyte
 
Messages: 16
Inscription: 17 Déc 2005 à 11:05
Localisation: France - Territoire de Belfort (90) - Reppe


Retourner vers Aide au développement

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

Partenaires : phpBBHacks.com • phpBB-Seo.com • EzCom-fr.com • phpBB3 Styles • phpBB podpora • phpBB Portugal    Liens : Net Avenir • PromoBenef • Ticket Gagnant