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

PHP & Base de données Discussion :

Une methode pour une class


Sujet :

PHP & Base de données

  1. #1
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut Une methode pour une class
    Bonjour,

    Voici ma classe odbc :
    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
     
    class odbc {
     
    /*
     *divers parametre
     *@var ...
    */
     
        public function connect($dsn) {
        	$this->cnx = odbc_connect("$dsn", 'user', 'pass');
     
        	if($this->cnx == false) {
        		$this->msgerreur = "Connexion impossible sur le dsn ". $this->dsn .", erreur numéro ". odbc_error($this->cnx) ." : ". odbc_errormsg($this->cnx);
        		return false;
        	}
        		return $this->cnx;
        }
     
    }
    Donc j'ai ma méthode connect() qui marche bien.

    Mais je voudrai une nouvelle méthode "result()" qui n'est autre que la fonction odbc_result.

    Le problème c'est que je n'ai aucune idée de comment la faire, puisque elle prend deux paramètres : exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $sql = "SELECT........FROM.....WHERE";
    $conn = odbc_connect('x', 'xx', 'xxx')
     
    while ($row = odbc_fetch_array) {
     echo odbc_result($conn, 'tab1_column1');
    }
    Quelqu'un pourrait m'aider ?

    Merci

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    Mais je voudrai une nouvelle méthode "result()" qui n'est autre que la fonction odbc_result.
    En gros tu veux faire une fonction qui existe déjà ?

    Explique nous mieux ton besoin s'il te plaît, car là ce n'est vraiment pas clair...

  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
    c'est comme pour PDO, il y a la classe PDO et la classe PDOStatement

  4. #4
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Et bien dans ma classe je voudrai une fonction qui permet d’exécuter un odbc_result.

    Que j’appellerai comme ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $mafonc = new odbc;
    $mafonction->result('db_collone_name.');

  5. #5
    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
    Citation Envoyé par thebarbarius Voir le message
    Et bien dans ma classeje voudrai une fonction qui permet d'executer un odbc_result.

    Que j'appelerai comme sa.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $mafonc = new odbc;
    $mafonction->result('db_collone_name.');
    et ta requête tu la fais quand ?

  6. #6
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Je recommence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $conn = new odbc();
    $sql = "SELECT........FROM.....WHERE";
    $conn = odbc_connect('x', 'xx', 'xxx')
     
    while ($row = $conn->numRows) {
     echo result('tab1_column1');
    }
    Ça ressemblerai a ça.

    Voici ma méthode numsRows.
    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
    25
    26
    27
     
    class... {
    public function numRows() {
     
            if(empty($this->msgerreur)) {
     
                $donnees = odbc_num_rows($this->ressreq);
     
                if($donnees != false) {
     
                    return $donnees;
     
                } else {
     
                    $this->msgerreur = "Récupération des données impossible, erreur numéro ". odbc_error($this->cnx) ." : ". odbc_errormsg($this->cnx);
     
                    return false;
                }
     
            } else {
     
                return false;
     
            }
     
        }
    }

  7. #7
    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
    Citation Envoyé par thebarbarius Voir le message
    Je recommence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $conn = new odbc();
    $sql = "SELECT........FROM.....WHERE";
    $conn = odbc_connect('x', 'xx', 'xxx')
     
    while ($row = $conn->numRows) {
     echo $row['tab1_column1'];
    }
    Ça ressemblerai a ça.

    Voici ma méthode numsRows.
    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
    25
    26
    27
     
    class... {
    public function numRows() {
     
            if(empty($this->msgerreur)) {
     
                $donnees = odbc_num_rows($this->ressreq);
     
                if($donnees != false) {
     
                    return $donnees;
     
                } else {
     
                    $this->msgerreur = "Récupération des données impossible, erreur numéro ". odbc_error($this->cnx) ." : ". odbc_errormsg($this->cnx);
     
                    return false;
                }
     
            } else {
     
                return false;
     
            }
     
        }
    }
    tu mélanges plein de truc la et il manque la moitié des choses


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $conn = odbc_connect('x', 'xx', 'xxx')
    pourquoi odbc_connect ??? c'est pas $conn->connect ???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ($row = $conn->numRows) {
     echo $row['tab1_column1'];
    }
    et ton $sql il passe ou ?? pas de exec de query de prépare ??? c'est une propriété ?? et sinon pas de paramètres à ta méthode ? ni à ta classe d'ailleurs
    et pourquoi un while sur un nowRows tu vas avoir une boucle infinie...
    bref du grand n'importe quoi la

  8. #8
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Oui je commence a fatiguer désolé.

    Donc je refait.

    J'aimerai que ça ressemble a ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $conn = new odbc();
    $sql = "SELECT........FROM.....WHERE";
     
    while ($row = $conn->numRows($sql)) {
     echo result('tab1_column1');
    }

  9. #9
    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
    Citation Envoyé par thebarbarius Voir le message
    Oui je commence a fatiguer désolé.

    Donc je refait.

    J'aimerai que ça ressemble a ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $conn = new odbc();
    $sql = "SELECT........FROM.....WHERE";
     
    while ($row = $conn->numRows($sql)) {
     echo result('tab1_column1');
    }
    pareil, nowrows ça renvoie le nombre de lignes affectées donc boucle infinie, et même si ton arrière pensé était de faire odbc_fetch_array, ca ne marchera pas non plus puisque le while va boucler sur une requête et non une ressource

    si tu veux faire quelque chose ça ressemblerai a ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $conn = new ODBC();
    $sql = "SELECT........FROM.....WHERE";
    $result = $conn->exec($sql);
     
    while($row = $conn->fetchArray($result))
    {
        echo $row['tab1_column1'];
    }

  10. #10
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Avec le array j'ai déjà ma méthode, et sa fonctionne bien.

    Mais la j'aurai besoin d'un num_rows,

    je dois compter le nombre d'entrée de ma dbb, vérifier le nombre et afficher les requêtes.


    mais il me faudrait absolument ce num_rows.

    possible ?

  11. #11
    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
    Citation Envoyé par thebarbarius Voir le message
    Avec le array j'ai deja mamethode, et sa fonctionne bien.

    Mais la j'aurai besoin d'un num_rows,

    je dois compter le nombre d'entrée de ma dbb, vérifier le nombre et afficher les requêtes.


    mais il me faudrai absolument ce num_rows.

    possible ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $conn = new ODBC();
    $sql = "SELECT........FROM.....WHERE";
    $result = $conn->exec($sql);
     
    $numrow = $conn->numRows($result);

  12. #12
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Et pour en venir, a mon problème initial.

    A quoi ressemblerai ma méthode result() ?

  13. #13
    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
    Citation Envoyé par thebarbarius Voir le message
    Et pour en venir, a mon problème initial.

    A quoi ressemblerai ma méthode result() ?

    Il n'y a pas de méthode result, result c'est le retour de la méthode exec

  14. #14
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    je te conseille de potasser un peu et d'aller sur php.net notamment pour voir les valeurs de retours des fonctions et voir comment elles s'utilisent correctement.

    Pour ton problème, si tu n'arrives pas à lire dans un jeu de résultat, il faut utiliser (par exemple) odbc_fetch_array

    array odbc_fetch_array ( resource $result [, int $rownumber ] )
    Exemple (en non POO) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $requete = 'SELECT * FROM table';
    $resultat = odbc_exec($requete);
     
    echo '<pre>';
     
    while($ligne = odbc_fetch_array($res)) 
        print_r($ligne);
     
    echo '</pre>';

  15. #15
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    La fonction odbc_result(); marche très bien chez moi.

    Mais je n'arrive pas à la rajouter à ma classe.

    class odbc... {

    public function result()
    ?? ??
    }

  16. #16
    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
    Citation Envoyé par thebarbarius Voir le message
    La fonction odbc_result(); marche très bien chez moi.

    Mais je n'arrive pas à la rajouter à ma classe.

    class odbc... {

    public function result()
    ?? ??
    }
    c'est parce que tu comprends pas que c'est pas une fonction pour faire ça,
    est ce que t'as vu un odbc_result() ? non le result c'est la valeur de retour c'est que je t'ai montrer plus haut

  17. #17
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Non mais je pense que vous ne comprenez pas ce que je veux faire.

    Je vais simplement vous dire ou je bloque.


    Par exemple pour ma méthode exécuter que voici :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    public function executer($sql) {
     
            $execution = true;
     
            if(empty($this->msgerreur))
     
            {
     
                $this->ressreq = odbc_exec($this->cnx, $sql);
     
                /* On vérifie si c'est une requête de sélection et on récupère le nombre de lignes retournées */
     
                if(preg_match("#^SELECT\s.*#i", $sql))
     
                {
     
                    $this->nblignes = odbc_num_rows($this->ressreq);
     
                }
     
                if($this->ressreq == false)
     
                {
     
                    $this->msgerreur = "Exécution de la requête ". $sql ." impossible, erreur numéro ". odbc_error($this->cnx) ." : ". odbc_errormsg($this->cnx);
     
                    $execution = false;
     
                }
     
            }
     
            return $execution;
     
        }
    Là il n'y a pas de problème, on appel la fonction de la sorte :
    Mais pour méthode result que je veux veux faire il y a deux paramètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $conn = new odbc;
    $conn->connect($dsn);
    $conn->executer($sql);
    odbc_result($conn, 'macolonnsql')
    Mon problème c'est le paramètre $conn que j'arrive pas à créer.

  18. #18
    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
    c'est pas odbc_result mais $conn->result

    sauf ce que je t'explique depuis le début c'est que c'est pas la ressource de connexion mais la ressource de résultat qui faut mettre, c'est pour ça que tu dois faire un autre classe pour le statement, ou mettre un propriété a ta classe que tu vas remplir mais c'est ridicule puisque que tu pourras pas avoir qu'un seul résultat

  19. #19
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    ou mettre un propriété a ta classe que tu vas remplir mais c'est ridicule puisque que tu pourrpas avoir qu'un seul resultat
    Exemple ?

  20. #20
    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
    Citation Envoyé par thebarbarius Voir le message
    Exemple ?

    c'est ce que t'as deja

Discussions similaires

  1. [Débutant] Appel d'une methode dans une methode
    Par yannoch123 dans le forum C#
    Réponses: 1
    Dernier message: 15/01/2014, 12h16
  2. Réponses: 7
    Dernier message: 17/01/2009, 13h10
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Appliquer une methode a une variable d une classe ?
    Par Slumpy dans le forum VB.NET
    Réponses: 18
    Dernier message: 07/06/2007, 17h17
  5. Réponses: 11
    Dernier message: 05/10/2006, 13h20

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