| |
|
|
| PHP-Nuke France - Communauté Européenne: Forums |
|
|
ATTENTION En téléchargeant une version de PHP-Nuke autre que celle que nous proposons, vous prenez la décision de ne pouvoir prétendre à aucun support sur nos Forums. Vous êtes libre de faire vos propres choix mais nous ne pouvons accepter de faire le travail des autres. Par conséquent et en connaissance de cause, toute question relative à une autre version que celle que nous nous sommes engagé à supporter sera transférée à la corbeille. Prenez 2 minutes pour prendre connaissance plus en détails de notre fonctionnement
| Voir le sujet précédent :: Voir le sujet suivant |
|
|
|
crevettegreg

Novice
Inscrit le: Mar 11, 2004 Messages: 4 Localisation: Rennes
|
Posté le: 06.04.2005, 12:41:32 Sujet du message: [Ok] 2 connexion sql sur un mm nuke ... |
|
|
Bonjour,
Sur notre site, certaines pages nessessitent une connexion sql vers une autre base de donnée.
j'ai donc créé un deuxieme config2.php avec les info de connexion vers la seconde bd et un deuxieme dbconnect2.php
la connexion fonctionne, les résultats de la seconde base apparaissent correctement, mais un problème persiste. Mon nuke semble pas finir son travail de suite de module c a dire les blocks de droite et le footer.
Coment récupérer la conneextion db apres db2 ?
voici mes bouts de code:
config2.php
| Code: |
$dbhost_illi = "localhost";
$dbuname_illi = "toto";
$dbpass_illi = "titi";
$dbname_illi = "test";
|
dbconnect2.php
| Code: |
if(!defined("SQL_LAYER"))
{
define("SQL_LAYER","mysql");
class sql_db
{
var $db_connect_id;
var $query_result;
var $row = array();
var $rowset = array();
var $num_queries = 0;
//
// Constructor
//
function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
{
$this->persistency = $persistency;
$this->user = $sqluser;
$this->password = $sqlpassword;
$this->server = $sqlserver;
$this->dbname = $database;
if($this->persistency)
{
$this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
}
else
{
$this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
}
if($this->db_connect_id)
{
if($database != "")
{
$this->dbname = $database;
$dbselect = @mysql_select_db($this->dbname);
if(!$dbselect)
{
@mysql_close($this->db_connect_id);
$this->db_connect_id = $dbselect;
}
}
return $this->db_connect_id;
}
else
{
return false;
}
}
//
// Other base methods
//
function sql_close()
{
if($this->db_connect_id)
{
if($this->query_result)
{
@mysql_free_result($this->query_result);
}
$result = @mysql_close($this->db_connect_id);
return $result;
}
else
{
return false;
}
}
//
// Base query method
//
function sql_query($query = "", $transaction = FALSE)
{
// Remove any pre-existing queries
unset($this->query_result);
if($query != "")
{
$this->query_result = @mysql_query($query, $this->db_connect_id);
}
if($this->query_result)
{
unset($this->row[$this->query_result]);
unset($this->rowset[$this->query_result]);
return $this->query_result;
}
else
{
return ( $transaction == END_TRANSACTION ) ? true : false;
}
}
//
// Other query methods
//
function sql_numrows($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = @mysql_num_rows($query_id);
return $result;
}
else
{
return false;
}
}
function sql_affectedrows()
{
if($this->db_connect_id)
{
$result = @mysql_affected_rows($this->db_connect_id);
return $result;
}
else
{
return false;
}
}
function sql_numfields($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = @mysql_num_fields($query_id);
return $result;
}
else
{
return false;
}
}
function sql_fieldname($offset, $query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = @mysql_field_name($query_id, $offset);
return $result;
}
else
{
return false;
}
}
function sql_fieldtype($offset, $query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = @mysql_field_type($query_id, $offset);
return $result;
}
else
{
return false;
}
}
function sql_fetchrow($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$this->row[$query_id] = @mysql_fetch_array($query_id);
return $this->row[$query_id];
}
else
{
return false;
}
}
function sql_fetchrowset($query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
unset($this->rowset[$query_id]);
unset($this->row[$query_id]);
while($this->rowset[$query_id] = @mysql_fetch_array($query_id))
{
$result[] = $this->rowset[$query_id];
}
return $result;
}
else
{
return false;
}
}
function sql_fetchfield($field, $rownum = -1, $query_id = 0)
{
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
if($rownum > -1)
{
$result = @mysql_result($query_id, $rownum, $field);
}
else
{
if(empty($this->row[$query_id]) && empty($this->rowset[$query_id]))
{
if($this->sql_fetchrow())
{
$result = $this->row[$query_id][$field];
}
}
else
{
if($this->rowset[$query_id])
{
$result = $this->rowset[$query_id][$field];
}
else if($this->row[$query_id])
{
$result = $this->row[$query_id][$field];
}
}
}
return $result;
}
else
{
return false;
}
}
function sql_rowseek($rownum, $query_id = 0){
if(!$query_id)
{
$query_id = $this->query_result;
}
if($query_id)
{
$result = @mysql_data_seek($query_id, $rownum);
return $result;
}
else
{
return false;
}
}
function sql_nextid(){
if($this->db_connect_id)
{
$result = @mysql_insert_id($this->db_connect_id);
return $result;
}
else
{
return false;
}
}
function sql_freeresult($query_id = 0){
if(!$query_id)
{
$query_id = $this->query_result;
}
if ( $query_id )
{
unset($this->row[$query_id]);
unset($this->rowset[$query_id]);
@mysql_free_result($query_id);
return true;
}
else
{
return false;
}
}
function sql_error($query_id = 0)
{
$result["message"] = @mysql_error($this->db_connect_id);
$result["code"] = @mysql_errno($this->db_connect_id);
return $result;
}
} // class sql_db
} // if ... define
//global $db;
$db_illi = new sql_db($dbhost_illi, $dbuname_illi, $dbpass_illi, $dbname_illi, false);
if(!$db_illi->db_connect_id) {
die(""._NO_SQL_CONNEXION."");
}
|
le code du module:
| Code: |
//----------- autre sql !
include("db_illi/config2.php");
include("db_illi/db/dbconnect2.php");
$sql_illi = "SELECT * FROM voiture";
$result_illi=$db_illi->sql_query($sql_illi);
if (!$result_illi) {die("pas de connexion SQL sur les voitures de Davy !!");}
while($row_illi=$db_illi->sql_fetchrow($result_illi)) {
$id_illi = $row_illi['id'];
$nom_illi = $row_illi['nom'];
echo "- $id_illi $nom_illi <br>";
}
//---------------- fin autre sql !
|
j'ai renommé les variables de config
et
$db_illi = new sq........
Avez vous une idée ??
Faut t-il rennomer d'autre chose ?
Merci d'avance pour votre aide !
pluche ++ Tétard'O... _________________ Le TetArd aToMiQuE
http://www.darkanbu.tk
http://crevettegreg.free.fr |
|
 |
|
|
ckforum

Habitué

Inscrit le: Jan 06, 2004 Messages: 1653 Localisation: FRANCE
|
Posté le: 06.04.2005, 15:15:48 Sujet du message: |
|
|
Bonjour crevettegreg,
Pourquoi faire aussi compliqué !!!
La variable $db représente un constructeur
Voir ( http://tastalian.free.fr/cours.php?part=PHP&index=1 )
( http://tastalian.free.fr/cours.php?part=PHP&index=2 ),
donc il n'était pas nécéssaire dans ton cas de doubler le fichier mysql car celui ci contient une class qui peut être réutilisée !!! tu pouvais tout simplement créér un autre constructeur !
en standard dans le fichier db.php situé dans include tu as :
| Code: |
$db = new sql_db($dbhost, $dbuname, $dbpass, $dbname, false);
if(!$db->db_connect_id) {
die("<br /><br /><div align='center'><img src=images/logo.gif><br /><br /><b>Il semble qu'il y ait un problème avec le serveur MySQL.<br />Veuillez nous en excuser, le site sera accéssible très prochainement.</div></b>");
}
|
Ou les variables
| Code: |
$dbhost, $dbuname, $dbpass, $dbname
|
sont liées à ton config.php
donc dans ton config.php tu rajoutes simplement les renseignements de ta nouvelle BDD en ajoutant par exemple les variables suivantes (nommées xxxx2 pour l'exemple, ton utilisation mais nommes les comme tu le souhaites):
| Code: |
$dbhost2 = "Tonserveur";
$dbuname2 = "TonLogin";
$dbpass2 = "TonPass";
$dbname2 = "LeNOMdeTaBDD";
|
Ensuite dans le fichier db.php situé dans includes/
Tu créé un nouveau construteur (une $var qui correspond à un nouvel objet sql_db via la class du meme nom situé dans mysql.php)
donc en dessous de
| Code: |
$db = new sql_db($dbhost, $dbuname, $dbpass, $dbname, false);
if(!$db->db_connect_id) {
die("<br /><br /><div align='center'><img src=images/logo.gif><br /><br /><b>Il semble qu'il y ait un problème avec le serveur MySQL.<br />Veuillez nous en excuser, le site sera accéssible très prochainement.</div></b>");
}
|
Tu rajoutes par exemple :
| Code: |
$dbbis = new sql_db($dbhost2, $dbuname2, $dbpass2, $dbname2, false);
if(!$dbbis->db_connect_id) {
die("<br /><br /><div align='center'><img src=images/logo.gif><br /><br /><b>Il semble qu'il y ait un problème avec le serveur MySQL (bis).<br />Veuillez nous en excuser, le site sera accéssible très prochainement.</div></b>");
}
|
Et à partir de là tu as donc un nouvel objet $dbbis équivalent à $db mais avec une autre BDD de renseignée
ensuite il ne te reste plus qu'a appeler cet objet dans tes requetes par exemple :
| Code: |
$dbbis->sql_query("ETC....");
|
L'avantage est que si la class "sql_db" situé dans le fichier mysql.php change pour des améliorations quelquonques tu pourras mettre à jour ce fichier et bénéficier des amélioration sans avoir à modifier X fichier ou a faire X modification ... donc en gros ce sera plus simple pour mettre a jour ton portail !
En revanches je n'ai rien préciser au niveau de $dbtype car je part du principe que tu utilises des BDD mysql (ce qui est le cas en général sous phpnuke) ...
Penses aussi dans tes scripts à déclarer en global la variable $dbbis au même titre que $db donc tu auras dans tes scripts un truc du genre
| Code: |
function testpourexemple() {
global $db, $dbbis ;
}
|
Voilà
@++ _________________ Bah on fait ce qu'on peut Hein Pas vrai ? ! et Vous !!!
(pas de demande d'aide via MP Merci ....) |
|
 |
|
|
crevettegreg

Novice
Inscrit le: Mar 11, 2004 Messages: 4 Localisation: Rennes
|
Posté le: 07.04.2005, 10:51:36 Sujet du message: |
|
|
[PB REGLE !]
Merci bcp mais effectivement j'ai vu compliqué !! lol
Sinon mon truc fonctionnait , c'est juste qu'il faut faire le rappel de db/db.php car il faut réindiquer à apache la chaine de connexion.
Merci bcp pour l'info.
Pour ceux qui veulent une belle tite connection persitante, récupérez le script du premier poste, il fonctionne tres bien pour des script non nuke .....
Bonne journée à toute cette belle comunauté !
Pluche ++ Tétard'O _________________ Le TetArd aToMiQuE
http://www.darkanbu.tk
http://crevettegreg.free.fr |
|
 |
|
|
ckforum

Habitué

Inscrit le: Jan 06, 2004 Messages: 1653 Localisation: FRANCE
|
Posté le: 07.04.2005, 11:16:10 Sujet du message: |
|
|
| ckforum : Réponse automatique a écrit: | [!] Comme votre problème est règlé
je ferme ce sujet, n'hésitez pas à en ouvrir un autre si vous
avez besoin. Si vous souhaitez réouvrir ce sujet , merci de le signaler
à un modérateur ou membre du STAFF.
à Bientôt.
... |
_________________ Bah on fait ce qu'on peut Hein Pas vrai ? ! et Vous !!!
(pas de demande d'aide via MP Merci ....) |
|
 |
|
|
|
|
|
|
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum Vous ne pouvez pas joindre des fichiers dans ce forum Vous ne pouvez pas télécharger des fichiers dans ce forum
|
| :: Powered by phpBB © 2001, 2005 phpBB Group :: |
|
|
|
|
|
|