begin process at 2012 05 28 22:20:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Help, fonction pour transmettre une variable créer a l'issu d'une boucle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Help, fonction pour transmettre une variable créer a l'issu d'une boucle

mercredi 19 mars 2008 à 15:05:15 | Help, fonction pour transmettre une variable créer a l'issu d'une boucle

romega

Salut a vous,
Alors je continu dans la création de mon forum, voila un nouveau probleme pour moi. D'abord le code ce sera plus simple :

function selectcat($id2,$st=array(),$rs="")
{
    $qnm=mysql_query("SELECT id, id_parent FROM arbo WHERE id_parent='$id2'");
    while($res3=mysql_fetch_array($qnm))
        {
            array_push($st,''.$res3['id'].'');
            selectcat($res3['id']);
        }
            $i=0;
            while ($i<sizeof($st))
        {
            $rs.= " OR cate=$st[$i] ";
            $i++;
        }
    echo $rs;
    return $rs;
}

Supposons que j'ai 3 catégories le echo va me marquer "OR cate=1 OR cate=2 OR cate=3" il le fait trés bien. Le probleme est que le echo est la juste pour controlé que la boucle fonctionne bien. Le but est de récupéré cette valeur $rs dans le reste du script et la quand je fait "echo selectcat(...);" il me marque seuleument "OR cate=3" et zap les premier passage de la boucle pourquoi et comment résoudre ce problème
Merci a vous
PS:j'espere que j'ai bien indenter mon code...

mercredi 19 mars 2008 à 16:49:48 | Re : Help, fonction pour transmettre une variable créer a l'issu d'une boucle

amezghal

Réponse acceptée !
salut,
ba dans ta premiere boucle while {} tu fais appelle a la meme fonction (récursivité)
normal que tu recuperes que les derniers valeurs...
solutions => tes variables $st ,$rs doivent etre declarées en dehors de la fonction..


Au début, on essaye de trouver une solution qui marche, et puis on veut la meilleure.
mercredi 19 mars 2008 à 17:25:28 | Re : Help, fonction pour transmettre une variable créer a l'issu d'une boucle

romega

J'ai essayé de les déclarer en dehors de la fonction, mais elle ne sont pas reconnues dans la fonction après. J'ai essayé avec global mais du coup la variable est remise a sa valeur initial. Si tu pouvais m'indiquer aussi le code ou comment déclaré a l'exterieur de la variable pour ensuite récupé le résultat de ma boucle, désolé je suis un peu perdu avec cette fonction.
Merci
mercredi 19 mars 2008 à 19:50:01 | Re : Help, fonction pour transmettre une variable créer a l'issu d'une boucle

amezghal


salut,
declare tes var en dehors de la fonction, ta fonction n'aura comme param que $id2
donc function selectcat($id2){....}

Au début, on essaye de trouver une solution qui marche, et puis on veut la meilleure.
mercredi 19 mars 2008 à 20:12:46 | Re : Help, fonction pour transmettre une variable créer a l'issu d'une boucle

malalam

Administrateur CodeS-SourceS
Hello,

non.
La solution serait de déclarer tes variables en statique. Exemple à la con :
<?php
function recurse($sChaine) {
    static $aRes = array();
    $iLength = strlen($sChaine);
    if(!empty($iLength)) {
        $aRes[] = substr($sChaine, 0, 1);
        recurse(substr($sChaine, 1));
    }
    return $aRes;
}
print_r(recurse('hello'));
?>

Et parce que ce soir je suis d'humeur sympa ;-) :
<?php
function selectcat($id2) {
    static $rs = '';
    static $st = array();
    $qnm=mysql_query("SELECT id, id_parent FROM arbo WHERE id_parent='$id2'");
    while($res3=mysql_fetch_array($qnm))
        {
            array_push($st,''.$res3['id'].'');
            selectcat($res3['id']);
        }
            $i=0;
            while ($i<sizeof($st))
        {
            $rs.= " OR cate=$st[$i] ";
            $i++;
        }
    echo $rs;
    return $rs;
}
?>
mercredi 19 mars 2008 à 20:13:22 | Re : Help, fonction pour transmettre une variable créer a l'issu d'une boucle

romega

Ca marche pas
mercredi 19 mars 2008 à 20:18:41 | Re : Help, fonction pour transmettre une variable créer a l'issu d'une boucle

malalam

Administrateur CodeS-SourceS
Quand même...
si tu utilises mysql_fetch_array(), et que tu ne te sers que des index associatifs, utilise la constante MYSQL_FETCH_ASSOC avec.
Ne mets pas non plus ton sizeof() dans le while(). Initialise une variable avant la boucle, qui a pour valeur ton sizeof(), et sers-toi de cette variable dans la boucle.

mercredi 19 mars 2008 à 20:20:05 | Re : Help, fonction pour transmettre une variable créer a l'issu d'une boucle

malalam

Administrateur CodeS-SourceS
Qu'est-ce qui ne marche pas ?
mercredi 19 mars 2008 à 21:03:52 | Re : Help, fonction pour transmettre une variable créer a l'issu d'une boucle

romega

En fait ca marche pas totalement avec static, car je me sers deux fois de la fonction et a la deuxieme utilisation il me ressort les résultat de la premiere utilisation plus ceux de la deuxieme. Il faudrait remettre a zero les variables statique pour la deuxieme utilisation ?
Merci pour votre aide
jeudi 20 mars 2008 à 08:22:10 | Re : Help, fonction pour transmettre une variable créer a l'issu d'une boucle

malalam

Administrateur CodeS-SourceS
Bah dans ce cas :

function selectcat($id2,$st=array(),$rs="")
{
    $qnm=mysql_query("SELECT id, id_parent FROM arbo WHERE id_parent='$id2'");
    while($res3=mysql_fetch_array($qnm))
        {
            array_push($st,''.$res3['id'].'');
            selectcat($res3['id'], $st, $rs);
        }
            $i=0;
            while ($i<sizeof($st))
        {
            $rs.= " OR cate=$st[$i] ";
            $i++;
        }
    echo $rs;
    return $rs;
}

Néanmoins tu sais que ton code est à priori foireux ? Je ne pense pas que ton mysql_fetch_array() reprenne le fil après la sortie d'un nouvel appel récursif à ta fonction. C'est à vérifier, mais je pense que ta ressource est écrasée par la suivante (au sein de la mémoire de php).

1 2

Cette discussion est classée dans : boucle, rs, id, echo, cate


Répondre à ce message

Sujets en rapport avec ce message

Concaténation de nom de variables ! [ par fil ] Concaténation de nom de variables !bonjour j'ai un petit problème je voudrais creer des noms de variable dynamiquement dans une boucle :J'ai des varia debutant probleme de session! [ par jimmy69 ] bonjour a tous,voila je debute en php et je suis en train de realiser un espace menbresou ceux ci peuvent poster des news un truc tout simple!j'ai don TRansfert fichier FTP [ par floceam ] J'ai un soucis ! Help !Voila, je fait un site, et je veux pouvoir telecharger les fichiers sur mon serveur par simple envoir de formulaire!Or, il se p espace membre en PHP [ par silendus ] je vais essayé d'être clair :)Donc je suis en train de faire un site en PHP avec gestion de membres.le problème que je rencontre est le suivant: je n' problème de session [ par guendouf ] Bonjour,je poste 2 scripts, j'aimerai qu'on m'aide et qu'on m'explique pourquoi j'arrive pas à me connecter:1)session.php// On inclut le fichier de co Souci dans mon tableau [ par slhuilli ] Bonjour,je cherche la faille dans ce bout de code depuis p$ls jours sans trouver. Qu'elqu'un pourra peut être maider et m'expliquer . En fait, je n MySQL id? [ par Linuss ] Bonjour à tous, Voilà, lorsque j'essaie de faire un lien qui contient l'id (qui existe au ca sou quelqu'un poserait la question :) d'un tuto, je n'y a get(id) from MySQL ? [ par Linuss ] Bonjour à tous, Lorsque j'essai d'afficher un tuto (bah oui dans ce cas là c'est un tutoriel :) la page n'afficher rien du tout. En fait pour afficher lien sur un bouton [ par troupe_a_jule ] julesalut c'est encore qui vient t'embéterj'ai encore un petit problème si tu pourrait m'aider ce serait trop sympaen faite je veut mettre un lien sur Petit problème surmontable insurmonté [ par dcbastien ] Voici ce que j'ai mis au point qui est quelque chose de très simple:if( isset( $_GET['action'] ) ){ $action = $_GET['action'];}else $action = "";switc


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,777 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales