Requéte doublons

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 : Requéte doublons

par musikos » 07 juin 2009, 11:50

Un grand merci j'ai pu résoudre mon problème merci encore

par micetf » 07 juin 2009, 09:52

Bonjour,

Voilà comment je ferais :

Avant d'attaquer la boucle while,
j'initialise une variable $anneeCourante.

Ensuite, dans la boucle while,
je n'affiche $data['annee'] que si elle est différente de $anneeCourante
sans oublier alors de mettre à jour $anneeCourante.

Voilou ! Si on ne te proposes mieux, cela devrait te débloquer.

Fred

par stopher » 07 juin 2009, 09:36

Slt ,

Si tu as plusieurs enregistrements pour l'année X , il est normale qu'il y ai plusieurs lignes avec cette même année non ?

Sinon, yu peux utiliser en plus de ORDER BY , le GROUP BY , mais dans ce cas là , il n'y aura plus qu'une ligne par année .. ( ce qui ne me semble pas tres logique vu ton appli ).

Peut être ton problème est juste au niveau de l'affichage ? ( tu veux ne voir apparaitre qu'une fois l'année , même s'il y a plusieurs enregistrements ) ?

Dans ce cas , il faut ajouter quelques petites choses dans ta boucle while(){...}

Le principe est de vérifier si l'année n'a pas déjà été affichée , on va donc utiliser un tableau par exemple , qui contiendra les années affichées .

ce qui nous donne un truc du style :
...

//initialisation du tableau 
$TalreadyWrite	=	array();

while ($data = mysql_fetch_array($recup))
   {
   	
	   	//Si l'année n'est pas encore affichée 
	   	if( !in_array($data['annee'], $TalreadyWrite) ){
	   		echo "<h3 class=ui-accordion-header><a href='#'>" . $data['annee'] . "</a></h3>";
	   		
	   		//ajout de l'année dans le tableau afin de ne plus l'afficher
	   		array_push($TalreadyWrite, $data['annee']);
	   	}
	   	
	      
		echo "<div class=ui-accordion-content>";
		echo "<p class='p_recompenses'>";
		echo "<span class='premier'> " . $data['nom'] . "</span>";
		echo "<span class='deuxieme'> " . $data['prenom'] . "</span>";
		echo "<span class='troisieme'> " . $data['objet'] . "</span>";
		echo "<span class='quatrieme'> " . $data['commentaire'] . "</span>";
		echo "</p>";
		echo "</div>";
      
   }

//suppression du tableau utilisé 
unset($TalreadyWrite);

...
Attention tout de même , avec ce fonctionnement il faut que les année identiques se suivent ( laisser ORDER BY dans ta requête ) sinon , tu risques de mélanger les résultats !
Mais si tu laisses ORDER BY , c'est bon ;-)


Maintenant , j'ai peut être mal compris ce que tu souhaites reellement faire :-/

Ch.

Requéte doublons

par musikos » 07 juin 2009, 07:39

Bonjour,

J'ai une requéte que je n'arrive pas à faire, débutants dans ce domaine je vous demande si vous pouvez m'aider , il y a trop longtemps que je galère.
J'ai 6 champs et le nom de ma table c'est recompenses
ID
NOM
PRENOM
ANNEE
OBJET
COMMENTAIRE

la requéte que j'ai fait ça m'affiche plusieurs fois la même année alors que je voudrais qu'elle s'affiche qu'une seule fois
voici ma requête

<h1>Récompenses</h1>

Code : Tout sélectionner

<?php $recup = mysql_query("SELECT * FROM recompenses ORDER BY annee, nom, prenom"); echo "<div class=ui-accordion>"; while ($data = mysql_fetch_array($recup)) { echo "<h3 class=ui-accordion-header><a href='#'>" . $data['annee'] . "</a></h3>"; echo "<div class=ui-accordion-content>"; echo "<p class='p_recompenses'>"; echo "<span class='premier'> " . $data['nom'] . "</span>"; echo "<span class='deuxieme'> " . $data['prenom'] . "</span>"; echo "<span class='troisieme'> " . $data['objet'] . "</span>"; echo "<span class='quatrieme'> " . $data['commentaire'] . "</span>"; echo "</p>"; echo "</div>"; } ?>
Merci de tout coeur de votre aide