Connexion à plusieurs base de donnée

Résolu/Fermé
Doy2 - 11 sept. 2014 à 09:51
 Doy2 - 11 sept. 2014 à 15:47
Bonjour,

Pour la réalisation d'un site pour le jeu "WoW" je suis confronté à un petit problème avec mes bases de données.

Ma base de données comporte 4 tables différente.
Table: Site, Auth, World et Characters.

Actuellement, je parvient à faire la connexion, mais je voudrais faire la connexion au table juste quand j'en ai besoin, puis de les refermée une fois fini, sans pour autant fermé la connexion MySQL.

Sachant que les tables peuvent vite devenir "lourde" je préfére eviter de les charger à l'ouverture du site.

Auriez-vous une idée, de comment je pourrait faire ?

Exemple:
Page Login:
Chargement de Auth
Connexion terminée
Fermeture de Auth


Merci
A voir également:

1 réponse

Utilisateur anonyme
11 sept. 2014 à 10:01
salut,

ta question n'a pas vraiment de sens du fait que ton connecteur se limite à ta base de données. Les interactions avec les tables ne se font que lorsque tu requêtes dessus ...

Peu plutot un problème dans ton code ? que se passe t'il exactement?

naga
0
Je n'ai pas vraiment de problème, c'est juste une question que je me pose.
En effectuant donc mysql_select_db($db) (4 fois) cela ne changera rien au chargement de la page sauf en cas de requête ?
0
Utilisateur anonyme
11 sept. 2014 à 10:57
c'est ca.

En gros, ton connecteur est simplement un lien avec ta base. Lors du requêtage, celui ci s'effectue sur le serveur puis le résultat est envoyé au client (c'est à dire que jamais tu verra les trames de select puis leur résultats transiter, tu récupère les résultats, les stocks/affiche ou ce que tu veux puis tu les transmets au client.

Par contre avoir 4 connecteurs est très etranges du fait que ca soit la même base qui contienne tes tables ... un seul connecteur est suffisant, même si tu requête N tables. Il y aurai probablement des choses à (re) voir à ce niveau là, mais pour ca il me faudrai ton code pour que je puisse te conseiller/corriger.

naga
0
Merci pour la réponse,
Ci-dessous le code utiliser pour la connexion
<php
function Connect()
{
 $connect = mysql_connect(HOST_DB,USER_DB,PWD_DB) or die ('Connexion MySQL impossible: '.mysql_error());
 return $connect;
}

function Auth()
{
 mysql_select_db(auth,$connect) or die ('Impossible de charger la table auth');
}
function characters()
{
 mysql_select_db(characters,$connect) or die ('Impossible de charger la table characters');
}
function world()
{
 mysql_select_db(world,$connect) or die ('Impossible de charger la table world');
}
?>


La fonction Connect,elle est appeler à chaque début de page, pour les autres, juste quand besoin
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
11 sept. 2014 à 12:23
Effectivement il ne faut pas confondre :
- le SGBD (le serveur mysql)
- les bases de données contenus dans le SGBD
- les tables contenus dans les bases de données

Seule la connexion au SGBD a un délai significatif, le fait de changer de base de données (avec mysql_select_db par exemple) n'as qu'un aucun impact minime sur les performances.

Comme indiqué par nagashima, si tes 4 tables sont bien contenus dans la même base de données, un seul mysql_select_db suffit.
Si tes tables sont effectivement dans des bases différentes, tu peux aussi créer tes requêtes en spécifiant le nom de la base devant le nom de la table (évitant ainsi l'utilisation de plusieurs mysql_select_db). Par exemple :
Mon SGBD contient deux bases :
- base 1 : contient table11 et table12
- base 2 : contient table21 et table 22
On peut écrire une requête directement comme ceci :
SELECT * FROM base1.table11 LEFT JOIN base2.table22 ON ..."
0
tu me retire les mots de la bouche ^^.

Pour faire court, disons que tu as 4 bases de données sur un même serveur (pour un même service mySQL). Tu auras donc un seul connecteur, ayant une base par défaut. Pour requêter sur une autre base, il suffit de l'indiquer avant le nom de la table, avec un "." (point) entre les deux.

Par exemple, on a :


BASE1
table1
table2


BASE2
table3


base1 et base2 étant sur le même serveur.

J'aurai donc un connecteur :


<?php
$connect = mysql_connect(HOST_DB,USER_DB,PWD_DB) or die ('Connexion MySQL impossible: '.mysql_error());


mysql_select_db("BASE1",$connect) or die ('Impossible de se connecter à la base BASE1');

?>

J'ai donc paramétrer ma BASE1, me permettant d'effectuer des requêtes sur table1 et table2 sans préciser la base. Par exemple je pourrai faire :


SELECT * FROM table1;

SELECT * FROM table2;

si je souhaite effectuer une requête sur la table3, il me suffit de faire :


SELECT * FROM BASE2.table3;

C'est à dire que le select_db permet juste de ne pas à avoir à toujours préciser la base. Dans le cas général les utilisateurs n'utiliseront qu'une base contenant n table => de cette manière il n'auront qu'à préciser les table (je pense que c'est ton cas).


Ensuite, il est je trouve plus simple et plus propre que tu ais un fichier gérant ta connexion, et que chaque page en ayant besoin l'incluent. Mais c'est juste un avis perso ^^
0