Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & ODBC
PHP & ODBC Forum d'entraide sur ODBC avec PHP. Avant de poster -> FAQ ODBC
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/12/2010, 12h55   #1
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Par défaut Une methode pour une class

Bonjour,

Voici ma classe odbc :
Code :
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 :
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
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 14h51   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
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...
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 16h59   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
c'est comme pour PDO, il y a la classe PDO et la classe PDOStatement
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 17h30   #4
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Et bien dans ma classe je voudrai une fonction qui permet d’exécuter un odbc_result.

Que j’appellerai comme ça.

Code :
1
2
3
 
$mafonc = new odbc;
$mafonction->result('db_collone_name.');
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 17h32   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
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 :
1
2
3
 
$mafonc = new odbc;
$mafonction->result('db_collone_name.');
et ta requête tu la fais quand ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 17h36   #6
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Je recommence.

Code :
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 :
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;
 
        }
 
    }
}
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 17h46   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
Citation:
Envoyé par thebarbarius Voir le message
Je recommence.

Code :
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 :
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 :
$conn = odbc_connect('x', 'xx', 'xxx')
pourquoi odbc_connect ??? c'est pas $conn->connect ???


Code :
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 17h52   #8
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Oui je commence a fatiguer désolé.

Donc je refait.

J'aimerai que ça ressemble a ça.

Code :
1
2
3
4
5
6
7
 
$conn = new odbc();
$sql = "SELECT........FROM.....WHERE";
 
while ($row = $conn->numRows($sql)) {
 echo result('tab1_column1');
}
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 17h58   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
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 :
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 :
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'];
}
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 18h15   #10
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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 ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 18h18   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
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 :
1
2
3
4
5
$conn = new ODBC();
$sql = "SELECT........FROM.....WHERE";
$result = $conn->exec($sql);
 
$numrow = $conn->numRows($result);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 18h25   #12
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Et pour en venir, a mon problème initial.

A quoi ressemblerai ma méthode result() ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 18h27   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 19h49   #14
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
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

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

Code php :
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>';
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 00h21   #15
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
La fonction odbc_result(); marche très bien chez moi.

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

class odbc... {

public function result()
?? ??
}
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 00h23   #16
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 00h41   #17
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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 :
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 :
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.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 00h48   #18
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 00h51   #19
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Citation:
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 ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2010, 00h54   #20
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 464
Points : 8 464
Citation:
Envoyé par thebarbarius Voir le message
Exemple ?

c'est ce que t'as deja
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h48.


 
 
 
 
Partenaires

Hébergement Web