Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/10/2011, 19h33   #1
Invité de passage
 
Homme Louis Brabant
Inscription : juillet 2011
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme Louis Brabant
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : juillet 2011
Messages : 24
Points : 4
Points : 4
Envoyer un message via MSN à deathart Envoyer un message via Skype™ à deathart
Par défaut Connection à plusieur base de donnés

Salut à tous,

Voila j'ai un problème assez gênant et je c'est pas comment m'y prendre, je fait un site mais avec 5 BDDs sur le meme HOST,

Donc ma déjà dit :

Citation:
Tu rassemble tes tables dans une même base de données et tu fais comme tout le monde.
Donc directement NON impossible pour certaines raison non importantes

Donc voici mon script :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
<?php
 
class Config {
 
	protected $MySQLUser    		= "root";               // MySQL Username
        protected $MySQLPassword  		= "";             		// MySQL Password
        protected $MySQLHost    		= "127.0.0.1";          // MySQL Host IP-Address or Domainname
        protected $MySQLPort    		= "3306";               // MySQL Port option
	protected $MySQLDBChar    		= "characters";         // MySQL Database Character
	protected $MySQLDBMaNGOS    	= "mangos";         	// MySQL Database Character
	protected $MySQLDBrealmd    	= "realmd";         	// MySQL Database Character
	protected $MySQLDBScriptDev2    = "scriptdev2";         // MySQL Database Character
	protected $MySQLDBPandoreWeb    = "pandoreweb";         // MySQL Database Character
	protected $MySQLConnection;                       		// MySQL
 
	public function __construct (){
 
        return $this->MySQLConnect();
 
    }
 
	public function MySQLConnect (){
 
       $this->MySQLConnection = mysql_connect($this->MySQLHost.":".$this->MySQLPort, $this->MySQLUser, $this->MySQLPassword) or die("Database Error: ".mysql_errno()." : ".mysql_error());
 
    }
 
	public function MySQLDBCharacters () {
 
		$this->MySQLCharacters = mysql_select_db($this->MySQLDBChar) or die("Database Error: ".mysql_errno()." : ".mysql_error());
 
	}
 
	public function MySQLDBMangos () {
 
		$this->MySQLMangos = mysql_select_db($this->MySQLDBMaNGOS) or die("Database Error: ".mysql_errno()." : ".mysql_error());
 
	}
 
	public function MySQLDBRealmd () {
 
		$this->MySQLRealmd = mysql_select_db($this->MySQLDBrealmd) or die("Database Error: ".mysql_errno()." : ".mysql_error());
 
	}
 
	public function MySQLDBScriptDev2 () {
 
		$this->MySQLScriptDev2 = mysql_select_db($this->MySQLDBScriptDev2) or die("Database Error: ".mysql_errno()." : ".mysql_error());
 
	}
 
	public function MySQLDBPandoreWeb () {
 
		$this->MySQLPandoreWeb = mysql_select_db($this->MySQLDBPandoreWeb) or die("Database Error: ".mysql_errno()." : ".mysql_error());
 
	}
 
	public function MySQLClose () {
 
		return mysql_close($this -> MySQLConnect()); 
 
	}
 
 
}
 
$MySQL = new Config;
$MySQL -> MySQLConnect();
$MySQL -> MySQLDBCharacters();
$MySQL -> MySQLDBMangos();
$MySQL -> MySQLDBRealmd();
$MySQL -> MySQLDBScriptDev2();
$MySQL -> MySQLDBPandoreWeb();
 
?>
ET :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
 
<?php
 
class News extends Config {
 
	public function __construct () {
 
		Config :: MySQLDBPandoreWeb();
 
    }
 
	public function Pagination($table,$order) {
 
		$this->MessagesParPage = 10;
 
		$this->RetourTotalNews = mysql_query('SELECT COUNT(*) AS total FROM '.$table.'', $this->MySQLPandoreWeb) or die("".mysql_error()." Database Error: ".mysql_errno()."");
		$this->DonnesTotalNews = mysql_fetch_assoc($this->RetourTotalNews);
		$this->RetourTotal = $this->DonnesTotalNews['total'];
 
		$this->NombreDePages = ceil($this->RetourTotal / $this->MessagesParPage);
 
		if(isset($_GET['Pages'])) {
 
			$this->PageActuelle = intval($_GET['Pages']);
 
     		if($this->PageActuelle > $this->NombreDePages)  {
 
		 		$this->PageActuelle = $this->NombreDePages;
 
			}
 
		}
		else {
 
	 		$this->PageActuelle = 1;     
 
		}
 
		$this->PremiereEntree = ($this->PageActuelle - 1) * $this->MessagesParPage; 
 
		$this->RetourFinal = mysql_query('SELECT * FROM '.$table.' ORDER BY '.$order.' DESC LIMIT '.$this->PremiereEntree.', '.$this->MessagesParPage.'') or die("Database Error: ".mysql_errno()." : ".mysql_error());
 
 
	}
 
	public function Affichage() {
 
		News::Pagination('news','dates');
 
		while ($this->ResultatForumPostReponse = mysql_fetch_assoc($this->RetourFinal)) {	
 
			echo ('<div id="news">
                    <div id="newsheader"><div id="newsheadertexte">'.$this->ResultatForumPostReponse['titre'].'</div></div>');
			echo ('<div id="newsback">
                            <div id="newsbackheader">
                            </div>
                            <div id="newsbackbody">
                            	<div id="texte">'.$this->ResultatForumPostReponse['message'].'
								 </div>
                            </div>
                            <div id="newsbackfooter">
                            </div>
                            <br />
                            <div id="newsbackheader">
                            </div>
                            <div id="newsbackbody">
                            	<div id="texte">Par '.$this->ResultatForumPostReponse['auteur'].' le '.$this->ResultatForumPostReponse['dates'].'');
								if ($this->ResultatForumPostReponse['maj'] == 1) { 
 
									echo ('<div id="right">Mise à jour par '.$this->ResultatForumPostReponse['auteurmaj'].'  le '.$this->ResultatForumPostReponse['datesmaj'].'</div>');
 
								} 
								else {
 
 
 
								}
 
								echo ('
								</div>
                            </div>
                            <div id="newsbackfooter">
                            </div>
                        </div>
                    <div id="newsbas"></div>
                </div>');
 
		}
		echo ('<div id="news"><div id="newsheader"><div id="newsheadertexte"><div id="centre">');
 
		$this->PrecedanteVariable = $this->PageActuelle - 1; // numéro de la page précédente
		$this->SuivanteVariable = $this->PageActuelle + 1; // numéro de la page suivante
 
		if ($this->PageActuelle > 1) {
 
			$this->Precedant = '<a href="?Page=Accueil&Pages='.$this->PrecedanteVariable.'">Précédante</a>';
 
		}
		else {
 
			$this->Precedant = '';
 
		}
 
		echo ('<div id="left">'.$this->Precedant.'</div> Pages ');
		for($this->ip = 1; $this -> ip <= $this->NombreDePages; $this->ip ++) {
 
     		if($this->ip == $this->PageActuelle) {
 
				echo ' ['.$this->ip.']'; 
 
	 		}	
     		else {
 
				echo (' <a href="?Page=Accueil&Pages='.$this->ip.'">'.$this->ip.'</a>');
 
	 		}
 
		}
 
		echo (' sur ['.$this->NombreDePages.']');
 
		if ($this->PageActuelle < $this->NombreDePages) {
 
			$this->Suivant = '<a href="?Page=Accueil&Pages='.$this->SuivanteVariable.'">Suivante</a>';
 
		}
		else {
 
			$this->Suivant = '';
 
		}
 
		echo ('<div id="right">'.$this->Suivant.'</div>');
 
		echo ('</div></div></div><div id="newsbas"></div></div>');
 
	}
 
}
 
?>
Donc ca me renvoie

Citation:
Warning: mysql_query() expects parameter 2 to be resource, boolean given in E:\xamppnouveaux\htdocs\pandoreweb\Fonctions\News\News.class.php on line 15
Et si je fait :

Citation:
$MySQL->MySQLPandoreWeb
Il me dit que $MySQL n'existe pas alors que si !!!

Voila je suis perdu, et j’espère avoir postez dans la bonne sections ^^

Merci d'avoir lut
deathart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 20h06   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 329
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 329
Points : 1 657
Points : 1 657
Qu'est ce que tu veux dire par plusieurs base ?

Plusieurs bases de données sur des serveurs différents ?

Mais à priori vu que t'es sur le même host, ça doit être :
Plusieurs bases créées dans une même base de données ?

Si c'est le 2eme cas, tu peux utiliser mysql_select_db() pour changer ta base par défaut quand tu en a besoin, ou alors sans utiliser cette fonction, tu peux acceder aux tables de plusieurs bases en une seule requête en préfixant dans ta requete :

Code SQL :
SELECT mabase1.table1.champ1, mabase2.table2.champ2 ...
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/10/2011, 20h14   #3
Invité de passage
 
Homme Louis Brabant
Inscription : juillet 2011
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme Louis Brabant
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : juillet 2011
Messages : 24
Points : 4
Points : 4
Envoyer un message via MSN à deathart Envoyer un message via Skype™ à deathart
Citation:
Envoyé par Seb33300 Voir le message
Qu'est ce que tu veux dire par plusieurs base ?

Plusieurs bases de données sur des serveurs différents ?

Mais à priori vu que t'es sur le même host, ça doit être :
Plusieurs bases créées dans une même base de données ?

Si c'est le 2eme cas, tu peux utiliser mysql_select_db() pour changer ta base par défaut quand tu en a besoin, ou alors sans utiliser cette fonction, tu peux acceder aux tables de plusieurs bases en une seule requête en préfixant dans ta requete :

Code SQL :
SELECT mabase1.table1.champ1, mabase2.table2.champ2 ...
Je m'explique mal on me le dit toujours ^^

En claire heberger en local donc 127.0.0.1 il y a 5 bases donc si on regarde le code mangos/characters/realmd/ect... donc toute c'ets base sont sur la meme base de donnée donc tous sur localhost(127.0.0.1)

Sinon pas possible de faire autrement?
deathart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 23h10   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 129
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 129
Points : 8 489
Points : 8 489
y'a des choses qui ne vont pas,

Code :
1
2
3
public function __construct (){
    return $this->MySQLConnect();
}
tu peux pas faire ça, __construct retourne l’instance


Code :
Config :: MySQLDBPandoreWeb();
tu appels statiquement une méthode non statique


ne correspond pas a grand chose


Code :
or die("Database Error: ".mysql_errno()." : ".mysql_error());
pas de or die pour débugger (de plus c'est exit pas die) utilise le trace_mode


et je te conseil vivement de passé a Mysqli ou PDO
si tu veux utilisé des configs regarde vers le pattern Registry
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2011, 23h15   #5
Membre éclairé
 
Avatar de firehist
 
Homme Benjamin Longearet
Intégrateur Web Freelance
Inscription : février 2008
Messages : 153
Détails du profil
Informations personnelles :
Nom : Homme Benjamin Longearet
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Intégrateur Web Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2008
Messages : 153
Points : 357
Points : 357
Envoyer un message via Skype™ à firehist
D'accord avec les points souligné par stealth35.

Mais pour ce qui est de ta question concernant le changement de base, si tes bases sont sur le même serveur, comme le dit Seb33300, il te suffit de faire le bon mysql_select_db avant d’exécuter une requête.
Dans ce cas, une seule connection à la base de donnée suffit.
__________________
Ingénieur Web Freelance - Firehist Studio
Profil Viadeo Benjamin Longearet
Geekos.fr : Blog technique sur les technologies du Web
---
Citation:
De l'innovation nait la solution et inversement
firehist est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 07h05   #6
Invité de passage
 
Homme Louis Brabant
Inscription : juillet 2011
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme Louis Brabant
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : juillet 2011
Messages : 24
Points : 4
Points : 4
Envoyer un message via MSN à deathart Envoyer un message via Skype™ à deathart
Oui mais imaginons la page à 3script et utilise 4 base de donné diférente et dans les 4 il y à 27 tables a utiliser, donc je vais faire mysql_select_db() a chaque jscript car en moyen 1script interroge 2 base de donné défiérente et environs 7 à 10 table spar script, de plus dans mon code, pour je les fait statiquement une méthode non statique car si vous voyez j'ai bien mis :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
<?php
$MySQL = new Config;
$MySQL -> MySQLConnect();
$MySQL -> MySQLDBCharacters();
$MySQL -> MySQLDBMangos();
$MySQL -> MySQLDBRealmd();
$MySQL -> MySQLDBScriptDev2();
$MySQL -> MySQLDBPandoreWeb();
 
?>
Mais quand je la déclare par la variable $MySQL il me dit qu'el exsite pas Oo
deathart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 07h22   #7
Membre éclairé
 
Avatar de firehist
 
Homme Benjamin Longearet
Intégrateur Web Freelance
Inscription : février 2008
Messages : 153
Détails du profil
Informations personnelles :
Nom : Homme Benjamin Longearet
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Intégrateur Web Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2008
Messages : 153
Points : 357
Points : 357
Envoyer un message via Skype™ à firehist
As-tu corrigé les points que stealth a remontés?
__________________
Ingénieur Web Freelance - Firehist Studio
Profil Viadeo Benjamin Longearet
Geekos.fr : Blog technique sur les technologies du Web
---
Citation:
De l'innovation nait la solution et inversement
firehist est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 07h27   #8
Invité de passage
 
Homme Louis Brabant
Inscription : juillet 2011
Messages : 24
Détails du profil
Informations personnelles :
Nom : Homme Louis Brabant
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : juillet 2011
Messages : 24
Points : 4
Points : 4
Envoyer un message via MSN à deathart Envoyer un message via Skype™ à deathart
Pour le "__construct qui retourne l’instance" et le or die oui, si non le reste je peux pas je viens de l'écrire
deathart est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h07.


 
 
 
 
Partenaires

Hébergement Web