Je crée une application web pour un projet de généalogie. Je souhaite que chaque personne ajoutée à la base de données ait un identifiant unique basé sur les 3 premiers caractères de son nom de famille (appelons-le la "chaîne de nom de famille" par souci d'explication), avec un incrément automatique (de 00001 représente chaque "chaîne de nom de famille" unique.
Exemple : Le nom de famille d'une personne est "Smith". La chaîne du nom de famille sera SMI, et comme il s’agit de la première chaîne de nom de famille « SMI », la référence complète sera SMI00001. Le nom de famille de l'autre personne est Black, donc sa chaîne de nom de famille est BLA, et comme elle est la première personne avec la chaîne de nom de famille BLA, sa référence sera BLA00001. Le nom de famille de la troisième personne est également Smith : il s'agit de la deuxième personne avec la chaîne de nom de famille SMI, son numéro de référence doit donc être SMI00002.
Cet identifiant unique sera utilisé dans l'URL des personnes pour rechercher des personnes dans la base de données et créer des relations entre les personnes.
Je ne sais pas comment résoudre ce problème logiquement.
Je n’ai encore rien essayé. Cela dépasse mon imagination !
Cette méthode est grossière, vous devez généralement utiliser l'incrémentation automatique de la base de données (numéro) ou générer automatiquement un identifiant unique, tel que md5(time().'randomsalt'.$username).
Mais si vous devez utiliser le format XXX00000, vous aurez besoin des fonctions suivantes :
Cela sera très lent après un certain temps, et chaque nom aura un maximum de 99999 chances d'exister, après quoi vous devrez changer le BLA en BL1, BL2, etc.