Bonjour à tous,
Je suis confronté à un souci de logique qui je suis sûr à une réponse très simple, mais dont je me suis jamais frotté jusqu'ici !
Je souhaite attribuer un identifiant unique lors de l'enregistrement d'une commande. Pour ce faire, voici les étapes :
#1 : Fonction basique de génération de code aléatoire
#2 : Je check si cet identifiant n'est pas déjà en base
#3: Si non j'enregistre, si oui, je répète l'étape 1 jusqu'à en obtenir un "unique"
#4 : J'enregistre cet identifiant de commande en base.
Le souci c'est que je ne sais pas exprimer cette logique : répéter une étape jusqu'à ce que la condition soit remplie. En passant par des fonctions ?
Ci-dessous une piste de réflexion :
Un grand merci à vous ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 # fonction identifiant de facture : function identifiant() { $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $num_facture = ''; for ($i = 0; $i < 7; $i++) { $num_facture .= $characters[rand(0, $charactersLength - 1)]; } return $num_facture; } # fonction qui enregistre un identifiant unique de facture : function num_facture() { $num_facture = identifiant(); // On vérifie que ce numéro ne soit pas déjà attribué : $query_facture = $bdd->prepare(" SELECT `idfacture` FROM `base` WHERE idfacture = ':num_facture' "); $query_facture ->bindValue(':num_facture', $num_facture, PDO::PARAM_STR); $query_facture->execute(); $total_facture = $query_facture->fetch(); if ($total_facture->rowCount() != 0) { // S'il y a déjà un enregistrement avec cet identifiant : // répéter function ? } return $num_facture; }
Partager