Ajouter des "0" devant une ID en fonction de l'ID

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Ajouter des "0" devant une ID en fonction de l'ID

Re: Ajouter des "0" devant une ID en fonction de l'ID

par dunbar » 13 mars 2010, 14:16

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 :wink:

Re: Ajouter des "0" devant une ID en fonction de l'ID

par visualight » 13 mars 2010, 12:12

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

par Dr@ke » 13 mars 2010, 00:39

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 :wink:

Re: Ajouter des "0" devant une ID en fonction de l'ID

par visualight » 13 mars 2010, 00:12

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

par stopher » 12 mars 2010, 23:10

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

par pascaltje » 12 mars 2010, 23:10

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

par Dr@ke » 12 mars 2010, 23:00

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é... :wink:

http://www.php.net/manual/fr/function.s ... eplace.php

Re: Ajouter des "0" devant une ID en fonction de l'ID

par visualight » 12 mars 2010, 22:27

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

par pascaltje » 12 mars 2010, 22:04

ç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

par Dr@ke » 12 mars 2010, 20:30

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...

Ajouter des "0" devant une ID en fonction de l'ID

par visualight » 12 mars 2010, 19:49

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