Se connecter / S'enregistrer
Votre question

refuser un nom déjà présent dans une base de donnée

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
27 Décembre 2006 00:05:58

Bonjour à tous, j'ai fait une toute petite base de donnée (5 champ) avec mysql et php, à partir d'un formulaire je post les valeurs du visiteur dans la base de donnée avec un code élémentaire (suis débutant), tout fonctionne bien mais j'aimerai que si un visiteur entre un nom et prénom déjà inscrit dans la base il reçoive un message d'erreur et aussi que la base ne soit pas mise à jour (NB le champ c'est nom et prénom en même temps avec un espace entre les deux).
Si quelqu'un a un bout de code pour réaliser ce blocage ce serait sympa.
Merci d'avance pour votre aide.

Autres pages sur : refuser nom present base donnee

27 Décembre 2006 00:40:29

je suppose que c'est du php
  1. $sql = "select * from table where chps = '$nom $prenom'";
  2. $res = mysql_query ($sql) or die (mysql_error ());
  3. if (mysql_fetch_row ($res))
  4. {
  5. // erreur
  6. }
  7. else
  8. {
  9. // insertion
  10. }
27 Décembre 2006 06:22:02

Merci de ta réponse rapide coca25 mais j'ai le message d'erreur "Champ 'chps' inconnu dans where clause" pour que tu vois mieux de quoi il s'agit je joints le code complet:
<?php
// Parametres mysql à remplacer par les vôtres
define('DB_SERVER', 'localhost'); // serveur mysql
define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
define('DB_SERVER_PASSWORD', ''); // mot de passe
define('DB_DATABASE', 'toto'); // nom de la base

// Connexion au serveur mysql
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
DB_SERVER_PASSWORD)
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);

$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Le nouveau membre est bien enregistrer dans la base de donnée.";

$message = $msg_erreur;

// vérification des champs

if (empty($_POST['DRIVER']))
$message .= "DRIVER<br/>";
if (empty($_POST['CO_DRIVER']))
$message .= "CO_DRIVER<br/>";
if (empty($_POST['CAR']))
$message .= "CAR<br/>";
if (empty($_POST['YEAR']))
$message .= "YEAR<br/>";


// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {

echo $message;

// sinon c'est ok
} else {

foreach($_POST as $index => $valeur) {
$$index = mysql_real_escape_string(trim($valeur));

}

//contrôle si le nom n'est pas présent dans la table
$sql = "select * from listeengages where chps = '$DRIVER'";
$res = mysql_query ($sql) or die (mysql_error ());
if (mysql_fetch_row ($res))
{
echo "Ce nom et prénom existe déjà dans la table, introduisez un autre.";
}
else
{
echo "Ce nom et prénom seront ajouté dès validation.";
}
//fin du contrôle du nom



$sql = "INSERT INTO listeengages(num , DRIVER, CO_DRIVER,CAR, YEAR) VALUES('','$DRIVER','$CO_DRIVER','$CAR','$YEAR')";

$res = mysql_query($sql);

if ($res) {
echo $msg_ok;
//affiche le lien pour voir la liste des engagés modifiée
echo "<a href= \"tableau.php\"> cliquez ici pour voir la liste des engagés mise à jour</a>";
//fin de l'affiche du lien
} else {
echo mysql_error();
}

}
?>

Merci d'avance pour ton aide coca25
Contenus similaires
Pas de réponse à votre question ? Demandez !
27 Décembre 2006 10:54:09

je connais pas le schema de ta base, t'as remplacé le reste, remplaces aussi chps par la colonne qu'il faut
27 Décembre 2006 21:55:44

oui ça fonctionne coca j'ai placé 'driver mais le problème est que la suite des instructions continuent et j'ai bien le message "ce nom est déjà dans la base introduisez un autre" mais il est quand même ajouté à la table, comment stopper l'exécution du reste du code et ainsi éviter d'ajouter quand même le nom qui y est déjà.
Merci coca
a c 145 L Programmation
27 Décembre 2006 22:36:33

Voila une partie de ton code commentée, je pense que tu trouveras la solution
  1. //contrôle si le nom n'est pas présent dans la table
  2. $sql = "select * from listeengages where chps = '$DRIVER'";
  3. $res = mysql_query ($sql) or die (mysql_error ());
  4. if (mysql_fetch_row ($res)) {
  5. echo "Ce nom et prénom existe déjà dans la table, introduisez un autre.";
  6. } else {
  7. echo "Ce nom et prénom seront ajouté dès validation.";
  8. }
  9. //fin du contrôle du nom
  10.  
  11. // ON SORT DES CONDITIONS
  12.  
  13. $sql = "INSERT INTO listeengages(num , DRIVER, CO_DRIVER,CAR, YEAR) VALUES('','$DRIVER','$CO_DRIVER','$CAR','$YEAR')";
  14. // EXECUTION DE LA QUERY
  15. $res = mysql_query($sql);
  16.  
  17. // ON REFAIT LES CONDITIONS
  18. if ($res) {
  19. echo $msg_ok;
  20. //affiche le lien pour voir la liste des engagés modifiée
  21. echo "<a href= \"tableau.php\"> cliquez ici pour voir la liste des engagés mise à jour</a>";
  22. //fin de l'affiche du lien
  23. } else {
  24. echo mysql_error();
  25. }
  26. ?>
27 Décembre 2006 23:45:48

voilà j'ai introduit ceci //contrôle si le nom n'est pas présent dans la table
$sql = "select * from listeengages where DRIVER = '$DRIVER'";
$res = mysql_query ($sql) or die (mysql_error ());
if (mysql_fetch_row ($res))
{
echo "Ce nom et prénom existe déjà dans la table, introduisez un autre.";
$sq2 = mysql_close(DB_DATABASE);
$res2 = mysql_query ($sq2);
}
else
{
echo "OK.";

}
//fin du contrôle du nom

malheureusement les lignes $sq2 = mysql_close(DB_DATABASE);
$res2 = mysql_query ($sq2); ne déconnecte pas la base et n'arrête donc pas l'introduction du nom dans la base?? ben oui pas évident pour un débutant, erreur de syntax??
28 Décembre 2006 06:31:46

SUPER, un grand merci coca d'une part pour ta solution et d'autre part pour le lien, évidemment je vois que j'ai affaire à un expert.
moi je débute et j'avance petit à petit, cette petite base de donnée que je réalise est pour un ami, j'aimerai faire une aussi pour moi mais mon hébergeur ne me le permet pas, connais tu un hébergeur gratuit qui permet la gestion d'une petite bd?
Et enfin tout fonctionne maintenant pour la gestion de ma petite bd , il me reste cependant une petite chose c'est de mettre un mot de passe sur la page php pour que n'importe qui ne puisse pas faire une entrée ou une modification, je vais donc rechercher dans les sites php.
A bientôt coca et encore merci
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS