Se connecter / S'enregistrer
Votre question

Requette MySQL en php

Tags :
  • Sql
  • Programmation
Dernière réponse : dans Programmation
17 Janvier 2007 14:30:48

Bonjours,

J'ai fait une requette sur ma base de donné.

  1. $sql = mysql_query("SELECT `module` FROM `modules."` ORDER BY 'nom' ");
  2. while (list($module) = mysql_fetch_array($sql))
  3. {
  4. echo "$module";
  5. }


Mon problème, c'est qu'il peut y avoir deux fois le meme module et je voudrais l'afficher qu'une seul fois...

Merci

Autres pages sur : requette mysql php

17 Janvier 2007 14:39:22

SELECT DISTINCT?
17 Janvier 2007 14:42:12

Bon, j'ai trouver un autre moyen, mais j'ai un problème....
A la fin de ma fonction while je défini une variable $save, mais qui pert sa valeur au debut ...
Contenus similaires
17 Janvier 2007 14:45:29

J'ai ceci dans mon while...
  1. $mod = explode("&", $module);
  2.  
  3. if ($save == $mod[0])
  4. {
  5. $aff = $mod[1];
  6. }
  7. else
  8. {
  9. $aff = $mod[0];
  10. }
  11.  
  12. $save = $mod[0];


Et pourtant il m'affiche toujours $mod[0]
17 Janvier 2007 14:50:02

Je comprends pas ton problème.
(Au fait, while c'est une boucle, pas une fonction.)
Citation :
$save = $mod[0];

Normal que $save contienne $mod[0], non?
17 Janvier 2007 15:57:55

Normalement, mais les ca m'affiche tout les $mod[0], alors que si deux $mod[0] se suivent il doit afficher un $mod[1] à la place...

Pourtant ca ne le fait pas...
17 Janvier 2007 16:49:54

J'avais oublier....

  1. $sql = mysql_query("SELECT `module` FROM `modules."` ORDER BY 'nom' " );
  2. while (list($module) = mysql_fetch_array($sql))
  3. {
  4. $mod = explode("&", $module);
  5.  
  6. if ($save == $mod[0])
  7. {
  8. $aff = $mod[1];
  9. }
  10. else
  11. {
  12. $aff = $mod[0];
  13. }
  14.  
  15. $save = $mod[0];
  16.  
  17. echo "$aff";
  18. }


Et mon probleme est que $mod[1] ne s'affiche pas quand il y a deux $mod[0] qui se suivent...
Ca m'affichera toujours $mod[0]...
a c 145 L Programmation
17 Janvier 2007 17:13:44

tout d'abord, si tu fais un list(), utilise plutôt mysql_fetch_row(), il est inutile de faire forcer le cpu.
Ensuite, il vaut mieux mettre une valeur initiale à $save.
tertio, tu ferais mieux d'utiliser la requète que t'a donné Rakipu qui permet d'optimiser un peu ta recherche.
Dernièrement, tu te retrouves avec un tableau ($mod) pouvant contenir des valeurs identiques? array_unique() pourrait t'aider.
17 Janvier 2007 17:27:29

Merci beaucoup,
$save est defini a l'exterieur de ma boucle.

Le problème avec la requète de Rakipu, c'est qu'elle ne peut pas fonctionner dans se cas.
J'utilise explode, et les données que contient ma base de donné sont du type:

News&index
News&post
Forum&index
Forum&seek

Je voudrais donc que cet exemple donne:

News
post
Forum
seek

Si vous s'avez comment faire...
Merci

a c 145 L Programmation
17 Janvier 2007 17:36:30

ah ok.
Alors la modif est relativement simple.
  1. <?
  2. $sql = mysql_query("SELECT `module` FROM `modules."` ORDER BY 'nom' " );
  3. $total_mod = Array();
  4. while (list($module) = mysql_fetch_row($sql)) {
  5. $mod = explode("&", $module);
  6. foreach ($mod as $curmod) {
  7. $total_mod[] = $curmod; // on ajoute chaque module dans le tableau
  8. }
  9. }
  10. $mods = array_unique($total_mod);
  11. print_r($mods);
  12. ?>

$mods est au final un tableau qui contient la liste des modules sans doublon.
17 Janvier 2007 18:08:26

Je me retrouve avec un tableau ou tout est rentrer dedans....

Je vais pas me lancer dans autre chose, vois tu l'erreur de monde code ?

Sais tu pourquoi mon if est toujours faux ?

17 Janvier 2007 18:08:54

C'est simpa de m'aider ;) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS