IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Connexion multi-database sur le même serveur [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Connexion multi-database sur le même serveur
    Bonsoir,

    Je bloque sur les connexions multi-db, voici mon ennoncé :

    la fonction qui me permet de naviguer sur mes bases de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    function db_connect($database, $link = 'db_link') 
    	{
    		global $$link;
     
    		$$link = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD);
    		switch($database) 
    		{
    			case(DB_DATABASE_DIRECTORY):
    				if ($$link) mysql_select_db(DB_DATABASE_DIRECTORY);
    				return $$link;
    				break;
    			case(DB_DATABASE_USERS):
    				if ($$link) mysql_select_db(DB_DATABASE_USERS);
    				return $$link;
    				break;
    			case(DB_DATABASE_ADVERTISEMENT):
    				if ($$link) mysql_select_db(DB_DATABASE_ADVERTISEMENT);
    				return $$link;
    				break;
    		}
    	}
    Je suis connecté par ex sur la db : DB_DATABASE_ADVERTISEMENT et je veux aller chercher la ville de mon user stockée dans la db DB_DATABASE_USERS.

    J'utilise cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function get_world_city($zipcode, $dbname = '')
    	{
    		$link_users = db_connect(DB_DATABASE_USERS, 'db_users') or die(ERROR_CONNECT_DATABASE);
    		if($link_users)
    		{
    			$world_city_query = db_query("select city_name from " . TABLE_All_ZIPCODE_CITY . " where  zone_code_ardment = '" . intval($zipcode) . "'");
    			if (db_num_rows($world_city_query)) $city = db_fetch_array($world_city_query);
    		}
    		if( !empty($dbname) ) db_connect($dbname) or die(ERROR_CONNECT_DATABASE);
     
    		return ($city['city_name'] ? $city['city_name'] : '');
    	}
    Une petite explication s'impose :
    1) je donne en paramètre à la fonction get_world_city le nom de la db actuelle de façon à revenir sur elle après avoir récuperé la ville.
    2) je crée une nouvelle ressource : $link_users que je test pour savoir si elle est disponible.
    3) si oui j'exécute ma query dans la db cible
    4) je reviens sur la db d'origine et je récupère ma valeur.

    Théoriquement ça me parait bien mais ds la pratique la création de la nouvelle ressource échoue et je ne sais pas pourqoui.

    Est-ce qu'il faut en premier fermer la db d'origine avant d'ouvrir une nouvelle ressource ?
    Et pourtant il s'agit d'une connexion non pertinante et spécifiée, donc MySql devrait se comportér normalement.

    Quelques idées?

    Cordialement,

  2. #2
    Membre éprouvé Avatar de trattos
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 000
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 000
    Points : 1 080
    Points
    1 080
    Par défaut
    Déjà si tu utilises MySQL, tu dois utiliser les fonctions PHP de MySQL donc mysql_query(), mysql_connect() ou encore mysql_select_db()!!!!!
    Ensuite ton code est un peu brouillon je trouve!

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Bonsoir,
    Je ne sais pas si on parle de la même chose ou tu as saisis ce que je souhaite faire.

    Les instructions PHP de Mysql sont utilisées dans la fonction db_connect. Il serait préférable de lire le sujet avant d'apporter un jugement.

    Il s'agit ici d'essayer d'échanger des expériences et non des commentaires non explicites.

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Quelle est la raison d'utiliser plusieurs bases ?

    Sinon j'aurais remplacé e code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function db_connect($database, $link = 'db_link')
       {
          global $$link;
     
          $$link = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD);
          switch($database)
          {
             case(DB_DATABASE_DIRECTORY):
                if ($$link) mysql_select_db(DB_DATABASE_DIRECTORY);
                return $$link;
                break;
             case(DB_DATABASE_USERS):
                if ($$link) mysql_select_db(DB_DATABASE_USERS);
                return $$link;
                break;
             case(DB_DATABASE_ADVERTISEMENT):
                if ($$link) mysql_select_db(DB_DATABASE_ADVERTISEMENT);
                return $$link;
                break;
          }
       }
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function db_connect($database, $link = 'db_link')
    {
          global $$link;
     
          $$link = mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD);
          if ($$link) 
              mysql_select_db($database);
          return $$link;
    }

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Merci infiniment pour cette proposition.

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    penses a mettre

  7. #7
    FFF
    FFF est déconnecté
    Membre actif Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Points : 282
    Points
    282
    Par défaut
    des idées pour optimiser :
    http://qwix.media-box.net/index.php/2004/09/29/24-LeSingletonEnPhp5

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/01/2006, 16h18
  2. PHP4 & 5 sur le même serveur (par extension) ?
    Par j0k3r_n0ir dans le forum Apache
    Réponses: 10
    Dernier message: 22/12/2005, 02h21
  3. Entrepot de donnée et base de prod sur le même serveur
    Par alpachico dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 17/08/2005, 15h39
  4. [Weblogic] Weblogic + 2 environnements sur le même serveur
    Par LudwigVon88 dans le forum Weblogic
    Réponses: 3
    Dernier message: 27/07/2005, 20h30
  5. [RMAN] Connexion à une base sur un autre serveur
    Par alxkid dans le forum Oracle
    Réponses: 2
    Dernier message: 23/08/2004, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo