IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

duplicate entry avec unique


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Billets dans le blog
    1
    Par défaut duplicate entry avec unique
    Bonjour,
    j'ai des champs qui sont dans phpmyadmin déclarer en 'unique" volontairement, pour eviter les doublons de saisie...
    lorsque je teste la fonction, j'ai bien a l'ecran " duplicate entry....' comment puis je faire pour avoir un message personalisé du genre, le nom existe dejà...

    merci

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    tu peux désactiver l'affichage des erreurs PHP et utiliser mysql_errno() pour tester le code d'erreur retournée (A priori 1062 pour ton erreur). Ce qui te donne un test du style après ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(mysql_errno() === 1062) {
    die("Le nom existe déjà");
    }
    Par contre je crois pas que tu puisses récupérer le nom du champ sans analyser le retour de mysql_error().

  3. #3
    Membre éclairé

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Billets dans le blog
    1
    Par défaut
    non, ca ne marche pas, voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $mysql_link = require('connect.php');
     
    // Vérification de la validité de la connexion MYSQL
    if($mysql_link)
    {
    // Requete d'insertion MYSQL
    $requete = "INSERT INTO info_produit (nom_produit,cdt,prix,categorie) VALUES ('$nom_produit','$cdt','$prix','$categorie')";
    $execution = mysql_db_query("db0221703", $requete) or die (mysql_error());
     
    $requete2 = "INSERT INTO info_cdt (qt_cdt,u_qt_cdt,prix_u_cdt,nom_produit) VALUES ('$qt_cdt','$u_qt_cdt','$prix_u_cdt','$nom_produit')";
    $execution2 = mysql_db_query("db0221703", $requete2) or die (mysql_error());
     
    $requete3 = "INSERT INTO commande (quantite,cdt,qt_cdt,u_qt_cdt,nom_produit) VALUES ('$quantite','$cdt2','$qt_cdt2','$u_cdt2','$nom_produit')";
    $execution3 = mysql_db_query("db0221703", $requete3) or die (mysql_error());
     
    $requete4 = "INSERT INTO inventaire (unite,nom_produit) VALUES ('$u_cdt3','$nom_produit')";
    $execution4 = mysql_db_query("db0221703", $requete4) or die (mysql_error());
     
    }
     
     
    // La connexion Mysql est indisponible
    else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>Vous avez du faire une erreur : Ce problème se pose soit : <br>- Parce que vous n'avez pas créer la base, ni la table MYSQL;<br>- Parce que vous n'avez pas changé le Mot de passe d'accès a MYSQL dans ce programme (Par défaut, c'est Host : 'localhost', login : 'root', MDP : '[vide]';<br>- Soit vous n'avez pas lancé MYSQL.</font></body></html>";
     
     
    if(mysql_errno() === 1062) {
    die("Le nom existe déjà");
    }

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Il faut le mettre après chaque requête car ça te retourne seulement le code de la dernière requête exécutée.
    Et si tu veux être sûr du numéro d'erreur tu peux déjà tester d'ajouter echo mysql_errno().'<br>'; après chaque requête.

  5. #5
    Membre éclairé

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    if($mysql_link)
    {
    // Requete d'insertion MYSQL
    $requete = "INSERT INTO info_produit (nom_produit,cdt,prix,categorie) VALUES ('$nom_produit','$cdt','$prix','$categorie')";
    $execution = mysql_db_query("db0221703", $requete) or die (mysql_error());
    if(mysql_errno() === 1062) {
    die("Le nom existe déjà");
    }
     
    $requete2 = "INSERT INTO info_cdt (qt_cdt,u_qt_cdt,prix_u_cdt,nom_produit) VALUES ('$qt_cdt','$u_qt_cdt','$prix_u_cdt','$nom_produit')";
    $execution2 = mysql_db_query("db0221703", $requete2) or die (mysql_error());
    if(mysql_errno() === 1062) {
    die("Le nom existe déjà");
    }
     
    $requete3 = "INSERT INTO commande (quantite,cdt,qt_cdt,u_qt_cdt,nom_produit) VALUES ('$quantite','$cdt2','$qt_cdt2','$u_cdt2','$nom_produit')";
    $execution3 = mysql_db_query("db0221703", $requete3) or die (mysql_error());
    if(mysql_errno() === 1062) {
    die("Le nom existe déjà");
    }
     
    $requete4 = "INSERT INTO inventaire (unite,nom_produit) VALUES ('$u_cdt3','$nom_produit')";
    $execution4 = mysql_db_query("db0221703", $requete4) or die (mysql_error());
    if(mysql_errno() === 1062) {
    die("Le nom existe déjà");
    }
     
    }
    comme çà ?? ça ne marche toujours pas ..?

  6. #6
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Oui,
    il faut aussi que tu vires tes
    or die (mysql_error());
    de chaque ligne car en cas d'erreur le code le script s'arrête donc ce qu'il y a après n'est pas exécuté.

Discussions similaires

  1. [MySQL-5.0] Champ unique mais vide au démarrage : Duplicate Entry
    Par Toulousaing dans le forum MySQL
    Réponses: 10
    Dernier message: 04/12/2014, 17h25
  2. Duplicate entry avec save()
    Par Arkeen dans le forum Hibernate
    Réponses: 1
    Dernier message: 25/05/2013, 04h27
  3. Erreur bizarre "Duplicate entry" avec un int(11)
    Par Cedricweb dans le forum MySQL
    Réponses: 4
    Dernier message: 11/03/2009, 11h49
  4. Réponses: 2
    Dernier message: 26/12/2008, 15h34
  5. Réponses: 2
    Dernier message: 16/07/2008, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo