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 :

Enlever les doublons dans une variable [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Enlever les doublons dans une variable
    Bonjour à tous,

    Avant Merci de prendre votre temps pour nous aider,

    Voila j'ai un p'tit souci de doublons que je souhaiterai evité!

    Je m'explique j'ai une table : client, une table banque, et une table scategorie.
    la table client contient une colone idscat, une colone ht, et une colonne TVA cela peut etre donc tva=0 , tva = 8.5 ou tva=19.6


    Je voudrai afficher la liste de tous les impayer TTC classer par TVA du plus petit au plus grand.

    Scategorie1:
    client1 ici doit $xxx
    client 2 ici doit $xxx
    Scategorie2:
    client1 ici doit $xxx
    client 2 ici doit $xxx

    Le problème c'est que je viens a l'instant de changer ma requête et affiche bien maintenant une seul "scategorie" mais je n'ai pas la suite de ce qu'il devrait être afficher.
    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
    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
    <?php
    // IMPAYER 
    // on selectionne par tva
    $qr="select  scat.scategorie,c.id,c.ordre,c.adresse,c.nom,c.ht,c.ville,c.FORMAT,c.numfact,c.montant_lettre,c.acompte1,c.idannee,c.ht,c.tva_client,c.ajustement,c.cp,c.date_finalpub,c.idcat,c.tva_assujeti,c.idscat, scat.idscat,scat.monaie,scat.monaie,scat.codif from lieu c, scategorie scat where c.idscat=scat.idscat GROUP BY scat.scategorie  ORDER BY c.tva_client,c.idscat ASC ";
    $resup=execute_sql($qr);
    $compte_existant=mysql_num_rows($resup);
    //group by scat.scategorie
    while($row=mysql_fetch_array($resup)){
    	$ordre=$row['ordre'];
    	$adresse=$row["adresse"];		
    	$idmodif=$row["id"];
            $nom=$row["nom"];
    	$montant_ht=$row["ht"];
    	$ville1=$row["ville"];
    	$format=$row['FORMAT'];
    	$numfact=$row['numfact'];
    	$montant_lettre=$row['montant_lettre'];
    	$montant_ht=virgule($row['ht']);
    	$ajustement=$row['ajustement'];
    	$cp=$row['cp'];
    	$tva_client=$row['tva_client'];
    	$date_finalpub=$row['date_finalpub'];
    	$idcollaborateur=$row['idcollaborateur'];
    	$idsupport=$row['idcat'];
    	$tva_assujeti=$row['tva_assujeti'];
    	$idscat=$row['idscat'];
    	$courtier=$row['categorie'];
    	$mot=$row['scategorie'];
    	$monaie=$row['monaie'];
    	$codif=$row['codif'];
    	$tva=$tva_client;
    	// MONTANT TTC AVEC AJUSTEMENT
    	$montant_htaju=$montant_ht+$ajustement;	
    	$montant_htaju1=$montant_htaju*$tva;	
    	$montant_htaju2=$montant_htaju1/100;
    	$montant_htaju3=virgule_simple($montant_htaju2+$montant_htaju);
    	$montant_htaju4=virgule($montant_htaju3);
    	// ON RECUPERE VERSEMENT idmodif=idclient ou idcontrat
    $q="select sum(montant) as masomme from banques where idcontrat='$idmodif' and idscat='$idscat' ";
    $req=execute_sql($q);
    echo "$q<br>";
    $compte_banque=mysql_num_rows($req);
    $detail=mysql_fetch_assoc($req);
    // SI 0 VERSEMENT
    	if($compte_banque=="0"){
    	$montant_versement="0.00";
    	}
    	// ET SI VERSEMENT
    	else{
    	// MONTANT ENREGISTRER
    		$montant_versement=virgule($detail['masomme']);
    	}	
    	// ON VERIFI SI LE versement ttc est inferieur au montant ttc demandé et affiche que les impayés
    	if($montant_versement<$montant_htaju4){
    		$du1=virgule($montant_htaju4-$montant_versement);
    		//DU HT
    		$duht=virgule($du1-$montant_htaju2);
    		// ON AFFICHE LE SCATEGORIE j'ai mis mot pensant faire un explode() et array_unique() mais fonctionne pas. normale je suis dans le while donc quoi qu'il arrive je ne vois pas 
    // COMMENT classer par tva et par scategorie les client relié a scategorie
    		echo $mot;
    		echo "<table border=1 width=80% cellspacing=0 cellpadding=0><tr><td width=10% valign=\"middle\">n&deg; <B>$ordre</b><br>$codif</td><td width=40% valign=\"middle\"><a href=index.php?pages=modif_lieu2&idmodif=$idmodif class=\"info\">$nom<span>
    		Detaille du contrat:<br><font size=1 color=#3E92F2><br>Montant HT:<b>$montant_ht</b><br>Montant TTC : <b>$montant_htaju4</b> <br>Montant Vers&eacute; :  <b>$montant_versement</b><BR>T.V.A : $tva_client</font></span></a><br>(T.V.A : $tva_client)</td><td>$datedesfinpub</b></td><td valign=\"middle\"> - <font color=#ff0000>Doit H.T :$duht  </font> </b> - <font color=#ff0000>doit : $du1 <b>$monaie T.T.C</font></td></tr></table>";
    		$tableht0[]  = $du1;
    		// on détermine ici un tableau, mais il peux s'agir de valeur en BdD ça fonctionnerais pareil	
    	$count_monaiedu1 = 0; // on initialise $count_monaie à 0, afin d'être sur de ne pas fausser le resultat
    	foreach ($tableht0 as $cht1){ // on lance la boucle
         $count_monaiedu1=$cht1+$count_monaiedu1;
    	}
    	  // FIN BOUCLE
    } // SI MONTANT VERSER EST INFERIEUR
    // ON AFFICHE LE MONTANT QUE LE CLIENT DOIT  En ttc TTC selon la liste client de la scategorie classé par tva
    echo $cout_monaiedu1
    } // FIN DU while debut
    ?>

    Voila un grand merci pour votre aide.
    RAPHY

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Une proposition à tout hasard, dans ton group by, tu ne veux pas ajouter le c.id ?
    Code SQL : 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
    27
    select  scat.scategorie,
    c.id,
    c.ordre,
    c.adresse,
    c.nom,
    c.ht,
    c.ville,
    c.FORMAT,
    c.numfact,
    c.montant_lettre,
    c.acompte1,
    c.idannee,
    c.ht,
    c.tva_client,
    c.ajustement,
    c.cp,
    c.date_finalpub,
    c.idcat,
    c.tva_assujeti,
    c.idscat, 
    scat.idscat,
    scat.monaie,
    scat.codif 
    from lieu c
    inner join scategorie scat on c.idscat=scat.idscat 
    GROUP BY scat.scategorie, c.id  
    ORDER BY c.tva_client,c.idscat ASC

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonsoir dendrite,

    merci de ta réponse,

    je viens de tester je récupère bien les clients par contre j'ai le doublons scategorie.

    le résultat renvoi
    Scategorie1:
    client1 ici doit $xxx
    Scategorie1:
    client 2 ici doit $xxx
    Scategorie2:
    client1 ici doit $xxx
    Scategorie2:
    client 2 ici doit $xxx

    mais je voudrai afficher le résultat comme suit :
    Scategorie1:
    client1 ici doit $xxx
    client 2 ici doit $xxx
    Scategorie2:
    client1 ici doit $xxx
    client 2 ici doit $xxx

    c'est a dire ne pas afficher 2 fois la même scategorie1 ou 2 ou autre...

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Dans ce cas, je partirais du sql que je te propose, et c'est en PHP que je réglerais le changement de catégorie, qui n'est que de l'habillage cosmétique, avec un code du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $curCat='';//première affectation du témoin
    $i=0;
    do{
       if($data[$i]['scategorie']!=$curCat){//cette partie ne s'éxécutera qu'au changement de catégorie
          echo $data[$i]['scategorie'].'<br/>';
          $curCat=$data[$i]['scategorie'];
       }
       echo $data[$i]['toutes les données clients'].'<br/>';//cette partie s'éxécutera à chaque client
       $i++;
    }while($i<sizeof($data));
    PS : ne nomme pas "doublon" de catégorie, ce qui n'en est pas; C'est juste la répétition d'une information utile. Un doublon, c'est tout un enregistrement avec tous les champs pareils et c'est une anomalie.
    A contrario, si je prends toutes les femmes, j'aurai toujours le champ sexe à 'F', ce ne sera pas des doublons.

  5. #5
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Salut , merci pour ta rapidité,

    Oui c'est vrai pour moi je pensé que le mieu etait de dire un doublon d'une variable, oui ce n'est pas un doublons dans mon cas, c'est une logique et une répetition en effet!

    mais comment l’implémente?
    sachant que j'ai un if() (
    si montant et infererieur au montant ttc)
    la j'affiche...
    Ci dessous j'ai mis comme ceci, par contre l'affichage ca met des doublons client voir triple

    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
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
    <?php
     
    // IMPAYER 
     
     
     
    // on selectionne par tva
    $qr="select  scat.scategorie,c.id,c.ordre,c.adresse,c.nom,c.ht,c.ville,c.FORMAT,c.numfact,c.montant_lettre,c.acompte1,c.idannee,c.ht,c.tva_client,c.ajustement,c.cp,c.date_finalpub,c.idcat,c.tva_assujeti,c.idscat, scat.idscat,scat.monaie,scat.monaie,scat.codif from lieu c INNER JOIN scategorie scat ON c.idscat=scat.idscat GROUP BY scat.scategorie,c.id  ORDER BY c.tva_client,c.idscat ASC ";
    $resup=execute_sql($qr);
    $compte_existant=mysql_num_rows($resup);
    //group by scat.scategorie
     
    while($row=mysql_fetch_array($resup))
            	{
     
    				$ordre=$row['ordre'];
    		    $adresse=$row["adresse"];		
    			$idmodif=$row["id"];
                $nom=$row["nom"];
    			$montant_ht=$row["ht"];
    			$ville1=$row["ville"];
    			$format=$row['FORMAT'];
    			$numfact=$row['numfact'];
    			$montant_lettre=$row['montant_lettre'];
    			$montant_ht=virgule($row['ht']);
    			$ajustement=$row['ajustement'];
    			$cp=$row['cp'];
    			$tva_client=$row['tva_client'];
    			$date_finalpub=$row['date_finalpub'];
    			$idcollaborateur=$row['idcollaborateur'];
    			$idsupport=$row['idcat'];
    			$tva_assujeti=$row['tva_assujeti'];
    			$idscat=$row['idscat'];
    			$courtier=$row['categorie'];
    			$mot=$row['scategorie'];
    			$monaie=$row['monaie'];
    			$codif=$row['codif'];
    			$tva=$tva_client;
    			// MONTANT TTC AVEC AJUSTEMENT
    			$montant_htaju=$montant_ht+$ajustement;	
    			$montant_htaju1=$montant_htaju*$tva;	
    			$montant_htaju2=$montant_htaju1/100;
    			$montant_htaju3=virgule_simple($montant_htaju2+$montant_htaju);
    			$montant_htaju4=virgule($montant_htaju3);
     
     
    // ON RECUPERE LES BANQUE
    $q="select sum(montant) as masomme from banques where idcontrat='$idmodif' and idscat='$idscat' ";
    $req=execute_sql($q);
     
    $compte_banque=mysql_num_rows($req);
    $detail=mysql_fetch_assoc($req);
    // SI 0 VERSEMENT
    	if($compte_banque=="0")
    	{
     
    	$montant_versement="0.00";
     
    	}
    	// ET SI VERSEMENT
    	else
    	{
    		// MONTANT ENREGISTRER
    		$montant_versement=virgule($detail['masomme']);
    	}	
     
    			$a = array_unique($a);
    			// ON VERIFI SI LE versement est inferieur au montant demandé
    				if($montant_versement<$montant_htaju4)
    				{
     
     
    				$du1=virgule($montant_htaju4-$montant_versement);
     
    				//DU HT
    				$duht=virgule($du1-$montant_htaju2);
     
     
    				$curCat='';//première affectation du témoin
    $i=0;
    do{
       if($row[$i]['scategorie']!=$curCat){//cette partie ne s'éxécutera qu'au changement de catégorie
          echo $row[$i]['scategorie'].'<br/>';
          $curCat=$row[$i]['scategorie'];
       }
      echo 'Ordre: '.$row[$i]['ordre'].' - Nom '.$row[$i]['nom'].' - Codif: '.$row[$i]['codif'].' - Tva: '.$row[$i]['tva_client'].'<br/>';//cette partie s'éxécutera à chaque client
       $i++;
    }while($i<sizeof($row));
     
     
    			// ICI METTRE JUSTE le nom de la scategorie une seule fois 
    			// car actuellement l'affichage se fait comme ca:$mot donnee $mot donne	
     
    					// on recup pour afficher par categorie une 
     
     
     
     
    				/*donne client
    			 
    			echo "<table border=1 width=80% cellspacing=0 cellpadding=0><tr><td width=10% valign=\"middle\">n&deg; <B>$ordre</b><br>$codif</td><td width=40% valign=\"middle\"><a href=index.php?pages=modif_lieu2&idmodif=$idmodif class=\"info\">$nom<span>
    			Detaille du contrat:<br><font size=1 color=#3E92F2><br>Montant HT:<b>$montant_ht</b><br>Montant TTC : <b>$montant_htaju4</b> <br>Montant Vers&eacute; :  <b>$montant_versement</b><BR>T.V.A : $tva_client</font></span></a><br>(T.V.A : $tva_client)</td><td>$datedesfinpub</b></td><td valign=\"middle\"> - <font color=#ff0000>Doit H.T :$duht  </font> </b> - <font color=#ff0000>doit : $du1 <b>$monaie T.T.C</font></td></tr></table>";
    		*/
     
    					$tableht0[]  = $du1;
     
     
     	// on détermine ici un tableau, mais il peux s'agir de valeur en BdD ça fonctionnerais pareil	
    	$count_monaiedu1 = 0; // on initialise $count_monaie à 0, afin d'être sur de ne pas fausser le resultat
    	foreach ($tableht0 as $cht1)
    	{ // on lance la boucle
         $count_monaiedu1=$cht1+$count_monaiedu1;
    	}
    	  // FIN BOUCLE
     
     
     
    				} // SI MONTANT VERSER EST INFERIEUR
     
     
    				} // FIN DU IF TVA 0
     
     
     
     
     
     
    ?>
    En attente de te lire merci

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Lol, faut utiliser ta boucle, pas en rajouter une autre. Je vois que je t'ai bien embêté en faisant une do...while.
    Bon, je vais refaire avec ta boucle while. Au passage, j'ai indenté ton code, c'est y pas plus lisible ? C'est vital d'être clair quand on code.
    Dis-moi si cette fois, ça marche comme tu veux...
    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
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    <?php
     // IMPAYER 
     
    // on REGROUPE par type de tva,client
    $qr="SELECT  scat.scategorie,
    c.id,
    c.ordre,
    c.adresse,
    c.nom,
    c.ht,
    c.ville,
    c.FORMAT,
    c.numfact,
    c.montant_lettre,
    c.acompte1,
    c.idannee,
    c.ht,
    c.tva_client,
    c.ajustement,
    c.cp,
    c.date_finalpub,
    c.idcat,
    c.tva_assujeti,
    c.idscat, 
    scat.idscat,
    scat.monaie,
    scat.codif 
    FROM lieu c
    INNER JOIN scategorie scat ON c.idscat=scat.idscat 
    GROUP BY scat.scategorie, c.id  
    ORDER BY c.tva_client,c.idscat ASC";
     
    $resup=execute_sql($qr);
    $compte_existant=mysql_num_rows($resup);
     
     
     $start=true;
     
     
    while($row=mysql_fetch_assoc($resup)){
     
    	$ordre=$row['ordre'];
    	$adresse=$row["adresse"];		
    	$idmodif=$row["id"];
    	$nom=$row["nom"];
    	$montant_ht=$row["ht"];
    	$ville1=$row["ville"];
    	$format=$row['FORMAT'];
    	$numfact=$row['numfact'];
    	$montant_lettre=$row['montant_lettre'];
    	$montant_ht=virgule($row['ht']);
    	$ajustement=$row['ajustement'];
    	$cp=$row['cp'];
    	$tva_client=$row['tva_client'];
    	$date_finalpub=$row['date_finalpub'];
    	$idcollaborateur=$row['idcollaborateur'];
    	$idsupport=$row['idcat'];
    	$tva_assujeti=$row['tva_assujeti'];
    	$idscat=$row['idscat'];
    	$courtier=$row['categorie'];
    	$mot=$row['scategorie'];
    	$monaie=$row['monaie'];
    	$codif=$row['codif'];
    	$tva=$tva_client;
    	// MONTANT TTC AVEC AJUSTEMENT
    	$montant_htaju=$montant_ht+$ajustement;	
    	$montant_htaju1=$montant_htaju*$tva;	
    	$montant_htaju2=$montant_htaju1/100;
    	$montant_htaju3=virgule_simple($montant_htaju2+$montant_htaju);
    	$montant_htaju4=virgule($montant_htaju3);
     	//faut un témoin pour savoir quand on change de type tva
    	if($start===true){
    		$curCat=$mot;
    		$start=false;
    	}
     
    	// ON RECUPERE LES BANQUE
    	$q="select sum(montant) as masomme from banques where idcontrat='$idmodif' and idscat='$idscat' ";
    	$req=execute_sql($q);
     
    	$compte_banque=mysql_num_rows($req);
    	$detail=mysql_fetch_assoc($req);
    	// SI 0 VERSEMENT
    	if($compte_banque=="0"){
    		$montant_versement="0.00";
    	}
    	// ET SI VERSEMENT
    	else{
    		// MONTANT ENREGISTRER
    		$montant_versement=virgule($detail['masomme']);
    	}	
     
    	$a = array_unique($a);
    	// ON VERIFI SI LE versement est inferieur au montant demandé
    	if($montant_versement<$montant_htaju4){
    		$du1=virgule($montant_htaju4-$montant_versement);
    		//DU HT
    		$duht=virgule($du1-$montant_htaju2);
     
    		//les calculs sont finis ? On procède à l'affichage
    		if($mot!=$curCat){//cette partie ne s'éxécutera qu'au changement de type tva
    			echo $mot.'<br/>';
    			$curCat=$mot;
    		}
    		echo 'Ordre: '.$ordre.'<br/>';//A toi de rajouter tes variables telles que renommées ci dessus
     
    		$tableht0[]  = $du1;
    		// on détermine ici un tableau, mais il peux s'agir de valeur en BdD ça fonctionnerais pareil	
    		$count_monaiedu1 = 0; // on initialise $count_monaie à 0, afin d'être sur de ne pas fausser le resultat
    		foreach ($tableht0 as $cht1){ // on lance la boucle
    			$count_monaiedu1=$cht1+$count_monaiedu1;
    		}
    	} 
    }
    ?>

  7. #7
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Lol, énorme sylvie!!

    juste un souci c'est que les premier afficher n'affiche pas la premiere categorie correspondante, ca affiche directement les clients , apres ca roule mais le premier non bizard?

  8. #8
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Ah ben non, pas bizarre du tout. Mais je suis sûre que tu aurais fini par trouver toute seule en cherchant un peu sur ce coup.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if($start===true){
    echo $mot.'<br/>';//j'avais oublié l'affichage au premier tour
    	$curCat=$mot;
    	$start=false;
    }

  9. #9
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Mais lol ^^,
    Super, mais j'aurai jamais trouvé merci bcp!!!

    j'ai un dernier souci par apport a mon $count_monaiedu1,

    je dois aditionné le $du1 de tout les client lister mais par categorie

  10. #10
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Super, mais j'aurai jamais trouvé merci bcp!!!
    Aïe, quand je lis ça, que "tu n'aurais jamais trouvé" où et comment faire un simple echo, je me dis que tu copies colles ce que je te file, sans rien y comprendre.
    Pas grand intérêt. Alors je vais changer de méthode.

    je dois aditionné le $du1 de tout les client lister mais par categorie
    Si tu ne vois pas trop ce qu'est une boucle ou une condition, lis mon tuto, lien dans signature.
    Pour l'instant, dans ta boucle, tu additionnes ton $du1 à la seule condition qu'il y ait déficit, quelle que soit la catégorie de TVA.
    Or, à chaque changement de catégorie de TVA, tu veux ranger ce sous total dans un tableau PHP, dans l'ordre de tes catégories.

    Encore un peu (beaucoup) d'aide, après tu te débrouilles :

    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
    //Avant la boucle, tu initialises
    $totalDus1=0; //ce sera la somme par catégorie
    $lesDus1=array(); //ce sera le tableau qui stockera toutes les sommes
     
    //Dans la boucle
    //s'il y a déficit
       //dans tous les cas
       $totalDus1=$totalDus1+$du1; //tu additionnes ton total au fur et à mesure
     
       //Si changement de catégorie (condition)
       $lesDus1[]=$totalDus1;//tu ranges ton total client dans ton tableau
       $totalDus1=0; // tu remets ta somme à zéro pour la suite
     
    //après la boucle
    $lesDus1[]=$totalDus1;//tu ranges ton déficit total client de ta dernière catégorie de TVA dans ton tableau

  11. #11
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2014
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Salut sylvie merci de t'on aide, c'est pas que je n'ai pas compris, ce qui est une boucle,

    se que je n'ai pas compris c'est comment alors que le while et avant, le premier echo de $scategorie (pour afficher le premier scategorie) s'affiche. c'est cela que j'ai du mal a saisir.
    et que je veux bien l'explication de $true.

    Je vais essayer ce que tu me dis car effectivement, la mon du1 affiche la totalité (ce qu'il me faut aussi) mais il me faut aussi un du par catégorie et par tva, chose que j'ai deja réglé du coup , car la requet et maintenant par tva=19.6 ou autre..

    je te remet le code que du cout j'ai modifié quelque procedur lié a la tva et tu vera que ce n'est pas du copi collé :^^ mise a part, ce que tu m'a effectivement aidé pour la répitition et je t'en remercie vraiment!

    voici le code fonctionnel :
    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
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
     
     
    <?php
    // JE SAIS je n'ai pas mis de isset mais pofinage apres ^^
    if($_POST['choixtva']==""){
     
    	echo "<form action=index.php?pages=IMPAYER2 method=post>
    	<select name=choixtva>
    	<option value=0>Tva a 0</option>
    	<option value=8.5>Tva a 8.5</option>
    	<option value=19.6>Tva a 19.6</option>
    	<option value=20>Tva a 20.00</option>
    	</select><input type=submit name=submit value=Lister les dus></form>";     
    	   }
    	   else
    	   {// SI CHOIX TVA
    		   $choixtva=$_POST['choixtva'];
     
    		   echo "Journal des dus avec TAUX TVA a <b>$choixtva</b> :<br>";
     
     
    ?>
     
     
     
    <?php
     // IMPAYER 
     
    // on REGROUPE par type de tva,client
    $qr="SELECT  scat.scategorie,
    c.id,
    c.ordre,
    c.adresse,
    c.nom,
    c.ht,
    c.ville,
    c.FORMAT,
    c.numfact,
    c.montant_lettre,
    c.acompte1,
    c.idannee,
    c.ht,
    c.tva_client,
    c.ajustement,
    c.cp,
    c.date_finalpub,
    c.idcat,
    c.tva_assujeti,
    c.idscat, 
    c.idcivilite,
    c.contact1,
    scat.idscat,
    scat.monaie,
    scat.codif 
    FROM lieu c
    INNER JOIN scategorie scat ON c.idscat=scat.idscat and c.tva_client LIKE '%$choixtva%'
    GROUP BY scat.scategorie, c.id  
    ORDER BY c.tva_client,c.idscat ASC";
     
    $resup=execute_sql($qr);
    $compte_existant=mysql_num_rows($resup);
     
     
     $start=true;
     
     
    while($row=mysql_fetch_assoc($resup)){
     
    	$ordre=$row['ordre'];
    	$adresse=$row["adresse"];		
    	$idmodif=$row["id"];
    	$nom=$row["nom"];
    	$montant_ht=$row["ht"];
    	$ville1=$row["ville"];
    	$format=$row['FORMAT'];
    	$numfact=$row['numfact'];
    	$montant_lettre=$row['montant_lettre'];
    	$montant_ht=virgule($row['ht']);
    	$ajustement=$row['ajustement'];
    	$cp=$row['cp'];
    	$tva_client=$row['tva_client'];
    	$date_finalpub=$row['date_finalpub'];
    	$idcollaborateur=$row['idcollaborateur'];
    	$idsupport=$row['idcat'];
    	$tva_assujeti=$row['tva_assujeti'];
    	$idscat=$row['idscat'];
    	$courtier=$row['categorie'];
    	$mot=$row['scategorie'];
    	$monaie=$row['monaie'];
    	$codif=$row['codif'];
    	$contact1=$row['contact1'];
    	$idcivilite=$row['idcivilite'];
     
     
    	$tva=$tva_client;
    	// MONTANT TTC AVEC AJUSTEMENT
    	$montant_htaju=$montant_ht+$ajustement;	
    	$montant_htaju1=$montant_htaju*$tva;	
    	$montant_htaju2=$montant_htaju1/100;
    	$montant_htaju3=virgule_simple($montant_htaju2+$montant_htaju);
    	$montant_htaju4=virgule($montant_htaju3);
     	//faut un témoin pour savoir quand on change de type tva
    	if($start===true){
    		echo '<br><div align=left><b>'.$codif.' : '.$mot.'</b></div><br/>';//j'avais oublié l'affichage au premier tour
    		$curCat=$mot;
    		$curCodif=$codif;
    		$start=false;
    	}
     
    	// ON RECUPERE LES BANQUE
    	$q="select sum(montant) as masomme from banques where idcontrat='$idmodif' and idscat='$idscat' ";
    	$req=execute_sql($q);
     
    	$compte_banque=mysql_num_rows($req);
    	$detail=mysql_fetch_assoc($req);
    	// SI 0 VERSEMENT
    	if($compte_banque=="0"){
    		$montant_versement="0.00";
    	}
    	// ET SI VERSEMENT
    	else{
    		// MONTANT ENREGISTRER
    		$montant_versement=virgule($detail['masomme']);
    	}	
     
    	//$a = array_unique($a);
    	// ON VERIFI SI LE versement est inferieur au montant demandé
    	if($montant_versement<$montant_htaju4){
    		$du1=virgule($montant_htaju4-$montant_versement);
    		//DU HT
    		$duht=virgule($du1-$montant_htaju2);
     
    		//les calculs sont finis ? On procède à l'affichage
    		if($mot!=$curCat){//cette partie ne s'éxécutera qu'au changement de type tva
    			echo '<br><div align="left"><b>'.$codif.': '.$mot.'</b></div><br/>';
    			$curCat=$mot;
    			$curCodif=$mot;
    		}
    		  //ON RECUP CIVILITE
    		$qcivile="select * from civilite where id='$idcivilite'";
    		$resc=execute_sql($qcivile);
    		while($row=mysql_fetch_array($resc)){
    			$civilite=$row['civilite'];
    		}
     
    		echo "<table border=1 width=90% cellspacing=0  cellpadding=0>
    		<tr>
    		<td width=35% valign=\"middle\"><B>$ordre</b>-<a href=index.php?pages=modif_lieu2&idmodif=$idmodif class=\"info\"><b><font color=#777777 size=2>$nom</font></b><span>
    			Detaille du contrat:<br><font size=1 color=#3E92F2><br>Montant HT:<b>$montant_ht</b><br>Montant TTC : <b>$montant_htaju4</b> <br>Montant Vers&eacute; :  <b>$montant_versement</b></font></span></a></td>
    			<td width=30% valign=\"middle\"><font size=2>$civilite $contact1</font></td>
    		<td valign=\"middle\"> - <font color=#ff0000>H.T :$duht  </font> </b> - <font color=#ff0000>$du1 <b>$monaie T.T.C</font> -  Vers&eacute; :  <b>$montant_versement</b></td></tr></table>";
     
    		// CALCUL DES DU PAR TVA	
     if($tva==0){
     
    	$tableht0[]  = $du1;
    		// on détermine ici un tableau, mais il peux s'agir de valeur en BdD ça fonctionnerais pareil	
    		$count_monaiedu1 = 0; // on initialise $count_monaie à 0, afin d'être sur de ne pas fausser le resultat
    		foreach ($tableht0 as $cht1){ // on lance la boucle
    			$count_monaiedu1=$cht1+$count_monaiedu1;
     
    	} 
     }
     
    		 if($tva==8.5 or $tva==8.50){
     
    	$tableht85[]  = $du1;
    		// on détermine ici un tableau, mais il peux s'agir de valeur en BdD ça fonctionnerais pareil	
    		$count_monaiedu85 = 0; // on initialise $count_monaie à 0, afin d'être sur de ne pas fausser le resultat
    		foreach ($tableht85 as $cht85){ // on lance la boucle
    			$count_monaiedu85=$cht85+$count_monaiedu85;
     
    	} 
     }
    			 if($tva==19.6){
     
    	$tableht19[]  = $du1;
    		// on détermine ici un tableau, mais il peux s'agir de valeur en BdD ça fonctionnerais pareil	
    		$count_monaiedu19 = 0; // on initialise $count_monaie à 0, afin d'être sur de ne pas fausser le resultat
    		foreach ($tableht19 as $cht19){ // on lance la boucle
    			$count_monaiedu19=$cht19+$count_monaiedu19;
     
    	} 
     }
     
    //TVA 20
    			 if($tva==20){
     
    	$tableht20[]  = $du1;
    		// on détermine ici un tableau, mais il peux s'agir de valeur en BdD ça fonctionnerais pareil	
    		$count_monaiedu20 = 0; // on initialise $count_monaie à 0, afin d'être sur de ne pas fausser le resultat
    		foreach ($tableht20 as $cht20){ // on lance la boucle
    			$count_monaiedu20=$cht19+$count_monaiedu20;
     
    	} 
     }
     
     
     
    		// FIN CALCUL DES DU PAR TVA
     
    } // FIN SI VERSEMENT ET INFERIEUR AU TTC
     
     
    } // FIN WHILE DEBUT REQUETE
     
    echo "<hr size=1>";
    if($choixtva==0){
     
    echo "<div aling=left><b>TOTAUX TVA A 0% :</b> $count_monaiedu1</div>";
    }
    if($choixtva==8.5){
     
    echo "<div aling=left><b>TOTAUX TVA A 8.5% :</b> $count_monaiedu85 </div>";
    }
    if($choixtva==19.6){
     
    echo "<div aling=left><b>TOTAUX TVA A 19.6% :</b> $count_monaiedu19 </div>";
    }
    if($choixtva==20){
     
    echo "<div aling=left><b>TOTAUX TVA A 20% :</b> $count_monaiedu20 </div>";
    }
     
     
     
     
     
     
    	  } // FIN DU ELSE CHOIX TVA
    ?>
    Voila il me manque donc a calculer le du1 mais par catégorie (et sans repétition) en gros a la fin de la liste client par categorie

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

Discussions similaires

  1. supprimer les doublons dans une table
    Par mavean dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/06/2019, 13h26
  2. Enlever les doublons dans une liste
    Par gefrey54 dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 14/09/2007, 17h46
  3. Réponses: 3
    Dernier message: 19/03/2007, 18h29
  4. [vbexcel]Comment supprimer les doublons dans une combobox?
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 24/11/2005, 11h12
  5. Éviter les doublons dans une requete
    Par royrremi dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 03/08/2004, 19h37

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