Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Db
Zend_Db Forum d'entraide pour le composant Zend_Db du Zend Framework (création de requêtes, abstraction, ORM etc.). Avant de poster -> FAQ Zend_Db.
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 21/05/2007, 11h19   #1
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 143
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2006
Messages : 143
Points : 31
Points : 31
Par défaut Problème de conversion d'une fonction récursive sous zend

Bonjour,

Je dois développer une application en zend et j'ai un petit soucis.
Je dois générer une arborescence à partir d'une table qui contient une clé secondaire qui est la clé primaire (autojointure possible).
J'ai un petit script qui fonctionne bien en "php classique" (pas sous zend) et je veux traduire ce script en une fonction que je peux utiliser sous zend framework.
Mon problème est que dans mon script, je fais un mysql_fetch_array() et je teste si j'ai un résultat ou non. Sous zend, je m'en sort pas car je ne trouve pas d'équivalent.
Voici un petit bout de code (seulement la fonction récursive) qui j'espère sera assez clair :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
function genCode($ccat,$pcat,$site){
 
	static $chaineCat = "";
	static $chainePar = "";
	static $niveau = -1;
 
	if($pcat == ""){
		echo "fini";
		return;
	}
 
	// Sélection des données dans la base
	$sql = "select * from t_rubrique where t_rubrique_parent = $ccat and pk_t_rubrique > $pcat and pk_t_site = $site order by pk_t_rubrique";
	$enreg = mysql_query($sql);
	$result = mysql_fetch_array($enreg);
 
	// On verifie si la requete retourne quelque chose
	if($result == ""){
		$ccat = rec($chainePar);
		$pcat = rec($chaineCat);
 
		// Suppression du dernier parent ou de la derniere categorie dans l'arborescence
		$chaineCat = substr($chaineCat,0,(strlen($chaineCat))-(strlen($pcat)+1));
		$chainePar = substr($chainePar,0,(strlen($chainePar))-(strlen($ccat)+1));
		genCode($ccat,$pcat,$site);
	}
	else{
		$pniv = $niveau;
 
		// Recuperation des variables en cours
		$ccat = $result['pk_t_rubrique'];
		$pcat = $result['t_rubrique_parent'];
		$libelle = $result['t_rubrique_lib'];
		$niveau = $result['t_rubrique_niveau'];
 
		for($k=0; $k<=$niveau;$k++){
			$puce .= "-------";
		}
 
 
echo "$puce $libelle / $ccat - $pcat<br>";
 
		// Formation des chaines de caracteres de stockage des arborescences
		$chaineCat .= "*".$ccat;
		$chainePar .= "*".$pcat;
 
		genCode($ccat,$pcat,$site);
	}
}										// Fin genXML
lecra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 11h33   #2
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 182
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 182
Points : 6 469
Points : 6 469
D'après la doc de zend

Code :
1
2
3
4
5
6
7
8
9
10
 
 
// crée un objet $db, et interroge la base de données.
// cette fois, utilisez un marqueur de remplacement.
$result = $db->query(
    'Sselect * from t_rubrique where t_rubrique_parent = $ccat and pk_t_rubrique > $pcat and pk_t_site = $site order by pk_t_rubrique')
);
 
// utiliser le PDOStatement $result pour récupérer toutes les lignes de résultat dans un tableau
$rows = $result->fetchAll();
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 11h45   #3
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 143
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2006
Messages : 143
Points : 31
Points : 31
Merci,

J'ai utilisé cette syntaxe mais suis-je obligé d'utiliser un foreach pour récupérer les données extraites dans le $rows ?
lecra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 11h54   #4
Rédacteur/Modérateur
 
Avatar de MaitrePylos
 
Homme Gérard Ernaelsten
DBA & Dev PHP
Inscription : juin 2005
Messages : 3 182
Détails du profil
Informations personnelles :
Nom : Homme Gérard Ernaelsten
Âge : 39
Localisation : Belgique

Informations professionnelles :
Activité : DBA & Dev PHP
Secteur : Service public

Informations forums :
Inscription : juin 2005
Messages : 3 182
Points : 6 469
Points : 6 469
Oui, puisque tu récupères un tableau de lignes.

Maintenant si tu es sur que tu ne contient qu'une seule ligne, ceci devrais fonctionner
MaitrePylos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2007, 12h02   #5
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 143
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2006
Messages : 143
Points : 31
Points : 31
Merci,

ça à l'air d'être bon, je vais creuser dans ce sens
lecra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2007, 10h40   #6
Nouveau Membre du Club
 
Développeur informatique
Inscription : septembre 2006
Messages : 143
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2006
Messages : 143
Points : 31
Points : 31
Super merci,

ça marche bien.

Il faut maintenant que je rêgle un problème de
quand ma requête retourne rien
lecra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 17h18   #7
Candidat au titre de Membre du Club
 
Homme
Inscription : octobre 2006
Messages : 11
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 11
Points : 11
Points : 11
Code :
1
2
3
4
5
6
7
8
// crée un objet $db, et interroge la base de données.
// cette fois, utilisez un marqueur de remplacement.
$result = $db->query(
    'Sselect * from t_rubrique where t_rubrique_parent = $ccat and pk_t_rubrique > $pcat and pk_t_site = $site order by pk_t_rubrique')
);
 
// utiliser le PDOStatement $result pour récupérer toutes les lignes de résultat dans un tableau
$rows = $result->fetchAll();
pour connaitre le nombre d'enregistrements retournés par ta requete, tu peux faire un simple count($rows)

byc_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web