Vous n'êtes pas identifié(e).

#1 19/01/2010 09:05:17

stomerfull
Membre

probleme d'accès à postgres

bonjour,
j'obtient cet erreur quand j'essaie de se connecter à une base postgres

Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: aucun nom d'utilisateur PostgreSQL n'a été spécifié dans le paquet de démarrage in C:\wamp\www\evostreamclass\serializer.php on line 46

Warning: pg_query(): supplied argument is not a valid PostgreSQL link resource in C:\wamp\www\evostreamclass\serializer.php on line 129

Warning: pg_last_error(): supplied argument is not a valid PostgreSQL link resource in C:\wamp\www\evostreamclass\serializer.php on line 77

<?php
/*
* Class for parsing XML file
* Version  18-01-2010
*/
class Serializer
{
	// Variable for XML object
	var $urlXML;
	var $host;
	var $username;
	var $password;
	var $port;
	var $dbname;
	var $error = null;
    var $dbconnect;
    var $query;
    var $result;
    var $persistent;
 
     
	
	
	//Constructor
	public function Serializer($Db="mabase",$Host="127.0.0.1",$PgPort=5432,$User="postgres",$pass="admin",$persist=0)
	{
		 	
			$this->dbname=$Db;
			$this->host=$Host;
			$this->port=$PgPort;
            $this->username=$User;
            $this->password=$pass;
            $this->persistent=$persist;
            $this->Connect(); 
	}
	
	//method for connecting into the database
	public function Connect ()
    {
            $connect="host='".$this->host."' port='".$this->port."' dbname='".$this->dbname."' user='".$this->username."'";
            if (!empty($this->password))
                $connect.=" password=".$this->password;
            if ($this->persistent)
                $this->dbconnect=pg_pconnect($connect);
            else
                $this->dbconnect=pg_connect($connect);
            if (!$this->dbconnect)
                $this->error="cannot connect to database ".$this->dbname;
    }
 
    
    public function ExecuteQuery($sql)
    {
    	$this->query = new Query($sql,$this->dbconnect);
    	$this->result = $this->query->Execute();
    	$this->error = $this->query->Error();
    	return $this->result;
    }
	
 	public function FetchResult (&$row, $assoc=PGSQL_BOTH)
    {
            if (!$this->error)
            {
                 @$arr=pg_fetch_array ($this->result, $row, $assoc);
                 return $arr;
            }
            else
            {
                echo "An error occured, $this->error";
                return null;
            }
    }
   
    public function Error ()
    {
            if (version_compare(phpversion(), "4.2.0", "ge")>0)
                $this->error=pg_last_error ($this->dbconnect);
            return $this->error;
   }
    
	//Methode for parsin the element
	public function parser($urlXMLtoparse)
	{
		//Passed the urlXML to the object
		$this->urlXML = $urlXMLtoparse;
		
		//Charging data of the XML
		$xml = simplexml_load_file($this->urlXML);
		
		// if xml charger
		if($xml)
		{
			// for debugging
			/*echo "<table border='1'>";
			
			foreach($xml as $valeur)
			{
				echo "<tr>";
				foreach($valeur as $cle=>$val)
				{
					echo "<td>".$val."</td>";
				}
				echo "</tr>";
			}
			
			echo "</table>";*/
			return $xml;
		}
	}
	
}
 
class Query
{
	var $_sql;
	var $_result;
	var $_field;
	var $_dbconnection;
	var $_error;
	
	public function Query($sql,$dbconnection)
	{
		$this->_sql = $sql;
		$this->_dbconnection = $dbconnection;	
	}
	
	public function Execute()
	{
		$this->_result = pg_query($this->_dbconnection,$this->_sql);
		$this->_error = pg_result_error($this->_result);
		return $this->_result;
	}
	
    public function Error()
    {
            return $this->_error;
    }
	
}
?>


require_once("serializer.php");
$parseur = new Serializer($dbname,$host,$port,$username,$password,$persistent);
$retourParser = $parseur->parser("monfichier.xml");
 
//la requete sql 
$sql = "select * from clients";
if(!$parseur->ExecuteQuery($sql))
{
	 die ($parseur->Error());
}
for ($row=0; $result=$parseur->FetchResult($row, PGSQL_BOTH); $row++)
{
    echo $result['firstname'];
}

PS :
j'ai installé en local postgresql 8.4

j'ai mis en place aussi phpgadmin pour une interface convivial comme phpmyadmin


merci d'avance

Hors ligne

#2 19/01/2010 09:09:31

gleu
Administrateur

Re : probleme d'accès à postgres

À priori, je dirais que le $username de :

$parseur = new Serializer($dbname,$host,$port,$username,$password,$persistent);

est une chaîne vide.

Un affichage de $connect dans la méthode Connect() en apporterait la preuve.


Guillaume.

Hors ligne

#3 19/01/2010 09:14:34

Marc Cousin
Membre

Re : probleme d'accès à postgres

Que vaut exactement la variable $connect ?


Marc.

Hors ligne

#4 19/01/2010 09:15:35

Marc Cousin
Membre

Re : probleme d'accès à postgres

Oups smile


Marc.

Hors ligne

#5 19/01/2010 09:42:59

stomerfull
Membre

Re : probleme d'accès à postgres

merci beaucoup pour votre réponse

j'ai du modifier comme ça le code car il ne trouve pas les paramètres dans la méthode ou constructeur serialier

class Serializer
{
	// Variable for XML object
	var $urlXML;
	var $host;
	var $username;
	var $password;
	var $port;
	var $dbname;
	var $error = null;
    var $dbconnect;
    var $query;
    var $result;
    var $persistent;

	//Constructor
	public function __construct()
	{
            $this->Connect(); 
	}
	
	//method for connecting into the database
	public function Connect ($Db="evostream_logs",$Host="127.0.0.1",$PgPort=5432,$User="postgres",$pass="admin",$persist=0)
    {
		// Passed the variable to objet
    	$this->dbname=$Db;
		$this->host=$Host;
		$this->port=$PgPort;
		$this->username=$User;
		$this->password=$pass;
		$this->persistent=$persist;
            
    	$connect="host='".$this->host."' port='".$this->port."' dbname='".$this->dbname."' user='".$this->username."'";
            
        // if password is not empty
    	if (!empty($this->password))
        {
          		$connect.=" password=".$this->password;
        }  
        
        //Connection persistent
        if ($this->persistent)
        {
                $this->dbconnect=pg_pconnect($connect);
        }else{
                $this->dbconnect=pg_connect($connect);
        }        

        //if not connected
        if (!$this->dbconnect)
        {
                $this->error="cannot connect to database ".$this->dbname;
        }        
    }

Hors ligne

Pied de page des forums