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

Zend_Db PHP Discussion :

Problème de conversion d'une fonction récursive sous zend [Fait]


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    164
    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 : 164
    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 : 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
    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

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 505
    Par défaut
    D'après la doc de zend

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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();

  3. #3
    Membre confirmé

    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    164
    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 : 164
    Par défaut
    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 ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 505
    Par défaut
    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

  5. #5
    Membre confirmé

    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    164
    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 : 164
    Par défaut
    Merci,

    ça à l'air d'être bon, je vais creuser dans ce sens

  6. #6
    Membre confirmé

    Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    164
    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 : 164
    Par défaut
    Super merci,

    ça marche bien.

    Il faut maintenant que je rêgle un problème de
    quand ma requête retourne rien

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/07/2012, 09h47
  2. Réponses: 7
    Dernier message: 15/07/2011, 15h22
  3. Réponses: 7
    Dernier message: 12/01/2011, 03h58
  4. Problème avec une fonction MERGE sous oracle
    Par coulpie_myri dans le forum Oracle
    Réponses: 2
    Dernier message: 28/05/2010, 20h46
  5. Réponses: 1
    Dernier message: 13/12/2006, 14h18

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