8792 sujets

Développement web côté serveur, CMS

Salut à tous Smiley smile

Premièrement, j'aimerai connaître la limite d'un champ id (primaire int). Y-a-t'il une limite dans ce nombre? Si oui, y-a-t'il un moyen d'utiliser les id inférieurs libres?

Ensuite, j'aimerai savoir comment générer un id de x caractères (chiffres + lettres), aléatoirement (soit carrement aléatoirement, soit sur base d'une variable comme un titre par exemple)

Merci d'avance Smiley smile
Salut!

fonic a écrit :
Premièrement, j'aimerai connaître la limite d'un champ id (primaire int). Y-a-t'il une limite dans ce nombre? Si oui, y-a-t'il un moyen d'utiliser les id inférieurs libres?

Il y a bien une limite qui est de 4294967295 (plus de 4 milliards) pour une colone de type INT non signé (UNSIGNE). Si vraiment ça suffit pas, tu peux utiliser le type BIGINT qui à une limite de plus de 9 milliards de milliards.

fonic a écrit :
Ensuite, j'aimerai savoir comment générer un id de x caractères (chiffres + lettres), aléatoirement (soit carrement aléatoirement, soit sur base d'une variable comme un titre par exemple)


En php et avec seulement des chiffres, tu peux essayer la méthode rand. Une identifiant auto-incrémenté garantie des identifiants uniques... ça ne suffit pas dans ton cas?
Administrateur
le type INT limite à l'intervalle -2147483648 ; 2147483647
lorsqu'il est défini en UNSIGNED, l'intervalle va de 0 à 4294967294, ce qui permet de doubler l'intervalle, surtout lorsqu'on l'utilise en clé primaire, habituellement positive.

tu peux également utiliser le type BIGINT : -922337203685477580
8 à 9223372036854775807
ou encore : 0 à 18446744073709551614 en UNSIGNED

pour générer un id aléatoire, tu peux utiliser PHP par exemple :

$nb_caracteres=10;
mt_srand((double)microtime()*1000000);
   $passrand='';
   for($i=0;$i<$nb_caracteres;$i++) {
      $char = mt_rand(97,122);
      $passrand .= chr($char);
}

mais il faudra vérifier à l'insertion que celui-ci n'existe pas déjà

sinon il reste également des solutions de hash avec md5 et sha, pour calculer une clé d'après une chaîne de texte ("sur la base d'une variable").
Merci pour vos réponses très complètes Smiley smile
Cela va bien m'aider!
En fait je peux toujours vérifier si l'identifiant généré aléatoirement est deja present dans la bdd.
Je me demandais, ya-t'il une méthode simple pour récupérer l'id (primaire int par exemple, donc généré par mysql) qui vient d'etre créé? J'avais pensé à rechercher des la création l'id le plus grand (donc forcement le dernier créé). Est-ce fiable si on admet que par exemple 2 insertions peuvent se faire en "meme temps" (ex : 2 utilisateurs qui insèrent en meme temps dans la bdd)

Merci
fonic a écrit :
Je me demandais, ya-t'il une méthode simple pour récupérer l'id (primaire int par exemple, donc généré par mysql) qui vient d'etre créé? J'avais pensé à rechercher des la création l'id le plus grand (donc forcement le dernier créé). Est-ce fiable si on admet que par exemple 2 insertions peuvent se faire en "meme temps" (ex : 2 utilisateurs qui insèrent en meme temps dans la bdd)



La fonction mysql_insert_id fait ça très bien Smiley smile
Hello,

Je crains bien que ce sujet n'ait aucun rapport avec ce qui est attendu dans ce salon Smiley ohwell
A moins que je me trompe (ce qui est possible), ta question n'a strictement aucun lien avec les Standards.

Je vais donc fermer ce sujet (si tu as des soucis, explique-moi tout par Message Prive) et t'orienter vers les forums PHP généralistes évoqués dans le lien que je t'ai donné.