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 :

probléme avec PDO fetch


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Points : 130
    Points
    130
    Par défaut probléme avec PDO fetch
    Bonjour cher développeur

    d’habitude je travail avec PDO pour ce connecter a ma base de donnée J'ai du changer hébergeur pour que je me trouve que le nouveau hébergeur ne reconnais pas PDO

    voila ma class pour la connections avec PDO

    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
    20
    21
    22
    23
     
    class AccB {
     
        public $a;
        public $r;
         public function conn()
         {
               $this->a=new PDO('mysql:host=localhost;dbname=_3gi', 'root', '');
     
         }
         public function Select($re)
         {
     
              $this->conn();
             $r=$this->a->query($re);
              return $r;
         }
          public function Exec($re)
         {
     
              $this->conn();
              $this->a->exec($re);
         }
    et sa marche très bien

    et pour résolu mon problème j'ai fais une autre class avec l’ancien version pour ce connecter a la base de donnée

    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
    20
    21
    22
    23
    24
     
    class acc
        {
            public function conn()
            {
                $host ="localhost";
                $user = "root";
                $bdd = "base";
                $passwd  = "";
                mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
                mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
            }
             public function Select($re)
            {
                $this->conn();
                $r=mysql_query($re);
                return $r;
            }
            public function Exec($re)
            {
                $this->conn();
                mysql_query($re);
            }
        }
    et sa marche très bien mais le problème c'est que dans tout le projet j'ai travailler avec

    pour fetcher l'ensemble du donnée provenant de ma base


    es ce que il ya pas de solution pour de travailler avec fetch car je ne veux parcourir tout mon projet en changent fetch par mysql_fetch_row()



    Codialement Ryodo
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement.
    Le français n'est pas ma langue maternelle, désolé pour les éventuelles fautes.
    http://icoz.ma
    http://icozstore.com

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Au lieu de retourner $r il faudrait que tu le stockes dans ta class.
    Ensuite tu créées une fonction fetch() avec mysql_fetch_row() dedans et le tour est joué.

    PS: plutôt que d'appeler à chaque requête une connexion à la bdd...
    Crées une variable static de connexion où tu stockes la connexion.
    Lors de l'appel à acc:conn() tu vérifies (dans cette fonction) que la variable static est null avant de lancer la connexion.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    par contre dans tes classe a chaque fois que tu fais une requete tu te reconnecte c'est pas très optimisé

  4. #4
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    je ne vois pas trop l’intérêt de créer des classes qui reprennent des méthodes existante de la classe PDO si ce n'est d'écrire 50 lignes de codes supplémentaire...à moins de vouloir faire un singleton afin de limiter le nombre de connexion par session.
    Ça me rappel un collègue de formation qui avait fait une fonction pour chaque type de requete SQL plutot que de factoriser le tout genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    execute($requete,$typeRequete)
    et d'en retourner la ressource ou le nombre de lignes affectées...
    J'adore la POO!
    Développeur informatique contrarié...

  5. #5
    Membre habitué
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Points : 130
    Points
    130
    Par défaut
    Merci pour Remarque je vais voir comment rendre ma class singleton



    Citation Envoyé par transgohan Voir le message
    Au lieu de retourner $r il faudrait que tu le stockes dans ta class.
    Ensuite tu créées une fonction fetch() avec mysql_fetch_row() dedans et le tour est joué.
    comment je peux faire stp ?
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement.
    Le français n'est pas ma langue maternelle, désolé pour les éventuelles fautes.
    http://icoz.ma
    http://icozstore.com

  6. #6
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function fetch()
    {
      $result = array();
      while($res = mysql_fetch_row($this->r) )
        $result[] = $res;
      return $result;
    }
    Il n'y a rien de plus simple.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  7. #7
    Membre habitué
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function fetch()
    {
      $result = array();
      while($res = mysql_fetch_row($this->r) )
        $result[] = $res;
      return $result;
    }
    Il n'y a rien de plus simple.

    ouii c'est trop simple merci

    mais ou je doit mètre ce code car j'ai plus de 50 pages dans mon projet et tous utilise la fonction fetch pour fetcher la base de donnée

    voila un exemple d'etulisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     while($rslt=$tab->fetch())
        {
                echo "$tab[0]";
        }
    Merci bcp
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement.
    Le français n'est pas ma langue maternelle, désolé pour les éventuelles fautes.
    http://icoz.ma
    http://icozstore.com

  8. #8
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Hum oui déjà j'ai fait une fonction fetchAll plutôt que fetch... Donc pas de boucle à faire mais renvoyer directement le retour de mysql_fetch_row().

    Mais j'en viens tout de même à me poser des questions... Tu avoues finalement que c'est simple sauf que ta phrase suivante annonce clairement que tu n'as absolument rien compris à ce code...
    Il serait peut être bon de revoir le concept de la programmation objet.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  9. #9
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Quitte à utiliser une "vieille" version, autant utiliser mysqli_* plutôt que mysql_*.
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  10. #10
    Membre habitué
    Homme Profil pro
    ray man
    Inscrit en
    Juillet 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ray man

    Informations forums :
    Inscription : Juillet 2009
    Messages : 274
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Hum oui déjà j'ai fait une fonction fetchAll plutôt que fetch... Donc pas de boucle à faire mais renvoyer directement le retour de mysql_fetch_row().

    Mais j'en viens tout de même à me poser des questions... Tu avoues finalement que c'est simple sauf que ta phrase suivante annonce clairement que tu n'as absolument rien compris à ce code...
    Il serait peut être bon de revoir le concept de la programmation objet.
    OK noble roi Merci pour votre aide
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement.
    Le français n'est pas ma langue maternelle, désolé pour les éventuelles fautes.
    http://icoz.ma
    http://icozstore.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec multiple fetch EAGER
    Par alen22 dans le forum JPA
    Réponses: 5
    Dernier message: 06/06/2013, 16h47
  2. [PHP 5.0] Problème avec PDO::FETCH_GROUP
    Par astroma dans le forum Langage
    Réponses: 0
    Dernier message: 21/07/2012, 15h32
  3. [PDO] Un problème avec PDO
    Par magmus dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/10/2009, 16h47
  4. [PDO] Problème avec PDO depuis migration
    Par XData dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 23/07/2009, 16h33
  5. [PDO] Problème avec un FETCH
    Par kanabzh29 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/10/2008, 15h17

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