Recuperer le NOM d'une clé UNIQUE
Hors lignePalleas Le 29/05/2006 à 12:55 Profil de Palleas Configuration de Palleas

Bonjour

J'ai vu sur un site une méthode pour empecher les  doublons dans une table : l'utilisation des clés unique, un des derniers articles de votre site m'a convaincu du bien fondé de cette méthode. J'ai une table membre avec cette structure :

id (clé primaire / auto increment)
pseudo
...
...
pseudo
nom_p
prenom_p

Pour cette methode j'ai mis une clé sur pseudo donc : UNIQUE pseudo (pseudo)
et une autre pour eviter un même couple pour le nom/prenom du personnage  donc : UNIQUE personnage (nom_p,prenom_p)

Cette méthode avait por moi pour but de remplacer les senpiternels SELECT COUNT(id) FROM table WHERE pseudo='toto', et ca marche quand j'essaie de faire une insertion dans phpmyadmin j'ai bien l'erreur 1062 :


phpmyadmin a écrit :
#1062 - Duplicate entry 'Palleas' for key 2
pour le pseudo
ou alors :
phpmyadmin a écrit :
#1062 - Duplicate entry 'toto-toto' for key 2
pour le couple prenom/nom du personnage

Y aurait il un moyen de récuperer le nom de la clé qui pose probleme ? Genre si c'est le couple prenom/nom qui est deja pris, me retourner "personnage", sinon si c'est le pseudo qui est deja pris me retourner "pseudo", ou même un chiffre caracteristique de la clé qui pose probleme ?
Sinon suis-je obligé en cas d'erreur de faire cette fois mes "SELECT count(id) FROM table WHERE blablabla" et dans ce cas la autant les faire directement non ?

Merci d'avance =)
--
draco dormien nunquam titillandus
Hors ligneAnthony Le 29/05/2006 à 13:20 Profil de Anthony Configuration de Anthony

Admin
--

Hors lignePalleas Le 29/05/2006 à 18:26 Profil de Palleas Configuration de Palleas

Effectivement j'en apprend un peu plus sur les clé, ais comment je fais moi si je veux qu'il me retourne le nom de la clé qui bloque ?
--
draco dormien nunquam titillandus
Hors ligneAnthony Le 29/05/2006 à 20:35 Profil de Anthony Configuration de Anthony

Admin
Lorsque tu affiches toutes les clés, quand tu seras au nombre "2" ça sera la clé correspondante (je sais pas si j'ai été clair).
--

Hors lignePalleas Le 29/05/2006 à 21:26 Profil de Palleas Configuration de Palleas

Quand je fais ça :


<?php
include 'connection.php';

$sql="INSERT INTO membres_ws (pseudo) VALUES('Palleas')";
if(
mysql_query($sql)) {
     echo 'cool !';
} else {
     $req=mysql_query('SHOW INDEX FROM membres_ws');
     while($data=mysql_fetch_assoc($req)) {
          echo '<pre>';
          print_r($data);
          echo '</pre>';
     }
}
?>


J'obtiens ca :
phpmyadmin a écrit :

Array
(
    [Table] => membres_ws
    [Non_unique] => 0
    [Key_name] => PRIMARY
    [Seq_in_index] => 1
    [Column_name] => id
    [Collation] => A
    [Cardinality] => 2
    [Sub_part] =>
    [Packed] =>
    [Null] =>
    [Index_type] => BTREE
    [Comment] =>
)

Array
(
    [Table] => membres_ws
    [Non_unique] => 0
    [Key_name] => personnage
    [Seq_in_index] => 1
    [Column_name] => nom_p
    [Collation] => A
    [Cardinality] =>
    [Sub_part] =>
    [Packed] =>
    [Null] =>
    [Index_type] => BTREE
    [Comment] =>
)

Array
(
    [Table] => membres_ws
    [Non_unique] => 0
    [Key_name] => personnage
    [Seq_in_index] => 2
    [Column_name] => prenom_p
    [Collation] => A
    [Cardinality] => 2
    [Sub_part] =>
    [Packed] =>
    [Null] =>
    [Index_type] => BTREE
    [Comment] =>
)

Array
(
    [Table] => membres_ws
    [Non_unique] => 1
    [Key_name] => pseudo
    [Seq_in_index] => 1
    [Column_name] => pseudo
    [Collation] => A
    [Cardinality] =>
    [Sub_part] =>
    [Packed] =>
    [Null] =>
    [Index_type] => BTREE
    [Comment] =>
)



Je dois avouer que je m'y perd un peu
--
draco dormien nunquam titillandus
Hors ligneAnthony Le 29/05/2006 à 21:37 Profil de Anthony Configuration de Anthony

Admin
Ici ça correspondrait à "nom_p" qui est la deuxième clé à s'afficher :)
--

Hors lignePalleas Le 31/05/2006 à 19:12 Profil de Palleas Configuration de Palleas

Sauf que l'erreur est sur "pseudo" et que j'ai la même erreur pour "nom_p" et "prenom_p"


Duplicate entry 'toto-toto' for key 2
--
draco dormien nunquam titillandus
Hors ligneAnthony Le 31/05/2006 à 20:55 Profil de Anthony Configuration de Anthony

Admin
Quelle est la structure de ta table (complète stp)
--

Hors ligneSweetdevil Le 01/06/2006 à 11:41 Profil de Sweetdevil Configuration de Sweetdevil

Viconaute ninja
Mmm, celle-ci elle est belle: l'admin du site qui mets des liens non cliquables... Comment je t'aurais édité ça en rouge fluo moi (marculinos, tu dors?)...

--
Linux, il y a moins bien mais c'est plus cher.
Hors ligneAnthony Le 01/06/2006 à 13:04 Profil de Anthony Configuration de Anthony

Admin
Il est où mon lien non cliquable ? je le vois pas

Les modés ne peuvent éditer mes messages

Je vais rajouter une fonction de linkage automatique du lien car ça commence à bien faire ces liens cliquables, c'est pas pratique
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels