Probleme avec une boucle [Fermé]

Signaler
Messages postés
186
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 août 2011
-
kakashi05
Messages postés
186
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 août 2011
-
Bonjour,
je débute en php et j'ai un petit problème
j'ai deux requetes la première va me permettre de récupérer le nom de ma demande que d'appel ici $ldemande
la seconde requête utilisera le résultat de la premiere (nom de la demande) dans un WHERE.
Mon problème est le suivant quant je parcoure la boucle il me récupéré juste le première élément. En gros le traitement ne se
fait pas sur les autres donnée.
J'ai tenté plusieurs choses comme l'utilisation d'une boucle while avec compteur le nombre de ligne renvoyé par la 1er requête
mais le résultat reste le même.
Le problème doit venir de ma boucle

Je vous montre mon code

//Utilisation d'un premiere requete qui nous donnera la demande client 
while (isset($ss_sys_id[$i]) )  { 

    //Premiere requete qui va afficher le nom de la demande 
    $sql0 = "SELECT demande_ou_projet.IdClientDemande 
            AS Demande 
            FROM ((sous_systeme 
            INNER JOIN (forfait_budget 
            INNER JOIN demande_ou_projet 
            ON forfait_budget.ID_FORFAIT_BUDGET = demande_ou_projet.REF_FORFAIT_BUDGET) 
            ON sous_systeme.IdSousSyst = forfait_budget.REF_SOUS_SYSTEME) 
            INNER JOIN demande_se_trouve_dans_etat 
            ON demande_ou_projet.IdDemande = demande_se_trouve_dans_etat.IdDemande) 
            INNER JOIN ordre_de_travail 
            ON (forfait_budget.ID_FORFAIT_BUDGET = ordre_de_travail.ID_FORFAIT_BUDGET) 
            AND (demande_ou_projet.IdDemande = ordre_de_travail.IdDemande) 
            WHERE (((forfait_budget.ID_FORFAIT_BUDGET )='$ss_sys_id[$i]') 
            AND ((ordre_de_travail.charge_consommee_totale)<>0) 
            AND ((demande_se_trouve_dans_etat.Date_entree) 
            Between '".date_en($ledebut)."' And '".date_en($lafin)."' 
            AND ((sous_systeme.IdAppli)='DEV') 
            AND ((demande_se_trouve_dans_etat.Code_etat)='TER' $where_type))) 
            "; 

    $res0=$bdd->query($sql0); 
    echo $nbr0=$bdd->num_rows($res0); 


while ($row0=$bdd->fetch_array($res0)) { 
    $ldemande=($row0['Demande']); 
   


    //variable j 
    $j=0; 
    for ($j;$nbr0>$j;$j++){ 
    //requete 
    $sql = "SELECT demande_ou_projet.IdClientDemande 
            AS DemandeClient, forfait_budget.CODE_FORFAIT_BUDGET 
            AS Projet, demande_ou_projet.Type_demande 
            AS Cor_Evo, 
            SUM(ordre_de_travail.charge_consommee_totale) 
            AS Charge, DATE_FORMAT(demande_se_trouve_dans_etat.Date_entree, '%Y/%m/%d') 
            AS Date_cloture, 
            LEFT(demande_ou_projet.Libelle, 60) 
            AS Libelle, ressource_tma.Equipe 
            AS Site, demande_ou_projet.Reponse_technique 
            AS Obervation, SUBSTRING_INDEX(SUBSTRING_INDEX(demande_ou_projet.Libelle,'|', -2),'|', 1) 
            AS Pays, SUBSTRING_INDEX( SUBSTRING_INDEX( demande_ou_projet.Libelle , 'CALL', -1 ) , '|', 1 ) 
            AS NumCall, charge_vendue 
            AS ChargeVendu 
            FROM (sous_systeme 
            INNER JOIN (forfait_budget 
            INNER JOIN (demande_ou_projet 
            INNER JOIN ordre_de_travail 
            ON demande_ou_projet.IdDemande = ordre_de_travail.IdDemande) 
            ON (ordre_de_travail.ID_FORFAIT_BUDGET = forfait_budget.ID_FORFAIT_BUDGET) 
            AND (forfait_budget.ID_FORFAIT_BUDGET = demande_ou_projet.REF_FORFAIT_BUDGET)) 
            ON sous_systeme.IdSousSyst = forfait_budget.REF_SOUS_SYSTEME) 
            INNER JOIN demande_se_trouve_dans_etat 
            ON demande_ou_projet.IdDemande = demande_se_trouve_dans_etat.IdDemande 
            INNER JOIN ressource_tma 
            ON ordre_de_travail.Ressource = ressource_tma.IdRessource 
            WHERE ((ordre_de_travail.charge_consommee_totale)<>0 
            AND forfait_budget.ID_FORFAIT_BUDGET='$ss_sys_id[$i]' 
            AND demande_ou_projet.IdClientDemande='".$ldemande."' 
            AND demande_se_trouve_dans_etat.Date_entree 
            Between '".date_en($ledebut)."' And '".date_en($lafin)."' 
            AND sous_systeme.IdAppli='DEV' 
            AND demande_se_trouve_dans_etat.Code_etat='TER' $where_type) 
            "; 
        } 
    } 
  
//Execution de la requete 
$res=$bdd->query($sql); 
$nbr=$bdd->num_rows($res); 

}


je reste à votre disposition pour plus d'info ou question merci d'avance

4 réponses

Messages postés
5266
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
23 janvier 2013
609
Dans ton premier while il manque la parenthèse de fermeture.
Messages postés
186
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 août 2011
32
Merci pour ta reponse. C'etais une erreur de copier coller la parenthese est bien présente dans le code mais je vais la rajouter sur le forum
Messages postés
5266
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
23 janvier 2013
609
Je ne comprends pas bien ce que tu veux faire avec cette ligne...
while (isset($ss_sys_id[$i]) )

Tant que la variable est vraie...
(isset($ss_sys_id[$i])
Messages postés
186
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 août 2011
32
En faite quant je fais un drag and drop dans ma page principe il récupere l'id des élements seletionné je l'utilise pour faire des filtres dans mes requetes