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 :

Eliminer les doublons après un formulaire à nombre de champs variables


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut Eliminer les doublons après un formulaire à nombre de champs variables
    Bonjour à tous,

    Soit un formulaire généré dynamiquement avec une boucle et une variable $nb_champs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form action="" method="post">
    //partie dynamique variable
    <input type="text" name="email[]">
    //fin partie dynamique
    <input type="hidden" name="nb_champs" value="<?=$nb_champs?>">
    Il peut donc y avoir de 1 à 5 champs "email". Je le sais dans le traitement PHP du form grâce au champ caché "nb_champs".
    Mais dans ce cas, comment détecter le fait que le user saisisse plusieurs fois la même adresse email et lui afficher un msg d'erreur ?
    J'ai essayé plusieurs tests, mais ça plante.

    Merci du coup de main.

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    tu pourrais utiliser array_unique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(count(array_unique($_POST['email'])) < $_POST['nb_champs']) {
    	echo $erreur;
    }
    Et si tu veux un truc plus précis array_count_values() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $values = array_count_values($_POST['email']);
    foreach($values as $email => $count) {
    	if($count > 1) {
    		echo $count.' fois le mail '.$email;
    	}
    }
    Vive les roues en pierre

  3. #3
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Merci !

    La 1ère soluce me convient très bien.


    Bonne fin de journée.

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

Discussions similaires

  1. Formulaire à nombre de champs variables
    Par Zombee dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 25/02/2013, 13h39
  2. Formulaire nombres de champs variables
    Par Al4n62 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/05/2009, 10h12
  3. Eliminer les doublons dans un tableau d'entiers
    Par engi dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 21/03/2006, 13h59
  4. Réponses: 1
    Dernier message: 23/02/2006, 23h50
  5. Eliminer les doublons d'un tableau de hachage
    Par dreydrey dans le forum Langage
    Réponses: 21
    Dernier message: 15/11/2005, 15h03

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