ne pas afficher de doublons via une variable a l'affichage

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ne pas afficher de doublons via une variable a l'affichage

Re: ne pas afficher de doublons via une variable a l'afficha

par raphy31 » 24 mars 2014, 12:28

Salut xtg , merci pour ta rep, par contre Sur la requête du haut ...

J'ai placer comme ceci :
$qr="select DISTINCT(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 ORDER BY c.tva_client,c.idscat ASC";
mais toujours pareille cela m'affiche :

$scategorie
donne1
$scategorie //DOUBLON
donne2
$scategorie //DOUBLON
donne3

Le truc c'est que if($tva==0) ecrit et re-écrit forcement car j'ai la requête du haut qui prend tout les client par ordre de tva dont il y a le idscat
//SCATEGORIE 
echo $mot; //LUI si le meme il s'ecrit quand meme il est dans le while du haut .. donc c'est peu logique qu'il se re-écrit, je ne vois pas comment lui dire que si tu ecrit le meme tu ne l'affiche qu'une fois.
                         
                        echo "<table border=1 width=100% 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>";

Est ce que je suis explicite?
en gros:
j'ai une requête qui va chercher une table client par taux de tva 0,8,19.6 et qui récupérer le montant HT client, puis je le met en ttc,
par la suite je fait appelle a la table "banque" qui va chercher via idduclient pour recup la sommes des montants qui on été verser du client (en ttc) pour comparer si c'est payer ou pas.
en suite je fait un if si montant et inferieur et un if par tva pour afficher et trié par tva les impayer, et la, la scateogire (d'ou la variable $mot) ce duplique ce qui est normal car elle est dans le if et while) il n'y a t'il pas moyen de lui dire que si tu ecris une fois on la affiche pas même si la seconde ligne et de la meme scategorie? ET dans le if)?


xtg mp moi si besoin merci bcp pour ton aide.

Re: ne pas afficher de doublons via une variable a l'afficha

par xTG » 24 mars 2014, 12:24

Une seule requête à modifier donc.
Places le DISTINCT sur la colonne scategorie.

Re: ne pas afficher de doublons via une variable a l'afficha

par raphy31 » 24 mars 2014, 09:52

Bonjour tous le monde,
je remet donc le code en entier ci cela peux vous aider comme demandé.

// IMPAYER 2
// on selectionne par tva
$qr="select 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.scategorie,scat.monaie,scat.monaie,scat.codif from lieu c, scategorie scat where c.idscat=scat.idscat ORDER BY c.tva_client,c.idscat ASC";
$resup=execute_sql($qr);
$compte_existant=mysql_num_rows($resup);



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_simple($detail['masomme']);
	}
	
			// ON VERIFI SI LE versement est inferieur au montant demandé
				if($montant_versement<$montant_htaju4)
				{
	
	
						
				$du1=virgule_simple($montant_htaju4-$montant_versement);
				
				//DU HT
				$duht=virgule($du1-$montant_htaju2);
		
	
			
				
		
		
			if($tva_client==0 or $tva_client==""){
			
			// ICI METTRE JUSTE le nom de la scategorie une seule fois 
			/* car actuellement l'affichage se fait comme ca:
$mot 
donnee 
$mot 
donne	

et je voudrai afficher :
$mot (si $mot et repeter on l'affiche juste 1 foir)
donne
donne 2
		*/	
			echo $mot;
			 
			echo "<table border=1 width=100% 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
// TOTAUX DES $DU1 DE LA SCATEGORIE
				echo $count_monaiedu1;

			}

 

Re: ne pas afficher de doublons via une variable a l'afficha

par jean-monique » 22 mars 2014, 02:43

déjà
if($tva_client==0 or $tva_client=="")
remplace le par
if(empty($tva_client))
quand tu fais
$qscat="select * from scategorie where idscat='$idscat'";
j'espere que, d'où que vienne $idscat, tu forces le type à int
$idscat = (int)$_GET['...'];//si tu veux faire propre
$idscat = $_GET['...'] * 1;//si tu veux gagner 0.00001 seconde à ton execution;

ensuite dans ton while (je suis pas certain de comprendre ton soucis)
$a[] = $mot;
puis hors du while
$a = array_unique($a);

Re: ne pas afficher de doublons via une variable a l'afficha

par xTG » 21 mars 2014, 18:00

Et donc une requête SQL pour chaque if ? Sur la même table ? Ou sur des tables différentes ?
Je pense que cela peut être simple (une seule requête) pour peu que tu corriges ce qui me semble être à première vue un souci de conception.

Re: ne pas afficher de doublons via une variable a l'afficha

par raphy31 » 21 mars 2014, 15:38

Mmm j'ai pensé au distinct, mais c'est plus complexe,

car j'ai des if dans le while d'avant
if($tva_client==0 or $tva_client==""){

$qscat="select * from scategorie where idscat='$idscat'";
                        $rescat=execute_sql($qscat);
                        while($row=mysql_fetch_array($rescat)){
                        $mot=$row['scategorie'];
                        $monaie=$row['monaie'];
                
                        // ENLEVER LES DOUBLONS POUR AFFICHER QU UNE FOIS
                        $a    = explode($mot, $variable);
                        $a[0].= ''.$mot.'';
                        }
                         echo implode('', $a); // ici un seul affichage de $mot enfin normalement ^^ <img src="http://forum.phpfrance.com/images/smilies/icon_sad.gif" alt=":(" title="Sad" />
                        
                        
                        echo "<table border=1 width=100% 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></tr></table>
} 
// ET UN AUTRE IF($tva=19.6) { idem par exemple.



                
MERCI de ta patience.

Re: ne pas afficher de doublons via une variable a l'afficha

par xTG » 21 mars 2014, 14:46

Cela peut se régler en SQL :
$qscat="select DISTINCT scategorie, monaie from scategorie where idscat='$idscat'";

ne pas afficher de doublons via une variable a l'affichage

par raphy31 » 21 mars 2014, 13:33

Bonjour à tous, mon problème est le suivant ,

comment ne pas afficher 2 fois le même mot (d'une variable dans un while) pour faire ceci :

Actuellement cela m'affiche comme ceci :
-TITTRE Variable
-texte1
-TITTRE Variable
-texte2

// mais je voudrai l'afficher comme ca :
-TITTRE Variable
-texte1
-texte2
- texte3
etc..

(Titre variable)est une catégorie ...
Bout de code :
$qscat="select * from scategorie where idscat='$idscat'";
			$rescat=execute_sql($qscat);
			while($row=mysql_fetch_array($rescat)){
			$mot=$row['scategorie'];
			$monaie=$row['monaie'];
		
			// ENLEVER LES DOUBLONS POUR AFFICHER QU UNE FOIS
			$a    = explode($mot, $variable);
			$a[0].= ''.$mot.'';
			}
			 echo implode('', $a); // ici un seul affichage de $mot enfin normalement ^^ :(
			
			
			echo "<table border=1 width=100% 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></tr></table>

Voila un coût de pouce svp j'ai essayer avec array_unique , implode mais fonctionne pas ou alors je m'y prend mal HELP HELP !
Merci