[php] Afficher des enregistrements sans doublon [résolu]

Afficher des enregistrements sans doublon [résolu] [php] - PHP - Programmation

Marsh Posté le 12-06-2004 à 00:03:06    

VOIR LE PB A RESOUDRE EN BAS DE PAGE  :jap:  
 
 
Bsoir,
 
j'ai fait un formulaire qui lance le code ci-dessous, qui recupere 2 champs dans une table.
Je dois etre fatigués, mais le resultat ne me renvoie qu'un enregistrement (le 1Er), alors que je voudrais qu'ils s'affichent tous
 
Que manque-t-il ?
 

Code :
  1. $niveau = $_POST['niveau'];
  2. $nature = $_POST['nature'];
  3. mysql_connect($host,$user,$pass);
  4. mysql_select_db($bdd);
  5.         $query="SELECT * FROM $table_site WHERE actif=1 AND niveau='$niveau' AND nature='$nature' AND root=-1 ORDER BY niveau DESC";
  6. $result=mysql_query($query);
  7.         $sites_dem=mysql_fetch_object($result);
  8.         $n=mysql_num_rows($result);
  9.         mysql_free_result($result);
  10. if(empty($niveau))
  11. {
  12. echo("<center>Le '<b>niveau</b>' est vide !</center>" );
  13. exit();
  14. }
  15. else
  16. {
  17. echo("niveau=$niveau et nature=$nature<br>" );
  18. echo("$sites_dem->nom<br>" );
  19. echo("$sites_dem->auteur<br>" );
  20. }


Message édité par lulu_merlan le 16-06-2004 à 20:41:37

---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 12-06-2004 à 00:03:06   

Reply

Marsh Posté le 12-06-2004 à 00:05:32    

ben ya pas de while [:chacal_one333]
 
sinon je sais pas si le root=-1 est bien :o
on preferera root="-1" :o

Reply

Marsh Posté le 12-06-2004 à 00:09:56    

chacal_one333 a écrit :

ben ya pas de while [:chacal_one333]
 
sinon je sais pas si le root=-1 est bien :o
on preferera root="-1" :o



 
 
ben non, dans un cas on a un entier dans l'autre un string mais les 2 sont corrects
 
en plus php il capte rien alors on s'en branle [:xice007]
 
 
edit : a ben ui mais la c'est MySQL ... mais dans ce cas il s'en branle aussi [:xice007]
 
edit 2 : mais on preferes avec des quotes.... t'as raison en fait [:meganne]


Message édité par simogeo le 12-06-2004 à 00:11:20

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 12-06-2004 à 00:11:27    

oui..mais bon...ben...CA VA HEIN !!
 
edit : je savais [:franck75]


Message édité par Profil supprimé le 12-06-2004 à 00:11:43
Reply

Marsh Posté le 12-06-2004 à 00:12:37    

avec les guillemets g une erreur, donc je laisse comme ça :)
 
Pour le while, tu peux precier ?


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 12-06-2004 à 00:13:05    

[:itm]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 12-06-2004 à 00:13:35    

precises lui chacal, fait pas l'enculé [:franck75]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 12-06-2004 à 00:15:13    

$i = 1;
while ($i <= 10):
    echo $i .......
    $i++;
endwhile;


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 12-06-2004 à 00:16:34    

regarde, y'a un exemple ici  
http://www.nexen.net/docs/php/anno [...] object.php
 
:)


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 12-06-2004 à 00:20:38    

j'etait partit fumé.
 
non mais ho :o

Reply

Marsh Posté le 12-06-2004 à 00:20:38   

Reply

Marsh Posté le 12-06-2004 à 00:20:56    

j'avais pas vu merci :)


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 12-06-2004 à 00:21:19    

je vais essayer : je debute :/


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 12-06-2004 à 00:22:10    

chacal_one333 a écrit :

j'etait partit fumé.
 
non mais ho :o


 
'tain t'es riche  :lol:


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 12-06-2004 à 00:22:24    

les roulées spatrop cher :o

Reply

Marsh Posté le 12-06-2004 à 00:30:01    

ça marche :)
 

Code :
  1. $niveau = $_POST['niveau'];
  2. $nature = $_POST['nature'];
  3. mysql_connect($host,$user,$pass);
  4. mysql_select_db($bdd);
  5.         $query="SELECT * FROM $table_site WHERE actif=1 AND niveau='$niveau' AND nature='$nature' AND root=-1 ORDER BY niveau DESC";
  6. $result=mysql_query($query);
  7.         while ($sites_dem = mysql_fetch_object($result)) {
  8.         echo $sites_dem->nom;
  9.         echo $sites_dem->auteur;
  10.                             }
  11.         mysql_free_result($result);


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 12-06-2004 à 00:32:06    

c'est fait pour ^^

Reply

Marsh Posté le 12-06-2004 à 13:22:19    

BOn, maintenant que tous les enregistrements sont bien retournés, je veux que ne soit retournés que les enregistrements uniques (car mon script est un annuaire qui utilise des alias de catégories = champ 'cat')
Quel argument integrer à la requete, pour trier les enregistrements, et ne afficher ceux qui ont un alias?
Ex, j'ai 4 enregistrements aux chmps identiques, sauf le champ CAT, auquel est affecté une valeur (int) qui renvoie à la catégorie ou alias
-> Un seul enregistrement doit etre retourné
 

Code :
  1. $niveau = $_POST['niveau'];
  2. $nature = $_POST['nature'];
  3. mysql_connect($host,$user,$pass);
  4. mysql_select_db($bdd);
  5.         $query="SELECT * FROM $table_site WHERE actif=1 AND niveau='$niveau' OR nature='$nature' AND root=-1 ORDER BY niveau DESC";
  6. $result=mysql_query($query);
  7.         while ($sites_dem = mysql_fetch_object($result))


Message édité par lulu_merlan le 12-06-2004 à 13:35:30

---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 12-06-2004 à 16:55:37    

up


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 12-06-2004 à 17:47:54    

select distinct(champ1), champ2, champ3 ...

Reply

Marsh Posté le 12-06-2004 à 19:12:25    

merci à toi !


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 13-06-2004 à 10:26:14    

Mon formulaire est fait à partir de Checkbox : cimment faire pour que le visiteur qui coche 2 boites ou +, puisse obtenir un resultat combinant une variable "niveau" et 2 variables "nature" ou plus, sans refaire une liste de checkbox pour chaque choix supplémentaire ?
 
Une partie de mon formulaire :
 

Code :
  1. <TD width="50%"><div align="left"><? echo $site_niveau ?></div><BR>
  2.                 <input type="checkbox" name="niveau" value="6ème">&nbsp;sixième<BR>
  3.                 <input type="checkbox" name="niveau" value="5ème">&nbsp;cinquième<BR>
  4.           </TD>
  5.           <TD width="50%"><div align="left"><? echo $site_nature ?></div><BR>
  6.             <input type="checkbox" name="nature" value="article">&nbsp;article<BR>
  7.                 <input type="checkbox" value="biographie">&nbsp;biographie<BR>


 
Je veux donc que l'utilisateur puisse choisir Sixième  ET article ET biographie, afin de cumuler les reusltats


Message édité par lulu_merlan le 13-06-2004 à 10:28:33

---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 13-06-2004 à 16:40:23    

remets le titre initial stp. Celui qui débarque dans le topic est un peu perdu.  
 
fait un nouveau topic au lieu d'éditer stp.

Reply

Marsh Posté le 13-06-2004 à 19:11:00    

JagStang a écrit :

remets le titre initial stp. Celui qui débarque dans le topic est un peu perdu.  
 
fait un nouveau topic au lieu d'éditer stp.


 
c'est fait


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 13-06-2004 à 21:27:31    

Rappel de mes codes :
 
extrait du fichier qui contient le formulaire :

Code :
  1. <TR class="lienp">Vous pouvez classer (trier) l'affichage des sites(ordre descendant/ascendant):
  2.           <TD width="50%"><div align="left"><? echo $site_niveau ?></div><BR>
  3.                 <input type="checkbox" name="niveau" value="6ème" />&nbsp;sixième<BR>
  4.                 <input type="checkbox" name="niveau" value="5ème" />&nbsp;cinquième<BR>
  5.                 <input type="checkbox" name="niveau" value="4ème" />&nbsp;quatrième<BR>
  6.                 <input type="checkbox" name="niveau" value="3ème" />&nbsp;troisième<BR>
  7.                 <input type="checkbox" name="niveau" value="brevet" />&nbsp;brevet<BR>
  8.                 <input type="checkbox" name="niveau" value="2de" />&nbsp;seconde<BR>
  9.                 <input type="checkbox" name="niveau" value="1ère" />&nbsp;premiere<BR>
  10.           </TD>
  11.           <TD width="50%"><div align="left"><? echo $site_nature ?></div><BR>
  12.             <input type="checkbox" name="nature" value="article" />&nbsp;article<BR>
  13.                 <input type="checkbox" name="nature" value="biographie" />&nbsp;biographie<BR>
  14.                 <input type="checkbox" name="nature" value="bibliographie" />&nbsp;bibliographie<BR>


 
Extrait du fichier qui traite les données :

Code :
  1. $niveau = $_POST['niveau'];
  2. $nature = $_POST['nature'];
  3. $nature2 = $_POST['nature2'];
  4. ?>
  5. <TABLE class="barre7" width="95%" ALIGN="CENTER"><td class="barre12_1"><a href="../page/index.php?cat="><img src="../im/home.png" border="0" align="absmiddle" alt="\<? echo $accueil ?>\"></a>&nbsp;&nbsp;>&nbsp;<? echo $niveau ?>&nbsp;>&nbsp;<? echo $nature ?> </td>
  6. <?
  7. mysql_connect($host,$user,$pass);
  8. mysql_select_db($bdd);
  9. $query="SELECT DISTINCT ALL * FROM $table_site WHERE actif=1 AND niveau='$niveau' AND nature='$nature' OR nature='$nature2' AND root=-1 ORDER BY niveau DESC";
  10.         $result=mysql_query($query);
  11.         while ($sites_dem = mysql_fetch_object($result))


 
2 diffcultés :  
- les doublons sont retournés  :(  
- il faut que l'on puisse cocher plusieurs $nature  :??:


Message édité par lulu_merlan le 13-06-2004 à 22:53:36

---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 13-06-2004 à 22:27:19    

up


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 13-06-2004 à 22:30:14    

nommes tes checkbox comme ceci nature[]
 
ainsi tu recupereras un tableau.
 
pour comprendre ensuite print_r($_REQUEST['nature']); dans la partie traitement


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 13-06-2004 à 22:47:47    

simogeo a écrit :

nommes tes checkbox comme ceci nature[]
 
ainsi tu recupereras un tableau.
 
pour comprendre ensuite print_r($_REQUEST['nature']); dans la partie traitement


 
Ok j'applique et je reviens  Merci  ;)


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 13-06-2004 à 22:59:38    

Bon, ou mettre le print maintenant ?


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 13-06-2004 à 23:07:53    

lulu_merlan a écrit :

Bon, ou mettre le print maintenant ?


 
 dans la partie traitement je t'ai dis


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 13-06-2004 à 23:22:01    

ça donne
 

Code :
  1. <?
  2. include('../option.php');
  3. include ('../inc/header.php');
  4. $niveau = $_POST['niveau'];
  5. $nature = $_POST['nature'];
  6. print_r($_REQUEST['nature']);
  7. ?>
  8. <TABLE class="barre7" width="95%" ALIGN="CENTER"><td class="barre12_1"><a href="../page/index.php?cat="><img src="../im/home.png" border="0" align="absmiddle" alt="\<? echo $accueil ?>\"></a>&nbsp;&nbsp;>&nbsp;<? echo $niveau ?>&nbsp;>&nbsp;<? echo $nature ?> </td>
  9. <?
  10. mysql_connect($host,$user,$pass);
  11. mysql_select_db($bdd);
  12. $query="SELECT * FROM $table_site WHERE actif=1 AND niveau='$niveau' AND nature=$nature AND root=-1 ORDER BY niveau DESC";
  13.         $result=mysql_query($query);
  14.         while ($sites_dem = mysql_fetch_object($result))    {
  15. if(empty($niveau))
  16. {
  17. echo("<center>Il faut sélectionner un <b>niveau</b></center>" );
  18. exit();
  19. }
  20. else
  21. {
  22. echo("<TABLE width=95% ALIGN='CENTER'><TD class='barre14'>&nbsp;<img src='../im/fle_top.gif'>&nbsp;<a onclick=\"aff($sites_dem->id)\" class='lienp' href='../gestion/out.php?id=$sites_dem->id' target='_blank'>$sites_dem->nom</a>" );
  23. echo("&nbsp;-&nbsp;<a href='javascript:com($sites_dem->id)'><FONT size='1' class='lien_4' align='right'>&nbsp;&nbsp;[+ d'infos]&nbsp;($sites_dem->nb_com)</FONT></A>" );
  24. echo("&nbsp;-&nbsp;$sites_dem->auteur&nbsp;-&nbsp;<FONT class='visit'>$sites_dem->compt_out clics</FONT></TD></TABLE>" );
  25. }
  26.                                  }
  27. mysql_free_result($result);
  28. ?>


Mais d'autre modifs sont nécéssaires, because of erreur au niveau du mysql_fetch_object


Message édité par lulu_merlan le 13-06-2004 à 23:26:36

---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 14-06-2004 à 08:27:16    

Je ne trouve pas de pages qui expliquent comment on extrait les valeurs de REQUEST dans la requete :(


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 14-06-2004 à 09:52:48    

C'est un tableau, donc cela se traite comme un tableau (La Palisse n'aurait pas fait mieux...)


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 14-06-2004 à 22:32:06    

T509 a écrit :

C'est un tableau, donc cela se traite comme un tableau (La Palisse n'aurait pas fait mieux...)


tout doux mon bon, j'apprends !  :)


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 14-06-2004 à 22:36:37    

lulu_merlan a écrit :

tout doux mon bon, j'apprends !  :)


Je suis cool, la fin de la phrase me faisias rire, c'est tout. Aucun jugement de valeur sur ton niveau.
 
Juste pour le dire autrement :
Tu arrives à traiter le tableau $_POST, $_GET, pour $_SERVER, c'est pareil sauf que tu ne choisi pas les index et qu'ils te sont imposés


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 14-06-2004 à 22:45:29    

T509 a écrit :

Je suis cool, la fin de la phrase me faisias rire, c'est tout. Aucun jugement de valeur sur ton niveau.
 
Juste pour le dire autrement :
Tu arrives à traiter le tableau $_POST, $_GET, pour $_SERVER, c'est pareil sauf que tu ne choisi pas les index et qu'ils te sont imposés


 
je plaisantais aussi  :)  
 
auraistu unen url ou je pourrai puiser des exemples ?
 
Lulu


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 14-06-2004 à 22:50:51    

Non, la seule URL c'est la doc php
http://fr3.php.net/manual/fr/reserved.variables.php


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 14-06-2004 à 22:59:18    

lulu_merlan a écrit :

je plaisantais aussi  :)  
 
auraistu unen url ou je pourrai puiser des exemples ?
 
Lulu


 
oui, ça j'avais lu, mais j'ai besoin d'exemples pratiques pour voir la syntaxe et les possibilités : je ne cherche pas à ce qu'on me fasse mon code, attention  ;)


---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 14-06-2004 à 23:04:25    

$_REQUEST contient $_GET, $_POST, $_COOKIE, et $_FILES.
A mon sens, tu cherches à te compliquer la vie pour rien.
Utilises les 4 autres tableaux : $_GET, $_POST, $_COOKIE, et $_FILES et tu paux faire la même chose.


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 15-06-2004 à 10:50:10    

j'ai fait :

Code :
  1. print_r($_POST['niveau']);
  2. print_r($_POST['nature']);


 
J'essaie maintenant d'extraire les valeur du tableau pour les passer dans la requete sql
-> quelle syntaxre pour créer par une variable $nature, qui contiendrait un des élément du tableau ?
 
lulu


Message édité par lulu_merlan le 15-06-2004 à 11:02:13

---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le 15-06-2004 à 11:34:29    

Bon, dans ma requete j'ai fait :

Code :
  1. mysql_select_db($bdd);
  2. $query="SELECT * FROM $table_site WHERE actif=1 AND niveau=$_post(niveau) AND nature=$_post(nature) AND root=-1 ORDER BY niveau DESC";
  3.         $result=mysql_query($query);
  4.         while ($sites_dem = mysql_fetch_object($result))    {


 
mais de cette façon, le résultat m'affiche toutes les enregistrements, comme si tout les "niveau" et "nature" étaient cochés :(


Message édité par lulu_merlan le 15-06-2004 à 11:36:07

---------------
JeuneJedi m'a sauver
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed