cle primaire

Eléphant du PHP | 110 Messages

05 févr. 2008, 22:18

slt
j'ai une bd qui représente les coordonnées des membres, j'aimerais qu'ils puissent modifier leur coor j'utilise donc la fonction UPDATE, jusque la tout vas bien. ds cette base de donnée ma clé primaire est leur adresse email.
lorsque je modifie n'importe quel champ sauf la cle, ca marche ! mais lorsque je modifie l'email, donc la clé primaire ça ne marche pas et ca ne me renvois meme pas un message erreur.

voila peut être que je ne peut pas modifier ma cle primaire avec UPDATE, peut être avec REMPLACE?
merci
A+

Eléphant du PHP | 396 Messages

05 févr. 2008, 23:20

Eu c'est quand même plus que conseillé d'utiliser un entier comme clé primaire. Ne serait-ce que pour lier tes tables.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 févr. 2008, 00:03

Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 110 Messages

06 févr. 2008, 00:27

slt et merci pour vos conseil
j'avais entre temps entrepris des recherches et en effet c'est idiot d'avoir une clé primaire qui peut changer.
merci zeus pour l'explication qui est tres claire,
une petite question phpmyadmin me déconseille d'avoir la clé primaire sur mon champ index avec autoincrement, pourquoi?
je serais tenté d'avoir un champ index autoincrementé qui serait mon numéro de membre unique et donc ma clé primaire.....
A+

ViPHP
ViPHP | 5924 Messages

06 févr. 2008, 00:31

Tu peux envoyer ta structure (celle que PMA déconseille) ?

Eléphant du PHP | 110 Messages

06 févr. 2008, 08:52

voici la structure
-- Structure de la table `coordonnees`

DROP TABLE IF EXISTS coordonnees;
CREATE TABLE coordonnees (
  `index` int(255) NOT NULL auto_increment,
  nom varchar(255) NOT NULL default '',
  prenom varchar(255) NOT NULL default '',
  email varchar(255) NOT NULL default '',
  adresse varchar(255) NOT NULL default '',
  ville varchar(255) NOT NULL default '',
  code_postal varchar(255) NOT NULL default '',
  pass varchar(255) NOT NULL default '',
  PRIMARY KEY  (index),
  KEY `index` (`index`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

ViPHP
ViPHP | 5924 Messages

06 févr. 2008, 10:44

Alors, 2 petites remarques :
Une taille de 255, c'est inutile pour un champ entier, mets 4, ca suffira…
Tu as mis un index et une clé primaire sur ton champ entier, mais la clé primaire fait déjà office d'index, donx l'index est inutile, donc supprime le.
Normalement c'est tout :)

Eléphant du PHP | 110 Messages

07 févr. 2008, 07:04

slt
j'ignorais que la cle primaire faisait office d'index
merci A+

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]