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 :

Pb avec la commande array_unique().


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 121
    Points : 64
    Points
    64
    Par défaut Pb avec la commande array_unique().
    Bonjour à tous,

    Voici mon petit problème :

    J'utilise la fonction array_unique() mais elle me donne pas le résultat attendu.
    Je vous mets le bout de code pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $annonce = array("1","1","2","2","3","3");
    $annonce1 = array_unique($annonce);
    foreach ($annonce1 as $val)
    {
      echo "<p><b>".$val."</b<</p>";
    }
    Est-ce que vous pouvez me dire si j'utilise correctement la fonction ?
    Sinon comment il faut faire ?
    J'utilise la version 5.2.8 de PHP. J'utilise cette version avec WAMP.

    Merci
    Dimitri.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    quelle est le résultat attendu et ce que tu as actuellement,

    sinon tes balises sont fausses

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    quelle est le résultat attendu et ce que tu as actuellement,

    sinon tes balises sont fausses
    Merci pour votre réponse.
    Je vais vous donner un exemple plus parlant.
    Voici le fichier "Test". Ce fichier a la structure suivante :
    test_id clé unique INT.
    test_nom VARCHAR(200)
    test_prenom VARCHAR(200).
    J'ai ajouté 3 enregistrements :

    0 "DUPAND" "JACQUES"
    1 "DUPAND" "GEORGE"
    2 "CHIRAC" "NICOLAS"
    3 "CHOUCHOU" "JEAN"
    J’exécute la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $sql_test = 'SELECT * FROM test';
    $req_test = mysql_query($sql_test) or die('Erreur SQL !<br />'.$sql_test.'<br />'.mysql_error());
    while ($row = mysql_fetch_assoc($req_test)) 
    {
    	$tableau = array($row['test_nom']);
    	$tableau1 = array_unique($tableau);
    	foreach ($tableau1 as $val)
    	{
            	echo "<p><b>".$val."</b></p>";
    	}
    }
    Quand j'affiche la valeur de ma variable $val, au lieu d'avoir :

    DURAND
    CHIRAC
    CHOUCHOU
    j'obtiens:

    DURAND
    DURAND
    CHIRAC
    CHOUCHOU.
    Cordialement,
    Dimitri.

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    array_unique ne fonctionne pas dans ton cas car tu change à chaque itération le tableau $row.
    Une solution simple serait d'utiliser un cache:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $sql_test = 'SELECT * FROM test';
    $req_test = mysql_query($sql_test) or die('Erreur SQL !<br />'.$sql_test.'<br />'.mysql_error());
    $res = array();
    while (($row = mysql_fetch_assoc($req_test)) && !in_array( $row['test_nom'], $res)) 
    {
         $res[] = $row['test_nom'];
         echo "<p><b>{$row['test_nom']}</b></p>";	
    }
    Enjoy

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est plutôt a faire au niveau de la requête ca

  6. #6
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Oui avec une clause DISTINCT ça se fait très simplement.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Benjamin Delespierre Voir le message
    Oui avec une clause DISTINCT ça se fait très simplement.
    Merci pour vos réponse.
    Finalement j'ai trouvé une erreur au niveau de mon code PHP.
    J'ai resolu cette erreur et ça marche maintenant.

    Cordialement
    Dimitri.

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

Discussions similaires

  1. Problème avec la commande su
    Par leng dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 10/02/2005, 17h31
  2. Comment envoyer un mail avec la commande mail
    Par pi3141563 dans le forum Réseau
    Réponses: 5
    Dernier message: 21/10/2004, 13h34
  3. Problème avec la commande tar
    Par R3iTt0R dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 01/09/2004, 10h06
  4. Comment aller a la ligne avec la commande ECHO
    Par juflata dans le forum Windows
    Réponses: 3
    Dernier message: 23/06/2004, 17h11
  5. Prblème avec la commande system
    Par AnneOlga dans le forum C++Builder
    Réponses: 8
    Dernier message: 04/03/2004, 16h05

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