Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 24/07/2011, 14h53   #1
Candidat au titre de Membre du Club
 
Étudiant
Inscription : décembre 2008
Messages : 42
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2008
Messages : 42
Points : 13
Points : 13
Par défaut utiliser le resultat d'une requete dans un WHERE

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

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
 
//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
kakashi05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 00h21   #2
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
C'est parceque tu sors du 2e while et du for avant de lancer la 2e requête.

Du coup tu t'embêtes à boucler pour créer X requêtes mais tu n'éxécutes que la dernière une fois toutes tes boucles terminées.

Tu dois mettre :
Code :
1
2
3
//Execution de la requete
$res=$bdd->query($sql);
$nbr=$bdd->num_rows($res);
Dans ta boucle for.
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h49.


 
 
 
 
Partenaires

Hébergement Web