PHP-Nuke France - Communauté Européenne: Forums

FAQFAQ  RechercherRechercher
Groupes d'utilisateursGroupes d'utilisateurs    Les rangsLes Rangs
ProfilProfil  Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés  ConnexionConnexion
*AVANT TOUT, consultez la charte de nos 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

[Ok] 2 connexion sql sur un mm nuke ...

Poster un nouveau sujet   Ce sujet est verrouillé, vous ne pouvez pas éditer les messages ou faire de réponses.    PHP-Nuke France - CE Index du Forum Installation
Printer-friendly version
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
crevettegreg




Novice



Inscrit le: Mar 11, 2004
Messages: 4
Localisation: Rennes

MessagePosté le: 06.04.2005, 12:41:32    Sujet du message: [Ok] 2 connexion sql sur un mm nuke ... Répondre en citant

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
Revenir en haut
Deconnecte    Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
ckforum




Habitué
Habitué



Inscrit le: Jan 06, 2004
Messages: 1653
Localisation: FRANCE

MessagePosté le: 06.04.2005, 15:15:48    Sujet du message: Répondre en citant

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 ....)
Revenir en haut
Deconnecte    Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
crevettegreg




Novice



Inscrit le: Mar 11, 2004
Messages: 4
Localisation: Rennes

MessagePosté le: 07.04.2005, 10:51:36    Sujet du message: Répondre en citant

[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.

Smile

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
Revenir en haut
Deconnecte    Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur MSN Messenger
ckforum




Habitué
Habitué



Inscrit le: Jan 06, 2004
Messages: 1653
Localisation: FRANCE

MessagePosté le: 07.04.2005, 11:16:10    Sujet du message: Répondre en citant

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.

A bientôt
...

_________________
Bah on fait ce qu'on peut Hein Pas vrai ? ! et Vous !!!
(pas de demande d'aide via MP Merci ....)
Revenir en haut
Deconnecte    Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
Montrer les messages depuis:   
Printer-friendly version
Poster un nouveau sujetCe sujet est verrouillé, vous ne pouvez pas éditer les messages ou faire de réponses.    PHP-Nuke France - CE Index du Forum Installation Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
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 ::

Site motorisé par PHP-Nuke en version Française distribuée par PHP-Nuke France - CE
PHP-Nuke © 2004 by Francisco BURZI
Logiciel gratuit que vous pouvez redistribuer librement en respectant la licence GPL
Tout le contenu du site est copyright PHP-Nuke France - CE
Site déclaré à la C.N.I.L sous le n° de dossier 865996
Noms de domaines, hébergement et site propriété de RondPoint Médias Services - Jean-Claude GIRAUD
Design RMS - Création RondPoint Médias Services   RondPoint Médias Services - © 2005 / 2006
Réseau : Etxe Ama - Ovalie - PHP-Nuke France : CE - RondPoint Médias Services - La Vallouise