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 :

[Tableaux] Ne pas afficher les doublons d'un tableau de tableaux


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut [Tableaux] Ne pas afficher les doublons d'un tableau de tableaux
    Bonjour,

    déjà j'espère poster dans la bonne section :/

    Voici mon problème : j'ai fait une requête SQL et grâce à elle, je crée deux tableaux de tableaux.
    Voici mon second "tableau de tableaux" n'utilisant qu'un champ de la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $V[$j] = array(descD => $j,
                        valC1  => $R['login'],
    		);
    $j++;
    Si je fais un var_dump($V), voici la structure de tableau que j'obtiens :

    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
     
    array(3) {
      [0]=>
      array(1) {
        ["labels"]=>
        string(6) ",Login"
      }
      [1]=>
      array(2) {
        ["descD"]=>
        int(1)
        ["valC1"]=>
        string(6) "pseudo"
      }
      [2]=>
      array(2) {
        ["descD"]=>
        int(2)
        ["valC1"]=>
        string(6) "pseudo"
    (pseudo correspond à $R[login] dans le tableau)
    Je peux donc avoir plusieurs logins, mais si j'obtiens plusieurs fois le même je voudrais ne l'afficher qu'une seule fois dans mon tableau.

    J'ai testé le array_unique mais ça ne marche pas vu qu'apparemment il ne faut pas avoir des tableaux l'un dans l'autre.
    J'ai testé le in_array('valeur_en_cours',$V) mais ça ne marche pas non plus.
    J'ai voulu tester aussi quelque chose du genre : si élément_en_cours = élement_en_cours - 1 (donc élément précédent) alors on n'affiche pas et on passe au suivant.
    J'ai testé avec next et prev, mais rien à faire.

    Le DISTINCT dans ma requête n'est pas faisable puisque je gère deux tableaux via ma requête. Donc je dois pouvoir gérer ça uniquement via le php.

    Là j'avoue que je ne vois pas trop d'autres solutions, donc si vous pouviez m'aider ...

  2. #2
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    et un truc de ce genre cela fonctionnerait t'il?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while ($row = mysql_fetch_row($sql))
    {
    $chaine = explode(",",$row[0]);
     
    $tableau_total = array_merge($tableau_total,$chaine);
    $tableau_total = array_unique($tableau_total);
    $tableau_total = array_merge($tableau_total);
     
    }

  3. #3
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Hum, ça n'a pas l'air de fonctionner :/

    Voila l'erreur que ça me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Supplied argument is not a valid MySQL result resource
    Edit : erreur enlevée, mais rien ne se produit à l'affichage ><

  4. #4
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    hum, pas facile tout cela.

    essaie ceci à tout hasard :

    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
     
    $tableau_login = array();
    while($tableau_login = mysql_fetch_assoc($Q4)){
     
       $tableau_login = split(',', $tableau_login['login']);
       foreach($tableau_login as $login){
                $login = trim($login);
                if(!in_array($login, $login)){
                         $login[] = $login;
                }
       }
    }
    sort($login); 
     
    // affichage de la liste des login pour tester
     
    foreach($login as $login){
       echo $login.'<br />';
    }
    petite note : teste avec les my_sql_fetch_array pour le moment, si sa marche tu peux remplacer par les dbifetch.

  5. #5
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Merci kifouillou pour l'aide mais ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Invalid argument supplied for foreach()
    Je cherche encore et toujours x)

  6. #6
    Membre régulier Avatar de kifouillou
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 270
    Points : 84
    Points
    84
    Par défaut
    autant pour moi,

    j'ai mélangé un peu :

    Voici la version corrigée :

    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
     
    $tableau_login = array();
    while($R = mysql_fetch_assoc($Q)){
     
       $R = split(',', $R['login']);
       foreach($R as $login){
                $login = trim($login);
                if(!in_array($login, $tableau_login)){
                         $tableau_login[] = $login;
                }
       }
    }
    sort($tableau_login); 
     
     
    foreach($tableau_login as $login){
       echo $login.'<br />';
    }

  7. #7
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Nickel ! Merci kifouillou =)

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

Discussions similaires

  1. Ne pas afficher les doublons
    Par steph1014 dans le forum Outils
    Réponses: 6
    Dernier message: 21/04/2010, 16h43
  2. Ne pas afficher les doublons dans mon rapport
    Par shallum dans le forum Jasper
    Réponses: 6
    Dernier message: 06/01/2010, 17h10
  3. Réponses: 2
    Dernier message: 21/04/2009, 21h10
  4. ne pas afficher les doublons
    Par zangel dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 05/10/2008, 18h06
  5. ne pas afficher les doublons
    Par axamen dans le forum SQL
    Réponses: 17
    Dernier message: 23/05/2007, 13h45

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