[RESOLU] Comparer 3 valeurs POST

Ardennais08000
Invité n'ayant pas de compte PHPfrance

18 mars 2010, 15:32

Bonjour,

j'ai un soucis avec une comparaison de données provenant d'un formulaire (POST) !

Dans mon formulaire, j'ai 3 champs. Je récupère ensuite les données.

Mais je cherche la solution pour comparer les 3 champs afin qu'aucun des 3 champs soit identique (valeurs différente..) !

Par exemple, lors de la vérification, si un champ est identique à un autre, on affiche une erreur.

J'ai tester pas mal de conditions avec if ( ||, ==..) mais j'ai toujours des erreurs car il faut comparer les 3 champs et non 2 !

Quelqu'un pourrait m'aidé svp ?

Merci beaucoup :)

ViPHP
ViPHP | 5462 Messages

18 mars 2010, 15:45

hello
tu pourrais te servir, de array_unique et faire une comparaison
:wink:

Ardennais08000
Invité n'ayant pas de compte PHPfrance

18 mars 2010, 16:00

Bonjour et merci de ta réponse,

je n'ai jamais utilisé cette fonction :(

Pourrait tu me fournir un exemple concret par rapport à mon problème stp ?

Par avance, merci.

ViPHP
ViPHP | 5462 Messages

18 mars 2010, 16:07

array_unique te dedoublonne ton tableau, si il te dedoublonne rien c'est qu'il n'y a pas de doublons, t'aura juste a faire une comparaison entre les 2 tableaux (array_unique et $_POST)

ViPHP
AB
ViPHP | 5818 Messages

18 mars 2010, 16:16

Tu mets tes trois variables dans un $premier_tableau. Ensuite tu défini un $second_tableau = array_unique($premier_tableau). Comme array_unique dédoublonne un tableau il te suffit de comparer ensuite tes deux tableaux. S'ils sont identiques c'est qu'il n'y a pas de doublons.

Ardennais08000
Invité n'ayant pas de compte PHPfrance

18 mars 2010, 16:41

Re bonjour,

j'ai donc fait ceci mais sans succès :

Code : Tout sélectionner

$verif1 = array("$valeur1, $valeur2, $valeur3"); $verif2 = array_unique($verif1); if($verif1 != $verif2) { echo' blabla...'; }
Help ^^

ViPHP
ViPHP | 5462 Messages

18 mars 2010, 16:45

pour construire un tableau c'est
$arr = array(1, 2, 3);
//pas
$arr = array("1, 2, 3")  //t'as que une valeur ici
et puis pas besoin de construire un autre tableau suffis de le dupliquer :wink:

devlop78
Invité n'ayant pas de compte PHPfrance

24 mars 2010, 15:21

if ($_POST['a'] == $_POST['b'] || $_POST['a'] == $_POST['c'] || $_POST['b'] == $_POST['c']) echo "NOOOOOOOOOOOOOOOOOONNNNN";

ça marche pas ça ???

ViPHP
ViPHP | 5462 Messages

24 mars 2010, 15:26

if ($_POST['a'] == $_POST['b'] || $_POST['a'] == $_POST['c'] || $_POST['b'] == $_POST['c']) echo "NOOOOOOOOOOOOOOOOOONNNNN";

ça marche pas ça ???
essaye :wink:

(oui ca marche)

ViPHP
AB
ViPHP | 5818 Messages

24 mars 2010, 15:37

if ($_POST['a'] == $_POST['b'] || $_POST['a'] == $_POST['c'] || $_POST['b'] == $_POST['c']) echo "NOOOOOOOOOOOOOOOOOONNNNN";

ça marche pas ça ???
Oui mais si j'ai continué également avec la méthode de stealth35 c'est que ça marcherait aussi pour un grand nombre d'éléments, alors qu'avec cette méthode ce serait très vite pénible à écrire. Donc c'est une façon de faire utile à connaître :wink:

devlop78
Invité n'ayant pas de compte PHPfrance

25 mars 2010, 01:33

Oui pour un grand nombre d'éléments, mais pour 3 éléments, te prends pas la tête avec des tableaux !!

ViPHP
ViPHP | 5462 Messages

25 mars 2010, 04:52

Oui pour un grand nombre d'éléments, mais pour 3 éléments, te prends pas la tête avec des tableaux !!
je me tâte pour 3 ca fait commence a être limite... vaux mieux prendre de bonne habitude, a voir...

devlop78
Invité n'ayant pas de compte PHPfrance

25 mars 2010, 17:24

Tu oublies la règle de base : un programmeur est toujours fénéant :shock:

Faire une comparaison avec if (ou encore mieux une terniaire) sur 3 éléments est plus rapide que de faire des opérations sur tableau (compte le nombre d'instructions et le nombre de caractères que tu as écris avec tes petits/gros doigts ...). Moi, je suis fénéant et je préfère

($_POST['a'] == $_POST['b']) ? echo "Méchant doublon !" : echo "Cool !!";

que

$montableau = array($_POST['a'], $_POST['b']);
$tabl_comp = array_unique($montableau);
if (count($montableau) != count($tabl_comp)) { echo "Méchant doublon !"; } else { echo "Cool !!"; }

:) Je suis fénéant lol :mrgreen:

ViPHP
ViPHP | 5462 Messages

25 mars 2010, 17:28

tu triches y'a que 2 valeurs la :mrgreen:
//plus court de faire
if (array_unique($_POST) !== $_POST)) echo "JE SUIS TON PERE";
//que
if ($_POST['a'] == $_POST['b'] || $_POST['a'] == $_POST['c'] || $_POST['b'] == $_POST['c']) echo "NOOOOOOOOOOOOOOOOOONNNNN";

ViPHP
AB
ViPHP | 5818 Messages

26 mars 2010, 01:07

Tu oublies la règle de base : un programmeur est toujours fénéant :shock:
Ah ben oui, mais faut la préparer sa fainéantise.

En utilisant array_unique, si le nombre de champs à comparer venait à passer à quatre, pas besoin de retoucher au code. Autrement faut refaire le besogneux :)