Probleme avec une boucle

Fermé
kakashi05 Messages postés 186 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 août 2011 - Modifié par kakashi05 le 24/07/2011 à 16:17
kakashi05 Messages postés 186 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 août 2011 - 24 juil. 2011 à 17:52
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

Ch93 Messages postés 5222 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 23 janvier 2013 729
24 juil. 2011 à 14:59
Dans ton premier while il manque la parenthèse de fermeture.
0
kakashi05 Messages postés 186 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 août 2011 32
24 juil. 2011 à 16:14
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
0
Ch93 Messages postés 5222 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 23 janvier 2013 729
24 juil. 2011 à 17:15
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])
0
kakashi05 Messages postés 186 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 août 2011 32
24 juil. 2011 à 17:52
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
0