Des doublons se créent dans ma table - PHP - Programmation
Marsh Posté le 22-05-2017 à 14:24:05
Bonjour, merci de mettre le code dans la balise correspondante car c'est illisible.
Marsh Posté le 22-05-2017 à 15:44:47
Maybel je veux bien j'ai regardé dans le me,u de l'editeur de texte du forum mais je trouve pas de bouton prevu pour des balises
Marsh Posté le 22-05-2017 à 13:14:08
Bonjour
J’ai créé une table dans laquelle j’enregistre via un formulaire les données suivantes : « prenom » , « email » , et « age »
Pour les enregistrer dans la table, j’ai essayé au début de mon code de mettre quelques filtres, afin d’empêcher que les utilisateurs n’introduisent n’importe quoi dans ma table, jusque-là tout fonctionne nickel , ensuite dans une deuxième étape je vérifie d’abord si ce nouveau enregistrement se trouve déjà inscrit dans la table si tel est pas le cas je n’autorise pas l’enregistrement au cas contraire je l’autorise dans une troisième étape. Maintenant mon problème se situe au niveau de cette dernière étape c’est-à-dire que je me suis rendu compte que même si l’enregistrement existe déjà dans la table ceci n’empêche pas son enregistrement dans la table.
Voici mon code
<html >
<body>
<form action='validation_enregistrement_bd.php' method='POST'>
Prénom :
<input type="text" name="prenom"/><br/>
Adresse de messagerie :
<input type="text" name="email"/><br/>
Âge :
<input type="INT" name="age"/><br/>
<input type="submit" value="Envoyer"/>
</form>
<?php
//Filtrer toutes les données du formulaire
$options = array(
//Enlever les balises.
'prenom' => FILTER_SANITIZE_STRING,
//Valider l'adresse de messagerie.
'email' => FILTER_VALIDATE_EMAIL,
'age' => array(
'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
'options' => array(
'min_range' => 0 //Minimum 0.
)
)
);
$resultat = filter_input_array(INPUT_POST, $options);
if($resultat != null)
{ //Si le formulaire a bien été posté.
//Enregistrer des messages d'erreur perso.
$messageErreur = array(
'email' => 'L\'adresse de messagerie n\'est pas valide.',
'age' => 'Veuillez entrer un nombre entier positif pour votre âge.'
);
$nbrErreurs = 0;
foreach($options as $cle => $valeur)
{ //Parcourir tous les champs voulus.
if(empty($_POST[$cle]))
{ //Si le champ est vide.
echo 'Veuillez remplir le champ ' . $cle . '.<br/>';
$nbrErreurs++;
}
elseif($resultat[$cle] === false)
{ //S'il n'est pas valide.
echo $messageErreur[$cle] . '<br/>';
$nbrErreurs++;
}
}
// Si les données saisies dans le formulaire respectent les formes exigées alors...
if($nbrErreurs == 0)
{
if ( isset( $_POST['prenom'] ))
{
$rechpren = $_POST['prenom'];
$rechadresse = $_POST['email'];
$rechage = $_POST['age'];
// On verrifie d'abord l'eventuelle existence de l'enregistrement dans la table
try
{
$bdd = new PDO('mysql:host=localhost;dbname=comptes','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// On récupère d'abord l'engistrement liee a la fiche du client dans la table ''clients''
$req = $bdd->prepare('SELECT prenom,email,age FROM clients WHERE prenom= renom ');
$req-> execute(array(
'prenom'=> $rechpren ,
));
$count = $req->rowCount();
//On affiche chaque entrée une à une
while ($donnees = $req->fetch())
if($count> 0)
// {
// echo 'Ce client a ete deja enregistre';
// }
// Si le client existe dans la table on affichera
{
echo 'Ce client a ete deja enregistre';
echo $donnees['prenom'].'.......'.$donnees['email'].'........................'.$donnees['age'].'<br><br/>';
}
$req->closeCursor(); // Termine le traitement de la requête
}
else
// L'enregistrement n'existe pas dans la table on l'effectue
try
{
$bdd = new PDO('mysql:host=localhost;dbname=comptes','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
{
$req = $bdd->prepare('INSERT INTO clients (prenom, email,age) VALUES(:prenom, :email,:age)');
$req->execute(array(
'prenom' =>$rechpren ,
'email' => $rechadresse,
'age' =>$rechage
));
{
echo 'Client enregistre';
}
$req->closeCursor();
}
}
}
else
{
echo 'effectuez votre premier enregistrement de cette session.';
}
?>
</body>
</html>