Re: favoris : enregistrements multiples avec m ême clé multiple
JLuc <[email protected]>
| Newsgroups | gmane.comp.web.spip.devel |
|---|---|
| Message-ID | <[email protected]> |
Le 30/11/2020 à 21:21, JLuc a écrit : > Le cas "favoris" manifeste ça de manière assez simple Dans le cas "favoris", le code du plugin ne pourrait pas déclarer UNIQUE la clé triple (id_favori objet id_objet) car il y a aussi un qualificateur `categorie`. Éventuellement ce pourrait être (id_favori objet id_objet categorie)... > mais dans les autres cas, il n'y a pas forcément une clé multiple ; > et indépendamment du symptôme visible = "création d'un double enregistrement" dans la table MYSQL, > il y a tout le code qui se déroule en double sans détecter cette situation ! > -- ce qui peut avoir des effets pas désirables du tout -- Si l'enregistrement double est du à un doubleclic on peut aussi désactiver le lien par javascript après clic. C'est préventif, mais inopérant dans certains cas. Il serait mieux de blinder le code php. JL > > > Le 30/11/2020 à 12:27, JLuc a écrit : >> C'est avec le plugin favoris, >> un peu personnalisé mais ça ne doit pas impacter le sujet. >> Globalement ça se passe comme ça en 3 lignes successives (et donc dans un même hit) : >> 1) on teste et il n'y a pas de favoris pour un couple (id_auteur, id_objet) >> 2) on enregistre ce favori >> 3) Après enregistrement, il y a *plusieurs* favoris avec ce couple >> >> J'imagine que ça se passe quand l'utilisateur doubleclique "Mettre en favori" : >> il y a alors 2 process qui voient simultanément que ce favori n'existe pas, >> et qui l'ajoutent identiquement à la table. >> >> Y a t il une autre explication ? >> Et comment éviter cela ? >> >> Dans spip_favoris il y a un index >> auteur_objet BTREE (id_auteur, id_objet, objet) >> >> Serait ce possible de le rendre UNIQUE ? >> >> Dans le cas de "favoris" là il n'y a pas de conséquences graves >> mais c'est inquiétant de pas maîtriser les enregistrements dans la table >> ... surtout pour des cas similaires sur d'autres tables plus critiques. >