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

Langage PHP Discussion :

Comparaison dans une boucle


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut Comparaison dans une boucle
    Bonjour à tous,

    J'ai une boucle qui liste des produits et je voudrais pouvoir comparer le dernier produit avec l'avant dernier.
    Si ils sont identiques traitement A sinon traitement B.

    Merci d'avance de votre aide.

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour,

    si tu veux juste comparer le dernier et l'avant dernier élément, il n'y a pas d'intérêt à faire ca dans une boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // $liste est un array
    $dernier = count($liste) - 1;
    $avant_dernier = $dernier--;
    if($liste[$dernier] == $liste[$avant_dernier]){
        // traitement A
    }
    else{
        // traitement B
    }
    Si dans une boucle tu veux comparer l'élément courant avec celui qui le précède :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // $liste est un array
    $preceding_item = null;
    foreach($liste as $item){
        if(is_null($preceding_item) || $preceding_item != $item){
            // traitement A
        }
        else{
            // traitement B
        }
        $preceding_item = $item;
    }

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Oui mais ma boucle vient d'une requête qui me liste des données de mes bases.

    Merci d'avance

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Re,

    dans les deux cas la réponse se trouve juste au dessus, que ce soit si tu veux comparer les deux derniers enregistrements ou si tu veux comparer l'enregistrement courant (celui que tu parcours dans ta boucle) avec l'enregistrement précédent (celui que tu viens juste de parcourir dans ta boucle).

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Ok,

    Bon j'ai essayé un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $article = array();			
    while ($donnees_vente_mois = mysql_fetch_array($retour_vente_mois))
     		{ 
    		$article[$donnees_vente_mois['article']] = $donnees_vente_mois['article'];
     
    		foreach($article as $liste)
    			{
    			$dernier = count($liste) - 1;
    			$avant_dernier = $dernier-1;
    			if($liste[$dernier] == $liste[$avant_dernier])
    			{ $couleur = " bgcolor='#999999'";}
    			else { $couleur = ""; }
    			}
                              }
    J'ai juste mis une balise couleur afin de voir ds mon tableau si cela fonctionne ou pas.
    J'ai le message d'erreur suivant :

    Notice: Uninitialized string offset: -1

    Merci encore pour ton aide !

  6. #6
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Re,

    pourquoi mettre le foreach dans le while ?

    Il y a beaucoup de fautes de synthaxe et du traitements inutiles, tu n'as pas trop compris mon exemple.

    Pour finir, en fait ce que tu veux faire c'est colorier une ligne sur 2 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $index = 0;
    while ($donnees_vente_mois = mysql_fetch_array($retour_vente_mois)){ 
    	if($index % 2 == 0){
       		// nombre pair
    		echo '<font style="color:">'.$donnees_vente_mois[0].'</font>';
    	}
    	else{
    		// nombre impair
    		echo $donnees_vente_mois[0];
    	}
    	$index++;
    }

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Non je ne veux pas colorier une ligne sur deux.

    Je vais essayer de reformuler mon problème.

    Je veux avec une seule requête avoir un tableau à double entrée avec :
    - En colonne les mois
    - En ligne les articles

    J'effectue donc la requête ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $retour_vente_mois = mysql_query("	SELECT SUM(quantite) AS somme, article, MONTH(c.date_commande) as mois
    									FROM commande_detail cd
    									JOIN commande c
    									ON cd.num_cmde=c.num
    									JOIN article a
    									ON cd.article=a.id_article 
    									WHERE YEAR(c.date_commande)='$annee_rch'
    									GROUP BY article, MONTH(c.date_commande)
    									ORDER BY article, MONTH(c.date_commande)
    									");?>
    Elle me permet d'avoir en ligne les mois articles et total des ventes, exemple :

    article1;mois1;total_article1_mois1
    article1;mois2;total_article1_mois2
    article1;mois8;total_article1_mois8
    article2;mois2;total_article2_mois2
    article2;mois3;total_article2_mois3

    Je souhaite donc mettre en forme le résultat ci-dessous dans mon tableau à double entré.

    C'est pou cela que je voulais tester le dernier et avantdernier résultat.
    Si c'est le même article je reste sur la même ligne sinon je saute une ligne.

    Pareil pour les mois si mois 1 alors je créé une cellule, mais le problème c'est qu'il peut pour un mois ne pas y avoir de vente et donc pas de ligne généré et donc pas cellule créé et donc cela me créé un décalage.

    J'espère que je suis clair mais ça c'est pas gagné....

    Merci encore de ton aide !

  8. #8
    Membre éprouvé Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Par défaut
    Bonjour,

    Je n'ai absolument rien compris à ton soucis si ce n'est que tu veux tester les derniers et avants derniers membres d'un tableau.

    Tableau que tu veux à deux dimensions n'est ce pas ?


    bref
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $array = array(..... some elements);
    end($array);
    $current = current($array);
    $prev = prev($array);
    $current contient la dernière ligne de ton tableau PHP.
    $prev contient l'avant dernière ligne.

    Mais je pense que tu pourrais tout simplifier en réfléchissant bien à la conception de ton programme... si tu as besoin de ce coté là, n'hésite pas, sinon à moins de nous expliquer plus clairement, je ne pense pas que nous puissions t'aider correctement.

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Merci pour ton aide.

    Oui effectivement je veux faire un tableau à double entrée (état des ventes) avec en ligne les articles et en colonne les mois.

    Avec donc pour chaque aticle le nombre vendu par mois.

    Mes donées sont stockées dans une base de données Mysql, cette table contient le champ article et date de commande.

    Actuellement j'y arrive mais en faisant une boucle liser les articles.
    Dans celle ci je liste les mois.
    Et dans cette dernière je fais le total des ventes par article et par mois.
    Donc le nombre de requête est égal au nbre d'article* nbre de mois.


    Je souhaite donc faire cela en une seule requête, afin de limiter les temps de réponse.

    En ésperante être clair....

    Merci encore pour votre aide.

  10. #10
    Membre éprouvé Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Par défaut
    Au final, tu veux donc, simplement, le nombre d'articles vendus par mois, et ceci en détail, donc par article
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    article 1 , vendu x fois le mois y de l'année z
     
    article 2 , vendu x fois le mois y de l'année z
     
    article 3 , vendu x fois le mois y de l'année z...
    Si c'est bien ça, et que tu peux retoucher à la structure de ta base de données je te conseillerai d'avoir 2 tables:

    Une pour les articles que l'on va nommer articles(original): id_article, nom_article, desc_article... ce que tu veux mais une ID en key

    Une pour les ventes que l'on va nommer ventes(originalité quand tu nous tient): id_vente, id_article, date_vente puis ce que tu veux.

    Après:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT articles.nom_articles, count(ventes.id_vente) FROM articles LEFT JOIN ventes ON articles.id_article = ventes.id_article WHERE (YEAR(ventes.date_vente) = ?) GROUP BY ventes.id_article, MONTH(ventes.date_vente)
    Que l'on me corrige si je me trompe mais ça devrait fonctionner.

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Merci de ton aide.

    J'ai bien une table base_article.
    Pour info j'ai une table entete commande (n° de commande,nom du client et date de commande)
    Et j'ai aussi une table detail commande (n° de commande, article et quantité)

    Avec ma requête que j'ai posté s le maessage precedent j'arrive à avoir le résultat que tu obtiens , je la reposte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $retour_vente_mois = mysql_query("SELECT SUM(quantite) AS somme,article, MONTH(c.date_commande) as mois
    FROM commande_detail cd
    JOIN commande c
    ON cd.num_cmde=c.num
    JOIN article a
    ON cd.article=a.id_article 
    WHERE YEAR(c.date_commande)='$annee_rch'
    GROUP BY article, MONTH(c.date_commande)
    ORDER BY article, MONTH(c.date_commande)");?>
    Donc pas de soucis, j'ai bien :
    Mois1; article 2; totalvente 3;

    Le problème se pose sur la mise en forme de ces résultats

    En effet je souhaite comme vous le savez faire apparaitre ces résultats sous forme de tableau à double entré, la ligne d'entête serait :

    Article;Janvier;Févier;...;Décembre

    La ligne 1 serait :

    Article1; Total Janvier;Total Février;..;Total Décembre


    Voili voilou !

    Merci encore !

  12. #12
    Membre éprouvé Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Par défaut
    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?php
    //	ton tableau doit ressembler à quelque chose comme ça:
    $articles = array(
    	0 => array('id_article' => 14, 'mois_article' => 7, 'ventes_article' => 2457),
    	1 => array('id_article' => 32, 'mois_article' => 7, 'ventes_article' => 1452),
    	2 => array('id_article' => 57, 'mois_article' => 7, 'ventes_article' => 875),
    	3 => array('id_article' => 14, 'mois_article' => 8, 'ventes_article' => 2452),
    	4 => array('id_article' => 32, 'mois_article' => 8, 'ventes_article' => 124),
    	2 => array('id_article' => 57, 'mois_article' => 8, 'ventes_article' => 875),
    );
    //	Et voilà de quoi l'afficher.
    echo '<table>';
    while (list($article_id, $article_contenu) = each($articles)) {
    	// ->  là tu as les lignes
    	echo '<tr>';
    	while (list($mois_id, $mois_contenu) = each($article_contenu)) {
    		//-> là tu as les colonnes.
    		echo '<td>';
    		echo 'les informations que tu veux afficher.';
    		echo '</td>';
    	}
    	echo '</tr>';
    }
    echo '</table>';
    ?>
    Ceci réponds donc à ta question ?

    [edit]Mise à jour[/edit]

  13. #13
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Alors il faut que je teste, ça va prendre un peu de temps.

    Pour faire cela tu mets les résultats de ma requête dans un aray c'est cela ?

    Par contre si pour un mois il n'y a pas eu de vente, ça va passer directement au mois suivant et ça va créer un décalage non ?

    Merci encore !

  14. #14
    Membre éprouvé Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Par défaut
    Bien tu met une simple condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($articles[$article_id]['article_ventes'] ===0) ...
    Formes idéale du tableau
    Code : 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
    19
     
    <?php
    $articles = array(
    	//	id_article => infos
    	24 => array(
    		//	id_mois => nombres de ventes
    		11 => 2547,
    		10 => 1257,
    		9 => 541,
    	),
    	23 => array(
    		11 => 1755,
    		10 => 14257,
    		9 => 557,
    	),
    );
    //	Pour accéder aux ventes d'un article pour un mois donné:
    $nb_ventes = $articles[$id_article][$id_mois];
    ?>
    En PHP l'utilisation des tableaux est... obligatoire, c'est une des choses basiques et des plus utiles/puissantes.

  15. #15
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Ok, merci beaucoup.

    Bon je suis un peu un boulet j'ai encore deux ou trois questions/problèmes :

    Quand tu parles de l'utilisation des tableaux c'est des arrays, on est d'accord ? Moi j'utilise que des boucles pour lister les données de mes tables c'est pareil non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    while ($donnees_vente_mois = mysql_fetch_array($retour_vente_mois))
    {
    }
    ?>
    Ou alors est ce que je dois mettre les résultats de cette boucle dans un tableau ?

    Car j'ai essayé ça mais après je ne sais que faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $tableau = array();
    while ($donnees_vente_mois = mysql_fetch_array($retour_vente_mois))
    	{
    	$tableau['article'] = $donnees_vente_mois['article'];
    	$tableau['mois'] = $donnees_vente_mois['mois'];
    	$tableau['somme'] = $donnees_vente_mois['somme'];
     
    	echo $tableau['article'].';'.$tableau['mois'].';'.$tableau['somme'].'<br>';
     
    	}
    Merci encore (et oui encore...lol)

  16. #16
    Membre éprouvé Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Par défaut
    L'idéal est de tout stocker dans un tableau php, un vrai, donc un array().

    Ensuite, pour éxplorer les tableaux, dans mon code tu as un éxemple:
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    while (list($key,$value) = earch($array)) {
    // ici $key est la clé de la ligne courante du tableau
    // et $value est la valeur de cette ligne(qui peut être, elle même un tableau
     
    }
     
    // plus simple, tu as la fonction foreach mais qui a des performances moins bonnes: 
     
    foreach($array as $key=>$value) {
    // ici $key est la clé de la ligne courante du tableau
    // et $value est la valeur de cette ligne(qui peut être, elle même un tableau
    }


    Seules la syntaxe et la performance changent.


    Avec ça tu peux explorer un tableau et donc accéder aux informations que tu souhaite facilement et rapidement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    while (list($id_article,$value) = each($articles)) {
    //ici ce sont les lignes => <tr>
    	while (list($id_mois, $ventes) = each($value)) {
    // ici ce sont les colonnes. <td>
    		if ($ventes ===0) 
    			continue;
    		else {
    			// tu affiche.
    		}
    // ici ce sont les fin de colonnes. </td>
    	}
     
    //ici ce sont les fin de lignes => </tr>
    }

  17. #17
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Re,

    Voilà ce que j'ai réussi à faire (autant dire que ça ne marche pas)

    Code : 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
    19
    20
    21
     
    <?php
    while ($donnees_vente_mois = mysql_fetch_array($retour_vente_mois))
    	{
    	while (list($id_article,$value) = each($donnees_vente_mois)) 
    		{
    		echo '<tr>';
    		while (list($id_mois, $ventes) = each($donnees_vente_mois)) 
    			{
    			echo '<td>';
    			if ($ventes ===0) continue;
    			else 
    			{
    			echo $donnees_vente_mois['somme'];
    			}
    			echo '</td>';
    		}
    		echo '</tr>';
    	}
    	}
    ?>
    On est d'accord que $donnees_vente_mois est un array ?
    Et a quoi correspond $id_article et $value car je le les ai jamis définie ?

    Enfin bref, le rpoblème est que tout s'affcihe sur la même ligne et plusieurs doublons apparaissent.

    J'essaye de regarder ça, si tu as une idée ?
    Merci encore mille fois !

  18. #18
    Membre éprouvé Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Par défaut
    Stock dans un tableau après avoir mis sous la forme que tu veux, l'idéal c'est

    $articles[$id_article][$id_mois]
    et cette variable te donne une valeur numérique qui est le nombre de vente.

    Donc, dans u n premier temps, tu récupère les infos via MySQL, dans un second temps tu stock dans un tableau en le formatant comme dit plus haut, puis tu l'éxplore et l'affiche.

    Donc:
    while($array = mysql_fetch_array($machin)) {
    $id_article = $array[// champs contenant l'id de l'article];
    $id_mois = array[//champs contenant l'id du mois];
    $vente = $array[//nombre de vente pour l'article et le mois donné];
    $articles[$id_article][$id_mois] = $vente;
    }

    Maintenant, tu as définis ton tableau, puis tu l'explore comme je t'ai montré dans les messages précédents.

  19. #19
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Par défaut
    Bon je suis en train de reprendre avec un exemple à priori simple :

    Je souhaite liste la liste des produits commandes par famille.
    Je souhaite que mon tableau soit en ligne avec :

    FAMILLE1
    Liste des produits de la famille1
    FAMILLE2
    Liste des produits de la famille2

    Comment faire cela en un seule requête, car moi j'en fait deux je liste les familles puis les produits de la famille.

    Voici mon code avec une seule requête :

    Code : 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
     
    <?php
    //Je vais chercher les informtions de la commande
    	$retour_detail = mysql_query("	SELECT * 
    									FROM commande_detail cd
    									JOIN article a
    									ON a.id_article=cd.article
    									WHERE num_cmde='$num_cmde'");
    	while ($donnees_detail = mysql_fetch_array($retour_detail))
    		{  ?>
     
    			<tr>
    			<td colspan="3"><?php echo $donnees_detail['groupe_stat'].' | '.$donnees_detail['article']; ?></td>
    			</tr>
     
    <?php	} ?>
    Merci d'avance de ton aide.

  20. #20
    Membre éprouvé Avatar de Grepsd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2008
    Messages : 96
    Par défaut
    Fait simplement une jointure:

    SELECT table1.champs1, table1.champs2, table2.champs FROM table1 LEFT JOIN table2 ON table1.champs1 = table2.champs1

    N'utilise pas la sélection des champs via *, spécifies les champs que tu vas utiliser, ne prend jamais tout les champs sauf si tu les utilises tous.

    SELECT leschamps FROM latable LEFT JOIN seconde_table ON table1.champs_de_liaison = table2.champs_de_liaison WHERE....

Discussions similaires

  1. comparaison de données dans une boucle
    Par jeff6868 dans le forum R
    Réponses: 3
    Dernier message: 28/03/2012, 13h03
  2. comparaison dans une boucle inutile ou non ?
    Par AnozerOne dans le forum Débuter
    Réponses: 2
    Dernier message: 13/05/2011, 13h56
  3. comparaison+affectation dans une boucle
    Par casafa dans le forum C++
    Réponses: 6
    Dernier message: 07/06/2008, 13h25
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 15h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 09h52

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