classe et connexion obdc

JS
Invité n'ayant pas de compte PHPfrance

02 mai 2006, 15:42

Re tout le monde!!

Dans ma classe je souhaite récupérer les procédures stockées
Voila comment je procede :
Ma methode:
	function Procedure_stockee()
	{
		$procedures = array();
		$proc = odbc_procedures ($this->connex);

		while ( $row = odbc_fetch_array($proc))
		 {
			echo "Proc : $row <br />";
			array_push($procedures,$row);
		 }
		
		return $procedures;
	}
Comment j'affiche :
$i = 0; 
$procedures = array();
$nb = count($procedures = $db->Procedure_stockee());
echo "nb: $nb";

while( $i <= $nb)
{
	echo "Procedure:$i:".$procedures[$i]."<br>";
	$i++;
}
Mais voila ce que j'ai :
Procedure:1:Array
Procedure:2:Array
Procedure:3:Array
Procedure:4:Array
Procedure:5:Array
Et sa jusqu'a plus de 1000

Je ne voit pas ou est le probleme car je n'est pas l'habite d'utiliser odbc(et j'y suis obliger :( ).

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 mai 2006, 16:29

debuggage, debuggage, debuggage.... :)

S'il t'écrit "Array" en toute lettre, c'est que tu lui demande d'afficher un tableau et comme il ne sait pas faire ça tout seul, il écrit juste "Array".

La question est pourquoi affiche-t-il un tableau ?
> sans doute parce que la variable $procedures[$i] que tu affiches est un tableau.

Comment a été initialisé la variable $procedures pour devenir un tableau de tableau ?
> elle contient le résultat de la fonction $db->Procedure_stockee()

Que retourne la fonction $db->Procedure_stockee() ?
> Elle retourne le tableau $procedures

Que contient ce nouveau tableau $procedures ?
> Il contient les différentes valeurs de $row

Que contient la variable $row ?
> le résultat de la fonction odbc_fetch_array()

Et que retourne la fonction odbc_fetch_array() d'après la doc ?
> odbc_fetch_array -- Lit une ligne de résultat dans un tableau associatif
Description
array odbc_fetch_array ( resource result [, int rownumber] )

Cette fonction retourne donc un tableau. CQFD :)

JS
Invité n'ayant pas de compte PHPfrance

02 mai 2006, 16:50

Oki!
Merci!

Mais vu que je parcours mon tableau($procedures[]) il devrai pas m'afficher son contenues?
A moin qu'il s'agisse d'un tableau a 2 dimensions :shock: )

Je vais tester en fesant un print_r($procedures)!

JS
Invité n'ayant pas de compte PHPfrance

02 mai 2006, 16:57

Arf il s'agit bien d'un tableau mais pas qu'a 2 dimensions :shock:
Vous n'avez pas une idée de comment faire pour afficher les procédures?
(quelqu'un qui serait passer par la aussi)

Mammouth du PHP | 19672 Messages

02 mai 2006, 17:04

Si tu as réussi avec un print_r, tu as forcément vu également le nom des index de la seconde dimension : donc, fais afficher :
echo($tableau['1eredimension']['2emedimension']);
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

JS
Invité n'ayant pas de compte PHPfrance

03 mai 2006, 11:48

Oki!
Mais ya pas un moyen de recupérer '1eredimension' et '2edimension' ect... dynamiquement?Parce que je les connais pas et le tableau à l'aire d'etre enorme pour que je le recupere à la main!
Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mai 2006, 12:04

Maintenant que tu as vu la structure de ton tableau, tu dois pouvoir en déduire une règle te permettant de récupérer les éléments un par un :)

En général, il te suffit d'utiliser l'index numérique au lieu du nom associé :
$monTableau[0] te retourne le premier élément
$monTableau[1] te retourne le deuxième
...
$monTableau[n] te retourne le dernier élément
les fonctions count() et sizeOf() te permettent de connaitre le nombre d'éléments d'un tableau. Tu peux ainsi faire une boucle while ou for pour les parcourir un par un.

Une autre solution plus simple est d'utiliser directement la commande foreach() qui s'arrête automatiquement à la fin du tableau et ne se soucis pas des index.

JS
Invité n'ayant pas de compte PHPfrance

16 mai 2006, 11:24

Up!
Salout tous le monde!
Merci!Le foreach été une tres bonne idée!

Mais en faite je voudrait maintenant recuper les noms des tables de la base et je me retrouve avec les tables systemes! :shock:

Apparement dans sql server il y a des tables systems et des tables utilisateurs
Moi c'est au tables utilisateurs que je voudrait avoir acces.
Apparement il y aurait un parametre (je ne sait même pas sur laquelle des fonctions) qui me permettrait de choisir mais je ne trouve pas!

Can somebody help me?

Invité
Invité n'ayant pas de compte PHPfrance

28 sept. 2006, 11:07

Arf dsl normalement c'est comme ça :
function connect() 
{ 
       $idConnexion=odbc_connect('dns',$_SESSION['login'],$_SESSION['mdp']); 
       return $idConnexion; 
} 
Mais de toute façon la fonction marche mais c'est lorsque je la mais dans une classe que ça ne marche plus! :cry:

Merci de votre aide!