Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 14h36   #1
Futur Membre du Club
 
Inscription : mai 2008
Messages : 52
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 52
Points : 15
Points : 15
Par défaut Populate plusieurs champs avec une même valeur

Bonjour,

Je réalise un bête formulaire de modification d'une ligne dans une table SQL. Je n'utilise pas d'id auto-incrémentable, mais le champs 'name' comme clef primaire.

Donc, dans le formulaire, j'ai un champs texte 'Name' qui se remplis automatiquement avec la bonne valeur. L'utilisateur peut le modifier.
Toutefois, pour pouvoir appeler la ligne à modifier lors de l'envoie du formulaire, je veux stocker le Nom d'origine dans un input hidden appelé 'old name'.

Donc, mes champs de formulaire Name et Old Name doivent être remplis avec la même valeur name par populate.

Comment faire ?
dedis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 19h22   #2
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Salut,

Tu es devant un problème de conception.
La clef primaire ne devrait pas être modifiable par formulaire (ni par un autre moyen d'ailleurs).

Ne peux tu pas changer le schéma de la base donnée ?
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 14h25   #3
Futur Membre du Club
 
Inscription : mai 2008
Messages : 52
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 52
Points : 15
Points : 15
Merci de m'éclairer J'essaie de coder de plus en plus propre, et je suis prêt à prendre en compte toutes les remarques de ce type.

Je peux utiliser des id auto incrémentés. Toutefois, il me semble que les index se mettent en place automatiquement sur les clefs primaires. Or, avoir un index sur un id n'est pas très intéressant, puisque la majorité des requêtes vont consister à faire des recherches sur les clefs primaires 'naturelles' (nom, titre, etc.). C'est encore plus vrai pour les tables de relations. De plus, cela permet de véritablement exploiter les fonctions du SGBD du type contrôle des doublons etc.

Bref, je ne suis pas persuadé que mettre des ids auto incrémentés partout soit une très bonne pratique. Sur quoi est basé le principe de ne pas permettre à l'utilisateur de modifier les clefs primaires ?
dedis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 15h03   #4
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Citation:
Envoyé par dedis Voir le message
Sur quoi est basé le principe de ne pas permettre à l'utilisateur de modifier les clefs primaires ?
C'est surtout pour le maintien de l'intégrité de ta base de données.
En effet, mettre à jour une clef primaire va t'obliger à cascader sur toutes les tables qui utilisent cette clé comme clé étrangère.

Pour ce qui est de maintenir tes contrainte d'unicité, les indexes uniques sont faits pour cela.

Citation:
La majorité des requêtes vont consister à faire des recherches sur les clefs primaires 'naturelles' (nom, titre, etc.). C'est encore plus vrai pour les tables de relations.
Lorsqu'il s'agit de relations, les recherches porteront sur l'id (qui sera une clé étrangère pour les autres tables), ce qui est très performant.
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 15h07   #5
Futur Membre du Club
 
Inscription : mai 2008
Messages : 52
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 52
Points : 15
Points : 15
oki, c noté boss

Existe-t-il un livre ou un wiki où ces problématiques de bonnes pratiques et de performance sont sérieusement abordées ?
dedis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2011, 16h59   #6
Modérateur
 
Avatar de s.n.a.f.u
 
Homme
Développeur Web
Inscription : août 2006
Messages : 2 700
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : août 2006
Messages : 2 700
Points : 3 357
Points : 3 357
Cet article pose déjà de bonnes bases : http://sqlpro.developpez.com/cours/optimiser/
__________________
  • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
  • Merci d'utiliser les balises de code (# dans l'éditeur)
  • Si votre problème est réglé, merci d'utiliser le bouton
S.N.A.F.U
s.n.a.f.u est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h55.


 
 
 
 
Partenaires

Hébergement Web