8792 sujets

Développement web côté serveur, CMS

Bonjour à tous!

Voilà je programme un site Intranet, avec entre autre une page qui permet d'ajouter des ordinateurs à une base de donnée(mysql).

Je veux générrer des numéros de machines.
j'ai pour ça utiliser une méthode toute bête et simple.

//-- Script de numéro de machine ---//
												$date_base = date('ymd');
											//Conditions des valeurs du nombre de base de machine //
												if($result < 10)
												{$nbr_base = '000000';}
												if($result >= 10)
												{$nbr_base = '00000';}
												if($result >= 100)
												{$nbr_base = '0000';}
												if($result >= 1000)
												{$nbr_base = '000';}
												if($result >= 10000)
												{$nbr_base = '00';}
												if($result >= 100000)
												{$nbr_base = '0';}
												if($result >= 1000000)
												{$nbr_base = '';}
											
											$nbr = $result +1;
											$machine_number =  "$type$date_base$nbr_base$nbr";
											//Fin du Script de numéros de machines //


Il faut savoir que $result correspond à
$sql = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM machines");
$retour_sql = mysql_fetch_array($sql);
$result = $retour_sql['nbre_entrees'];


La variable $machine_number comporte donc toute les valeur pour créé un numéro de machine.
$type est récuppérrer a partir d'un $_POST.

Le tout est ensuite entré dans mysql.
Tout fonctionne parfaitement ou preque..

Quand les 9 premières machines sont rentrées dans la bdd, on a bien : xx.xxxxxx.0000001
xx.xxxxxx.0000009
et arrivé à la dixième entrée j'ai :
xx.xxxxxx.xxxxxxx10
Un zéro de tro donc.
par contre une fois arrivé à la onzième entrée :
xx.xxxxxx.xxxxxx11
sa repars normalement....

J'en conclus que le problème se situe dans les conditions, mais où et comment ?

Merci d'avance Smiley smile
Modifié par harddream (16 Mar 2007 - 11:20)
essaie comme ca plutot :

if($result < 10) {$nbr_base = "000000";}
elseif ($result < 100) {$nbr_base = "00000";}
elseif ($result < 1000) {$nbr_base = "0000";}
elseif ($result < 10000) {$nbr_base = "000";}
elseif ($result < 100000) {$nbr_base = "00";}
elseif ($result < 1000000) {$nbr_base = "0";}
else{$nbr_base = "";}
Salut,
tu as essayé <=9 pour la première condition ?
si ça ne marche pas, je me pencherai là dessus, j'adore ce genre de truc Smiley smile
Have swing
Tu ne penses pas qu'il serait plus simple d'utiliser str_pad pour ajouter le bon nombre de 0 automatiquement ? c'est beacoup plus facile que de gérer une série de conditions.
Renseigne-toi dans la doc de php.net pour savoir comment utiliser cette fonction.
Salut,
QuentinC a raison, il te suffit d'écrire
$nbr=str_pad($nbr, 8, "0", STR_PAD_LEFT);
et ensuite de faire ta concaténation comme ça
$machine_number =  "$type$date_base$nbr";
et hop, le tour est joué
Have swing
Cette fonction est super, je la connaissais pas. Smiley murf
Vraiment très pratique! Smiley biggrin

Merci à tous pour votre aide!
A bientôt!