J'ai construit un formulaire sur un site qui capture quelques champs, y compris 'email' et le poste sur une base de données que j'ai avec une table nommée 'données'. J'utilise le plugin jQuery Validate pour m'assurer que tous les champs sont complets, bien que je ne puisse pas avoir d'adresses e-mail en double dans la base de données.Comment vérifier l'entrée en double dans la base de données?
Le plugin est venu avec un script nommé emails.php qu'il appelle lors de la vérification des données sur le terrain et voici le code:
<?php
$request = trim(strtolower($_REQUEST['email']));
$emails = array('[email protected]', '[email protected]', '[email protected]');
$valid = 'true';
foreach($emails as $email) {
if(strtolower($email) == $request)
$valid = '"Thats already taken."';
}
echo $valid;
?>
Cet extrait vérifie uniquement les e-mails répertoriés. Existe-t-il un moyen d'interroger la base de données pour rechercher dans la table 'data' et vérifier les 'emails' pour voir s'il y a un doublon et si possible afficher un message d'erreur si c'est le cas?
En outre, le script semble fonctionner lorsque j'utilise l'un des exemples d'e-mails de sorte qu'il fonctionne essentiellement. J'ai juste besoin de le modifier pour vérifier la base de données.
On m'a pensé que le fait d'attraper des erreurs par conception était une erreur. (Je suis d'accord sur l'unicité, mais je ne suis pas sûr que les erreurs de capture est vraiment la plus propre - je fais normalement ce que webbiedave suggère + traitement des erreurs au cas où deux utilisateurs essayent d'insérer le même e-mail après avoir vérifié qu'il n'existe pas). – Unreason
La capture d'une erreur spécifique connue est une conception valide. Attraper et ignorer toutes les erreurs est une erreur. Si vous ne l'aimez pas, il existe d'autres solutions, par exemple dans MySQL vous pouvez faire un INSERT IGNORE et ensuite vérifier le nombre de lignes affectées (0 lignes signifierait que INSERT a échoué). – rustyx