developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 14 years ago

Closed 13 years ago

#123 closed enhancement (fixed)

utilisation de la configuration système pour la connexion PostgreSQL

Reported by: Laurent Raufaste <analogue@…> Owned by: laurentj
Priority: low Milestone: Jelix 1.0beta2
Component: jelix:db Version: trunk
Severity: minor Keywords:
Cc: Blocked By:
Blocking: Documentation needed:
Hosting Provider: Php version:

Description

Voila ;)

Index: lib/jelix/db/drivers/postgresql/jDbConnection.postgresql.class.php
===================================================================
--- lib/jelix/db/drivers/postgresql/jDbConnection.postgresql.class.php	(revision 373)
+++ lib/jelix/db/drivers/postgresql/jDbConnection.postgresql.class.php	(working copy)
@@ -63,17 +63,30 @@
     protected function _connect (){
         $funcconnect= ($this->profil['persistent'] ? 'pg_pconnect':'pg_connect');
 
-        $str = 'dbname=\''.$this->profil['database'].'\' user=\''.$this->profil['user'].'\' password=\''.$this->profil['password'].'\'';
-
         // on fait une distinction car si host indiqué -> connection TCP/IP, sinon socket unix
         if($this->profil['host'] != '')
-            $str = 'host=\''.$this->profil['host'].'\' '.$str;
+            $str = 'host=\''.$this->profil['host'].'\'';
 
         // Si le port est défini on le rajoute à la chaine de connexion
         if (isset($this->profil['port'])) {
             $str .= ' port=\''.$this->profil['port'].'\'';
         }
 
+        // Si le nom de la base de données est spécifié, on le rajoute à la chaine de connexion
+        if ($this->profil['database'] != '') {
+            $str .= ' dbname=\''.$this->profil['database'].'\'';
+        }
+
+        // Si le nom d'utilisateur est spécifié, on le rajoute à la chaine de connexion
+        if ($this->profil['user'] != '') {
+            $str .= ' user=\''.$this->profil['user'].'\'';
+        }
+
+        // Si le mot de passe est spécifié, on le rajoute à la chaine de connexion
+        if ($this->profil['password'] != '') {
+            $str .= ' password=\''.$this->profil['password'].'\'';
+        }
+
         if($cnx=@$funcconnect ($str)){
             if(isset($this->profil['force_encoding']) && $this->profil['force_encoding'] == true
                && isset($this->_charsets[$GLOBALS['gJConfig']->defaultCharset])){

Change History (3)

comment:1 Changed 14 years ago by laurentj

  • Component changed from jelix to jelix:db
  • Milestone set to Jelix 1.0beta2

rajout précisions oublié par l'auteur du patch : pgconnect peut prendre les valeurs dans des variables d'environnement si elles ne sont pas indiquées dans la chaine de connection

@analogue : il faut faire des isset. en effet, et si les valeurs sont vides intentionnellement ?

comment:2 Changed 14 years ago by laurentj

  • Owner set to laurentj
  • Priority changed from lowest to low
  • Status changed from new to assigned

comment:3 Changed 13 years ago by laurentj

  • Resolution set to fixed
  • Status changed from assigned to closed
  • Summary changed from Patch connexion PostgreSQL to utilisation de la configuration système pour la connexion PostgreSQL

Le patch a été un peu remanié (avec des isset pour le login et le password) et intégré dans le trunk.

Note: See TracTickets for help on using tickets.