Recherche doublon de $_post sur formulaire dynamique
Posté : 26 janv. 2018, 19:14
Bonjour à tous,
Si je suis là c'est que je galère depuis 3 jours sur un formule de doublon pour un formulaire dynamique.
J'entends formulaire dynamique par le fait que le formulaire peut se répéter plusieurs fois avec les mêmes champs sur la même page.
Mon formulaire dynamique :
Pour une recherche de doublons dans la base de données pas de problème.
Mais avant d'enregistrer dans ma base je voudrais rechercher si les formulaires envoyés ne contiennent pas le même nom et prénom pour éviter d'enregistrer 2 fois la même personne à la volée.
Pour le moment je teste que sur le nom.
1er essai : doublon ou pas doublon même résultat
2eme essai : avec une fonction "existenceDoublons" qui utilise "array" mais ça ne prend pas en compte la liste des noms dynamiques.
erreur => array_count_values() expects parameter 1 to be array, string given
Je solicite donc votre aide pour m'orienté.
Merci à vous de prendre du temps pour voir cela.
Hugo_064
Si je suis là c'est que je galère depuis 3 jours sur un formule de doublon pour un formulaire dynamique.
J'entends formulaire dynamique par le fait que le formulaire peut se répéter plusieurs fois avec les mêmes champs sur la même page.
Mon formulaire dynamique :
Code : Tout sélectionner
$card_nbr = 3; // le nombre de formulaire à afficher sur la page, ce chiffre peut varier (je le récupère à la volée, ici 3 pour l'exemple)
for ($i=0; $i<$card_nbr; $i++) {
$ni = $i+1;
echo '<strong>adhérent'.$ni.'</strong>';
?>
<div style=" width:100%; text-align:center">
<div style="float:left; width:30%; text-align:left; color:#001040"><?php echo ENTRY_LASTNAME; ?></div>
<div style="float:left; text-align:left;"><input type="text" name="lastname[]" value="<?php echo $lastname[$i];?>"></div>
<div class="clearfix"></div>
<div style="float:left; width:30%; text-align:left; color:#001040"><?php echo ENTRY_FIRSTNAME; ?></div>
<div style="float:left; text-align:left;"><input type="text" name="firstname[]" value="<?php echo $firstname[$i];?>"></div>
<div class="clearfix"></div>
<div style="float:left; width:30%; text-align:left; color:#001040""><?php echo ENTRY_EMAIL; ?></div>
<div style="float:left; text-align:left;"><input type="text" name="email[]" value="<?php echo $email[$i];?>"></div>
<div class="clearfix"></div>
<div style="float:left; width:30%; text-align:left; color:#001040""><?php echo ENTRY_TEL; ?></div>
<div style="float:left; text-align:left;"><input type="text" name="tel[]" value="<?php echo $tel[$i];?>"></div>
<div class="clearfix"></div>
<div style="float:left; width:30%; text-align:left; color:#001040""><?php echo ENTRY_CITY; ?></div>
<div style="float:left; text-align:left;"><input type="text" name="city[]" value="<?php echo $city[$i];?>"></div>
<div class="clearfix"></div>
</div>
<?php
}
?>
Pour une recherche de doublons dans la base de données pas de problème.
Mais avant d'enregistrer dans ma base je voudrais rechercher si les formulaires envoyés ne contiennent pas le même nom et prénom pour éviter d'enregistrer 2 fois la même personne à la volée.
Pour le moment je teste que sur le nom.
1er essai : doublon ou pas doublon même résultat
Code : Tout sélectionner
$lastname = $_POST['lastname'];
$firstname = $_POST['firstname'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$city = $_POST['city'];
for ($i = 0, $count = count($lastname); $i < $count; $i++){
if ($lastname[$i] == $lastname[$i++]) {
$error_doublon = true;
}
}
if($error_doublon == true){
echo ERROR_DOUBLON;
}
2eme essai : avec une fonction "existenceDoublons" qui utilise "array" mais ça ne prend pas en compte la liste des noms dynamiques.
erreur => array_count_values() expects parameter 1 to be array, string given
Code : Tout sélectionner
$lastname = $_POST['lastname'];
$firstname = $_POST['firstname'];
$email = $_POST['email'];
$tel = $_POST['tel'];
$city = $_POST['city'];
function existenceDoublons($tableau){
$doublons = false; // valeur pas défaut
$freq = array_count_values($tableau);
// frequence de chaque valeur du $tableau
foreach ($freq as $valeur){
if ($valeur != 1){
$doublons = true;
break; // on sort de la boucle
}
}
return $doublons;
}
for ($i = 0, $count = count($lastname); $i < $count; $i++){
$a.= $lastname[$i].", ";
}
$liste = substr($a, 0, -2);
if(existenceDoublons($liste) == true){
echo ERROR_DOUBLON;
}
Merci à vous de prendre du temps pour voir cela.
Hugo_064