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 :

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;
	}
Un grand merci à vous ^^