OVH Community, votre nouvel espace communautaire.

Probleme avec les Majuscules sur tous mes scripts php


hotjunkie
29/03/2010, 11h27
Finalement j'ai trouve le problème
c'est la nouvelle version de ma class de connexion a la DB
et je comprend vraiment pas pourquoi cela influe sur le contenu de mes variables avant même que j'exécute la requête .

voici l'ancienne qui marche :

Code PHP:
/**
*  Database class to implement singleton pattern on top of mysqli
*/
class Database extends mysqli
{
   
/**
   *  @var object Singleton instance
   */
    
private $query;
    private 
$results;
    private 
$link;
    private 
$job;
    var     
$error;
       private static 
$instance null;
   
       
// DB connection parameters:
       
private $dbHost '';
       private 
$dbUser '';
       private 
$dbPwd  '';
       private 
$dbName '';
   
       
/**
       *  Constructor
       *  @return void
       */
       
private function __construct()
      {
          
$this->link = @mysql_connect($this->dbHost$this->dbUser,$this->dbPwd);
        if(!
$this->link)
        {
            exit(
"Impossible de se connecter au serveur");    
        }
        else
            if(!@
mysql_select_db($this->dbName$this->link))
                exit(
"Impossible de se connecter a la base de donnée");          
       }   
       
/**
       *  Do the singleton thing
       *  @return object Database
       */
       
public  static function getInstance() {
          if(
self::$instance === null)
          {
             
$c __CLASS__;
             
self::$instance = new $c;
          }
          return 
self::$instance;
       }

       public function 
__clone()
       {
          throw new 
Exception("Cannot clone ".__CLASS__." class");
       }
    
  public function 
query($query)
    {
        
$this->query $query;
        
$this->execute();
        return(
$this->state());
    }
    
//execute the mysql query
    
private function execute()
    {
        
$this->results mysql_query($this->query$this->link) or $this->seterror(mysql_error());        
        if(
$this->results)        
            
$this->job true;
        else
        {
            
$this->job false;
            
        }
    }
    function 
seterror($err)
    {
        
$_SESSION['sql-error'] = $err;
    }
    public function 
state()
    {
        
//exit(var_dump($this->job));
        
return($this->job);
    }
    public function 
error()
    {
        return(
mysql_error());
    }
    
//protect against SQL injection attacks
    
public function antisql($data)
    {
        if (
is_array($data))
        {
            foreach (
$data as $name=>$value)
            {
                
$data[$name] = mysql_real_escape_string($value);
            }
        }
        else
        {
            
$data mysql_real_escape_string($data);
        }
        return 
$data;
    }
    
    
//retrive the insert id
          
public function insertid()
        {
            return 
mysql_insert_id();
        }
        
    
//return an array of results
    
public function returnArray()
        {
            
$toret = array();
            while (
$row_recordset mysql_fetch_assoc($this->results)) {
                
array_push($toret$row_recordset);
            }
            return 
$toret;
        }
    public            function 
num_rows($requete null)
    {    
        if(!empty(
$requete))
            
$this->query($requete);
        return 
mysql_num_rows($this->results);
    }
}
?>

et la nouvelle qui deconne :
Code PHP:
/**
*  Database class to implement singleton pattern on top of mysqli
*/
class Database 
{
   
/**
   *  @var object Singleton instance
   */
    
private $query;
    private 
$results;
    private static 
$link ;
    private 
$job;
    private 
$error;
    private 
$last_id;
    private 
$result_array;
    private 
$result_nbr;
       private static 
$instance null;
    private static 
$db_id null;
    private static 
$db_connect false;
    private 
$dbHost '';
    private 
$dbUser '';
    private 
$dbPwd  '';
    private 
$dbName '';
       
/**
       *  Constructor
       *  @return void
       */
       
private function __construct()
      {
        
//global $db_srv, $db_user, $db_pass, $db_name;
        //self::$link = @mysql_connect($db_srv, $db_user, $db_pass);
        
$this->connecte_db(0);    
       }   
       
/**
       *  Do the singleton thing
       *  @return object Database
       */
    
private function connecte_db($id_db 0)
    {
        if(
$id_db == 0)
        {        
            
$this->dbUser '';
            
$this->dbPwd  '';
            
$this->dbName '';
        }
        elseif(
$id_db == 1)
        {
            
$this->dbUser '';
            
$this->dbPwd  '';
            
$this->dbName '';
        }
            
        
self::$link = @mysql_connect($this->dbHost$this->dbUser,$this->dbPwd);
            
        if(!
mysql_ping(self::$link))
        {
            new 
Error("c_db_f");
        }
        else
        {
            if(!
mysql_select_db($this->dbNameself::$link) )
                new 
Error("s_db_f");                
        }
           
    }
       public  static function 
getInstance() {
          if(
self::$instance === null)
          {
             
$c __CLASS__;
             
self::$instance = new $c;
          }
          return 
self::$instance;
       }

       public function 
__clone()
       {
          throw new 
Exception("Cannot clone ".__CLASS__." class");
       }
    function 
lastid()
      {   
        return 
$this->last_id;
      }   
    
    public function 
query($query)
    {
        
$this->query $query;
        
$this->execute();
        return(
$this->state());
    }
   
    
/**
     * This is method execute
     *
     * @return void Execute la requete SQL demande
     *
     */
    
private function execute()
    {
        if(
stristr($this->query'filesystem'))
            
$this->connecte_db(1);
        else
            
$this->connecte_db(0);
        
        
/*if(!mysql_ping(self::$link))    
            $this->connecte_db(0);    */
        
$this->results mysql_query($this->queryself::$link) ;
        
        
$this->job false;
        if(
$this->results)        
            
$this->job true;
        else
            
$this->error mysql_error();
            
        
$this->result_nbr = @mysql_num_rows($this->results);
        
        if(
stristr($this->query'INSERT'))
            
$this->last_id = @mysql_insert_id();    
            
        if(
stristr($this->query'SELECT'))
        {
            
$this->result_array = array();
            while (
$row_recordset = @mysql_fetch_assoc($this->results)) 
            {
                
array_push($this->result_array$row_recordset);
            }
        }
        @
mysql_close(self::$link);
        @
mysql_close();
        
    }
    
    
/**
     * This is method insertid
     *
     * @return int l'id de la derniere insertion
     *
     */
    
public function insertid()
    {
        return 
$this->last_id;
    }
    
    
    
/**
     * This is method returnArray
     *
     * @return array return an array of results
     *
     */
    
public function returnArray()
    {
        return 
$this->result_array;
    }
    
    
/**
     * This is method num_rows
     *
     * @param string $requete requete sql
     * @return int le nombre de resultat de la requete
     *
     */
    
public function num_rows($requete null)
    {    
        if(!empty(
$requete))
            
$this->query($requete);
        return 
$this->result_nbr;
    }
    
    
/**
     * This is method begin
     *
     * @return void Commence une transaction
     *
     */
    
public function begin()
    {
        
$this->trans true;
        
$this->query(" BEGIN ");
    }
    
    
/**
     * This is method commit
     *
     * @return void Valide une transaction SQL
     *
     */
    
public function commit()
    {
        
$this->trans false;
        
$this->query(" COMMIT ");
    }
    
    
    
/**
     * This is method rollback
     *
     * @return void Annule une transaction SQL
     *
     */
    
public function rollback()
    {
        
$this->query(" ROLLBACK ");
        
$this->trans false;
    }
    
    
    
/**
     * This is method get_result
     *
     * @return mysqli_result retourne la reponse brut de Mysql
     *
     */
    
public function get_result()
    {
        return(
$this->results);
    }
    
    
    
/**
     * This is method state
     *
     * @return bool renvoie l'etat de la requete SQL
     *
     */
    
public function state()
    {
        return(
$this->job);
    }
    
    
    
/**
     * This is method error
     *
     * @return string Renvoi le Message d'erreur de Mysql
     *
     */
    
public function error()
    {
        return 
$this->error;
    }
    
/*//protect against SQL injection attacks
    public function antisql($data)
    {
        if(!mysql_ping(self::$link))    
            $this->connecte_db(0);
        if (is_array($data))
        {
            foreach ($data as $name=>$value)
            {
                $data[$name] = mysql_real_escape_string($value);
            }
        }
        else
        {
            $data = mysql_real_escape_string($data);
        }
        return $data;
    }*/
    
}
?>

sur le premier j'avais trop de too many connexion .j'ai voulu changer avec la deuxieme pour ouvrir une connexion a chaque requête et la refermer tout de suite après

hotjunkie
29/03/2010, 11h03
Merci d'avoir repondu
mais jai la meme chose partout meme avec un sprintf

Gaston_Phone
29/03/2010, 07h06
Et avec ;
Code PHP:
$query "UPDATE `objet_cat` SET `objet` = '".$temp."' WHERE `id_u_cat` = '".$id."'"

hotjunkie
29/03/2010, 03h19
Salut tout le monde
je développe des services php pour mon application Flex
mais je rencontre quelques problèmes depuis ce matin

tous les majuscules au niveau de mes chaînes sont transforme en minuscule.
et je vois pas la cause
voici un exemple de code :
Code PHP:
$temp $toret[0]['objet']."||".htmlspecialchars(trim($nom),ENT_QUOTES)."=".$type."=".$option."=".$ord;           
else               
$temp htmlspecialchars(trim($nom),ENT_QUOTES)."=".$type."=".$option."=".$ord;
 
$query "UPDATE `objet_cat` SET `objet` = '$temp' WHERE `id_u_cat` = '".$id."'"
mon $temp contient bien $nom en majuscule mais après dans $query c'est en minuscule . je suis en UTF8 php6
et ya pas que ce script tous mes autres scripts me sauvegarde tout en minuscule alors qu'avant tout etais clean.
aidez moi svp