Page 1 sur 1
Ajouter des "0" devant une ID en fonction de l'ID
Posté : 12 mars 2010, 19:49
par visualight
Salut,
Désolé de ne pas être plus clair dans le titre mais je ne voyais pas quoi dire d'autre.
Aujourd'hui, je recherche à ajouter des "0" dans des id (renvoyées par POST ==> 1 ID par POST).
Le nombre de 0 que je dois afficher devant l'ID dépend de l'id récupérée...
En effet, si j'ai une ID de 1 à 9, je dois afficher 5 zeros devant l'id ==> Exemple : 000001, 000002, ... 000009
Maintenant si j'ai une ID de 10 à 99, je dois afficher 4 zeros devant l'ID ==> Exemple : 000010, ... 000099
Et ainsi de suite ... si j'ai une ID de 1000 à 9999, je dois afficher 2 zeros, Etc ... (jusque 100000 à 999999 -> il n'y a plus de 0)
Comment puis-je tester le nombre de chiffres que me retourne une ID pour savoir le nombre de zeros que je dois ajouter devant ?
Peut être n'est-ce pas la bonne solution et qu'un regex ou autre viendrait à bout de cela ... ???
Merci pour vos réponses,
raph
Re: Ajouter des "0" devant une ID en fonction de l'ID
Posté : 12 mars 2010, 20:30
par Dr@ke
Avec ou
strlen() ou
mb_strlen() :
http://php.net/manual/fr/function.strlen.php
http://www.php.net/manual/fr/function.mb-strlen.php
Et éventuellement utiliser
explode() avant si ton
ID ne contient pas que des chiffres...
Re: Ajouter des "0" devant une ID en fonction de l'ID
Posté : 12 mars 2010, 22:04
par pascaltje
ça peut se faire directement avec cette fonction :
http://fr.php.net/manual/fr/function.sprintf.php
A+
Pascal
Re: Ajouter des "0" devant une ID en fonction de l'ID
Posté : 12 mars 2010, 22:27
par visualight
Merci pour vos réponses.
J'ai fait ça avec
strlen mais c'est assez lourd et pas très dynamique (si l'id est suppérieure à 999999, il faut que je remodifie ma fonction) ...
Je me disait, vu le message de
pascaltje, que j'allais utiliser la fonction
sprintf mais je dois avouer que l'établissement d'un masque est assez difficile pour moi.
$galid = $row['gallery_id'];
function classement ($id) {
$countid = strlen($id);
if ($countid == 1) {
return '00000';
} elseif ($countid == 2) {
return '0000';
} elseif ($countid == 3) {
return '000';
} elseif ($countid == 4) {
return '00';
} elseif ($countid == 5) {
return '0';
} elseif ($countid == 6) {
return '';
}
}
$zero = classement($galid);
//Si l'id = 1, $Int_Title doit normalement afficher : 000001
$Int_Title = $zero.$galid;
Pouvez-vous m'aider à améliorer cette fonction voire me donner une sérieuse piste de fonctionnement avec sprintf ?
Merci,
raph
Re: Ajouter des "0" devant une ID en fonction de l'ID
Posté : 12 mars 2010, 23:00
par Dr@ke
Je laisse à
pascaltje le soin de répondre pour sprintf.
Sinon, ceci devrait fonctionner:
echo substr_replace('000000', $id, '-' . strlen($id));
à quelque chose près, pas testé...
http://www.php.net/manual/fr/function.s ... eplace.php
Re: Ajouter des "0" devant une ID en fonction de l'ID
Posté : 12 mars 2010, 23:10
par pascaltje
L'exemple 6 de la page :
printf("[%06s]", $s);
Qui doit faire :
- remplir par la gauche...
- avec des 0 ...
- pour faire une chaine de 6 caractères maximum
A+
Pascal
Re: Ajouter des "0" devant une ID en fonction de l'ID
Posté : 12 mars 2010, 23:10
par stopher
Salut ,
il existe simplement la fonction str_pad
exemple :
$input = "10";
$newid = str_pad($input, 6, "0", STR_PAD_LEFT);//newid => 000010;
Voici la doc :
str_pad
Bonne continuation ,
Ch.
Re: Ajouter des "0" devant une ID en fonction de l'ID
Posté : 13 mars 2010, 00:12
par visualight
Merci pour vos réponses à tous !
J'ai finalement opté pour la solution de dr@ke utilisant le "substr_replace".
function classement ($id) {
return substr_replace('000000', $id, '-' . strlen($id));
}
$galid = $row['gallery_id'];
$title = $row['gallery_title'];
$Int_Title = classement($galid).'-'.$title; // return -> 000001-[titleofthepage] for id 1
Encore merci pour tout,
raph

Re: Ajouter des "0" devant une ID en fonction de l'ID
Posté : 13 mars 2010, 00:39
par Dr@ke
Pour être sincère ma solution est la moins appropriée dans ton cas:
Si c'est juste pour directement afficher
$id, alors le
printf est fait pour cela.
Si c'est pour traiter
$id alors
str_pad, est la fonction faite pour cela.
La mienne fonctionnant très bien mais c'est ce compliquer la vie pour rien

Re: Ajouter des "0" devant une ID en fonction de l'ID
Posté : 13 mars 2010, 12:12
par visualight
Edit : Mise à jour de la fonction en utilisant str_pad suivant les bon conseils de dr@ke.
function classement ($id, $title) {
return str_pad($id, 6, "0", STR_PAD_LEFT).'-'.$title;
}
$galid = $row['gallery_id'];
$title = $row['gallery_title'];
$Int_Title = classement($galid, $title); // return -> 000001-[titleofthepage] for id 1
Merci !!
Raph
Re: Ajouter des "0" devant une ID en fonction de l'ID
Posté : 13 mars 2010, 14:16
par dunbar
Salut ,
il existe simplement la fonction str_pad
exemple :
$input = "10";
$newid = str_pad($input, 6, "0", STR_PAD_LEFT);//newid => 000010;
Voici la doc :
str_pad
Bonne continuation ,
Ch.
stopher avant Dr@ke
