IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] : faire une fonction quote


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut [POO] : faire une fonction quote
    Bonjour a tous, alors voila je vous explique ce sur quoi je bloque, j’essaie de transformé ce code php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // on teste si une entrée de la base contient ce couple login / pass
    $sql = 'SELECT count(*) as nb FROM `technicien` WHERE `Nom`="'.mysql_escape_string($_SESSION['nom_tech']).'" AND `pass_md5`=PASSWORD("'.mysql_escape_string($pass).'") ';
     
    //On envoi la requete
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    //On met le resultat sous forme de tableau 
    $result=mysql_fetch_assoc($req);
    en POO, j'ai testé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    require_once "connexionBDD.class.php";
    require_once "technicien.class.php";
     
    class Erreur {
     
    protected $secure1 ;
    protected $secure2 ;
     
    	public function getNomPass ()
    	{
    	$connexion=new ConnexionBDD() ;
    	$resultats=$connexion->query('SELECT count(*) as nb FROM `technicien` WHERE `Nom`="'.$this->secure1->quote($_SESSION['rech']).'" AND `pass_md5`=PASSWORD("'.$this->secure2->quote($pass).'")');
    	$ligne = $resultats->setFetchMode(PDO::FETCH_OBJ);
    	}
     
    }
     
    ?>
    Mais il me retourne un message d'erreur en me disant que la fonction quote n'est ps définis ce qui est, nous sommes d'accord, normal si je ne l'ai pas déclaré dans ce fichier ou dans un des fichiers inclue.
    Donc dans connexionBDD.class.php j'ai décidé de créer la fonction quote, problème : malgré mes recherches je n'ai absolument aucunes idées de comment cette fonction se compose .. J'ai réussis avec query ou encore avec setFetchMode, mais alors quote pas moyen de comprendre le manuel de cette fonctionnalité et d'en faire une dans mon code.
    Est ce que quelqu'un pourrait m'aider, m'orienter vers une piste, m'aiguiller quoi s'il vous plait ?
    Merci de votre patiente et de votre aide bonne journée a tout le monde !

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Il semble que vous n'ayez pas compris certains principes de la programmation objet.

    Pour que dans votre classe Erreur vous puissiez accéder à $this->secure1->quote, il faudrait au préalable que vous ayez défini le contenu de la variable $this->secure1 à un une instance d'un objet qui possède la classe quote.

    Par contre, pour information la fonction quote existe dans la classe PDO, et j'ai l'impression qu'elle existe aussi dans votre classe ConnexionBDD. Donc il faut faire :

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Bonjour Thomas, merci de ta réponse rapide !
    Je ne comprend pas vraiment tout ce que tu me racontes ...
    secure1 et secure2 sont la parce que dans le manuel j'ai vu cette syntaxe honnêtement ^^
    si je fais $connexion=quote(), dans quote je met toute ma requête sql ?
    Oui elle existe peut etre sous PDO mais si je n'en fais pas une comme query dans connexionBDD ou un autre fichier PHP que j'inclue ça retourne une erreur et c'est logique je trouve ...

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    En effet, il semble qu'il te manque les bases de la programmation objet.

    Quand tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->secure2->quote()
    cela signifie que tu tentes d'appeler la fonction quote sur l'attribut secure2 qui doit être un objet qui possède la méthode quote.

    Autrement dit pour que ça marche, il faut qu'il y ai eu quelque chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    class Foo {
     
        public function quote($var) {
            //do something
        }
    }
     
    class Erreur () {
     
        protected $secure2;
     
        public function getNomPass () {
            $this->secure2 = new Foo();
            $this->secure2->quote($var);
        }
    }
    Si tu ne déclares pas secure2 comme un objet, ou que cet objet ne possède pas la méthode quote, cela ne pourra aucunement marcher.

    Je t'invite à découvrir l'ensemble des bases de la POO avant de t'aventurer davantage
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Nan mais si quand même sa j'ai compris les gars ! LOL
    je ne comprend pas comment faire pour définir quote() c'est tout

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Citation Envoyé par gwendoline-bricout Voir le message
    Nan mais si quand même sa j'ai compris les gars ! LOL
    je ne comprend pas comment faire pour définir quote() c'est tout
    Re-bonjour,
    Dans ce cas il faut que vous alliez lire des cours ou tutoriels sur la programmation en général et la programmation objet en PHP. Car la personne ci-dessus vient de te montrer comment faire pour définir la fonction quote().
    http://g-rossolini.developpez.com/tu.../?page=poo#LIV

  7. #7
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    C'est le do something qui me bloque :/

    J'ai essayé avec prepare mais rien a faire je ne comprend pas comment on construit ce genre de focntion j'ai tenté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	public function prepare($sql) 
    	{	
    		$connexion = new PDO("mysql:host=".self::_HOTE.";dbname=".self::_NOM_BD, self::_USER, self::_PWD);
    		$sth = $connexion->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
    	}
    Que j'utilise comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Erreur {
     
    	public function getNomPass ()
    	{
    	$connexion=new ConnexionBDD() ;
    	$prepare=new ConnexionBDD() ;
     
    	$sql=$connexion->query('SELECT * FROM `technicien` WHERE `Nom` = "Vanags Tony" AND `pass_md5` = PASSWORD( "toto" )');
    	$res=$prepare->prepare($sql);
    	//$ligne = $sql->setFetchMode(PDO::FETCH_OBJ);
    	}
    }
    J'ai cette erreur :
    Warning: PDO::prepare() expects parameter 1 to be string, object given in C:\wamp\www\lcesa2\connexionBDD.class.php on line 55
    Ligne 55 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sth = $connexion->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Il faudrait quand même que tu apprennes à être un peu plus autonome... parce que là, tes questions, ce sont quand même les bases du débogages...

    1. Apprends à lire un message d'erreur !
    On te dit que tu as passé un objet à une méthode là où elle attend une chaine.

    2. Apprends à rechercher par toi-même !
    Pose-toi donc la question de ce que renvoie $connexion->query() et en quoi ce n'est pas conforme avec ce qui est attendu par $prepare->prepare() !

    3. Apprends à comprendre ce que tu fais !
    Quelle est l'utilité de préparer une requête après l'avoir exécutée ?

    4. A quoi ça te sert d'avoir deux objets ConnexionBDD() dans ta méthode ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. Comment faire une fonction - procédure
    Par Madmac dans le forum C
    Réponses: 14
    Dernier message: 12/08/2006, 09h57
  2. Comment faire une fonction qui renvoi un tableau.
    Par poly128 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/06/2006, 01h04
  3. [C#][Débutant] Comment faire une fonction FindWindow ?
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/04/2006, 13h19
  4. Faire une fonction
    Par philippef dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/04/2006, 17h14
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo