Utilisation d'une fonction d'une même classe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Utilisation d'une fonction d'une même classe

par Dadou » 29 juin 2006, 19:48

Ca fonctionne :D

Mais en fait je viens de me rendre compte que je ne peux pas l'utiliser comme ça :(

Car si j'ai des données non numériques, je suis obligé de les entourer de quotes dans la requête, et elles seront échappées, donc erreur sql.

En tout cas, j'aurais toujours appris à appeler une fonction d'une même classe.

Merci ;)

par zigz4g » 29 juin 2006, 19:16

Salut,
tu devrais essayer comme ceci dans ta methode :
$this->sql = $this->securise($sql);

Utilisation d'une fonction d'une même classe

par Dadou » 29 juin 2006, 18:18

Bonjour,

Désolé pour le titre, mais je ne savias pas comment décrire mon problème.

Je débute totalement avec la POO, et j'essaie d'apprendre à m'en servir.

Mais il y a quelques trucs que je ne comprends pas.

Dans ma classe, j'aimerais appeler une fonction déjà déclarée dans cette même classe, mais j'obtiens un fatal error function inconnue.

Donc j'aimerais savoir comment on fait pour appeler cette fonction.

Second problème, qui n'en est pas un, il y a un second paramètre optionnel à ma fonction req, mais si je mets TRUE, sur une requête de ce style :

Code : Tout sélectionner

SELECT pseudo FROM TABLE WHERE id=2
Cela me retourne la 1ère lettre du pseudo, c'est étrange, si quelqu'un pouvait m'expliquer pourquoi.

Voici la class en question :
class connexion
{
    var $tt_req = 0;
    function connexion($h, $u, $p, $b)
    {
        $this -> connect = @mysql_connect($h, $u, $p);
        if( $this -> connect !== false )
        {
            $this -> bdd = @mysql_select_db($b);
            if( $this -> bdd === false )
            {
                @mysql_close($this -> connect);
                $this -> connect = false;
                exit('Impossible de sélectionner une base de données');
            }
            $this -> tt_exec = microtime(true);
            return true;      
        }
        exit('Le serveur du site est momentanément indisponible, veuillez réessayer ultérieurement.<br /><br />Merci de votre compréhension');
    }
       
    function deconnexion()
    {
        if( $this -> connect !== false )
        {
            $this -> connect = mysql_close($this -> connect);
            $this -> tt_exec = round(microtime(true) - $this -> tt_exec, 4);
            return $this -> connect;
        }
        return false;
    }
    
    function securise($sql)
    {
        if(get_magic_quotes_gpc)
        {
            $this -> sql = stripslashes($sql);
        }
        if( !is_numeric($sql) )
        {
            $this -> sql = mysql_real_escape_string($sql);
        }
        return $this -> sql;
    }
    
    function req($sql, $param = false)
    {
        $this -> sql = securise($sql); 
        if( $this -> connect !== false )
        {
            $this -> result = @mysql_query($this -> sql, $this -> connect);
            $this -> tt_req++;
            $this -> erreur = ($this -> result === false) ? true : false;
            if( $param && !$this -> erreur )
            {
                if( $param == 'result' ) $this -> result = @mysql_result($this -> result, 0);
                elseif( $param == 'row') $this -> result = @mysql_fetch_row($this -> result);
                elseif( $param == 'assoc') $this -> result = @mysql_fetch_assoc($this -> result);
                elseif( $param == 'array' ) $this -> result = @mysql_fetch_array($this -> result);
                elseif( $param == 'num_rows' ) $this -> result = @mysql_num_rows($this -> result);
                elseif( $param == 'data_seek' ) $this -> result = @mysql_data_seek($this -> result);
                else $this -> result = false;
                $this -> erreur = ($this -> result === false) ? true : false;
            }
        }
        if( $this -> erreur ) exit('Une erreur s\'est produite lors de la requête');
        return $this -> result;
    }
}
Donc, j'aimerais appeler la function securise dans la function req.

Merci de votre aide :P