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

PHP & Base de données Discussion :

requete sql dans une bouble for [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Par défaut requete sql dans une bouble for
    bonjour, je veux exécuter une requête dans une boucle for mais cela ne fonctionne pas. voici ma code php , si j'essaie de d’afficher les resultat de ma requete je voici que ma variable axe est attribuer a la dernière valeur du boucle

    Code php : 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
     $axe=$_POST['axe'];
    for($i=0;$i<$nbre_axe;$i++)
    {
    	//   echo $axe[$i];
    	$sql="SELECT  distinct 
    	sextra.num_ordre,s.nom AS Nom, f.facnumber, sextra.s_gps,sextra.s_gps1,sextra.photo_facade,sextra.c_ag,f.total_ttc,(select max(date_delivery) from llx_livraison where fk_soc = s.rowid) as date_dist,(select 'oui' from echeances where ref = f.facnumber )
    	FROM llx_societe AS s JOIN llx_societe_extrafields AS sextra ON s.rowid = sextra.fk_object JOIN llx_facture AS f ON s.rowid = f.fk_soc JOIN llx_c_typent AS c ON s.fk_typent = c.id 
    	where (s.rowid<>3025 and s.rowid<>3026 and f.paye=0 and f.rowid not in (select rowid from llx_facture as f where f.en_cours = 2) 
    	and s.rowid not in (select fk_soc from llx_actioncomm where fk_action = 53 or fk_action = 54) 
    	and f.facnumber not in (select num_ordre from echeances) and s.fk_departement = 662
    	and sextra.s_gps is not null and sextra.s_gps <> 1 and sextra.s_gps <> '' and sextra.axe='$axe[$i]' )
    	or (f.facnumber in (select num_ordre from echeances where paye = 0 and date_echeance <= NOW()))
    	 order by `num_ordre` Asc and sextra.axe='$axe[$i]'";
    	 }
    //and (sextra.nb_relance <5 or sextra.nb_relance is null)
    	$res=mysql_query($sql);

    merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    - $nbre_axe n'est pas défini
    - ta requête est en dehors de la boucle
    - si tu veux parcourir le contenu de $_POST['axe'] il faut utiliser foreach au lieu d'un boucle for
    - si tu veux recupérer tous les éléments correspondant au contenu de $_POST['axe'] il faut faire une seule requête et pas une requête par élément.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Par défaut
    merci de votre aide ,
    bon j'ai bien definie $nbre_axe je l ai pas metionner dans le code que j ai poster .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $nbre_axe=count($_POST['axe']);
    et j'ai pas compris cette partie
    si tu veux recupérer tous les éléments correspondant au contenu de $_POST['axe'] il faut faire une seule requête et pas une requête par élément.
    je pense que j'utilise q'une seule requete!

    merci de d'avance de me donner un exemple

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Avec "IN" :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM tatable WHERE tacolonne IN (1, 5, 7)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 391
    Par défaut
    j'ai essaie de faire avec IN mais j ai probleme au niveau de la boucle par exemple


    Code php : 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
    $nbre_axe=count($_POST['axe']);
    $axe=$_POST['axe'];
    for($i=0;$i<$nbre_axe;$i++)
    {
        // ici tous valeur sont afficher 
             echo $axe[$i];
     
     // mais  dans  la  requete la derniere valeur est afficher 
    	$sql="SELECT  distinct 
    	sextra.num_ordre,s.nom AS Nom, f.facnumber, sextra.s_gps,sextra.s_gps1,sextra.photo_facade,sextra.c_ag,f.total_ttc,(select max(date_delivery) from llx_livraison where fk_soc = s.rowid) as date_dist,(select 'oui' from echeances where ref = f.facnumber )
    	FROM llx_societe AS s JOIN llx_societe_extrafields AS sextra ON s.rowid = sextra.fk_object JOIN llx_facture AS f ON s.rowid = f.fk_soc JOIN llx_c_typent AS c ON s.fk_typent = c.id 
    	where (s.rowid<>3025 and s.rowid<>3026 and f.paye=0 and f.rowid not in (select rowid from llx_facture as f where f.en_cours = 2) 
    	and s.rowid not in (select fk_soc from llx_actioncomm where fk_action = 53 or fk_action = 54) 
    	and f.facnumber not in (select num_ordre from echeances) and s.fk_departement = 662
    	and sextra.s_gps is not null and sextra.s_gps <> 1 and sextra.s_gps <> '' and sextra.axe IN ('$axe[$i]') )
    	or (f.facnumber in (select num_ordre from echeances where paye = 0 and date_echeance <= NOW())  and sextra.axe IN ('$axe[$i]') )
    	 order by `num_ordre` Asc ";
    }

    ici avec le echo $axe tous les valeur sont afficher par contre dans la requete non et je pense que je suis bien dans la boucle merci d'avance

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    1- Je t'ai déjà indiqué d'utiliser une boucle foreach et non une boucle for.

    2 - Ajoute un
    tu vas comprendre ce que tu fais mal.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Envoi d'une valeur d'une requete sql dans une variable ?
    Par olivierc25 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/04/2007, 13h11
  2. [MySQL] Requetes SQL dans une boucle PHP
    Par Siteac dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2006, 14h35
  3. Réponses: 3
    Dernier message: 17/06/2006, 23h15
  4. Importer valeur requete SQL dans une Requete
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/03/2006, 14h24
  5. Recuperer un enregistrement de requete SQL dans une variable
    Par kleenex dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 14/09/2005, 15h59

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