8791 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai un script tout bête qui me permet de récupérer, s'il existe le contenu d'un $_GET nommé "id" :
 $redir_id = (isset($_GET["id"])) ? $_GET["id"] : NULL;
	if(isset($redir_id)){
	    echo('<body onload="id_fiche('.$redir_id.')">');

Voici ma fonction JS:
function id_fiche(ID) {
    alert(ID);
//code...
L'id est un nombre à 6 chiffres... Malheureusement, quand mon id est plus grand que 9 (nombre à plus d'1 chiffre), la fonction javascript me retourne une valeur fausse 000023->19, 000071->53, ... Bizarre!!
En gros, comment arriver à conserver le numéro à 6 chiffres?
Mercii à vous!
Modifié par Menubestof (05 Mar 2011 - 17:01)
Tu peux essayer en convertissant ton id en chaine de caractère de cette façon :
$redir_id = sprintf('%06d', $redir_id);
Salut,

si c'est un entier, tu peux effectivement caster ta variable :
$redir_id = (isset($_GET["id"])) ? (int) $_GET["id"] : 0; 
    if(0 < $redir_id){ 
        echo('<body onload="id_fiche('.$redir_id.')">'); 
Merci devzonefr, ça marche parfaitement!!
(La chose suivante marche aussi :
$redir_id += '';
)


Comment traduire en français cette requête avec ce (int)?! Je savais pas qu'on pouvais écrire ça de la sorte!

@moust : désolé, chez moi ça ne marche pas!
@xirt : tu as raison, mais il se trouve que mon 'id' passe par de l'Ajax... Du coup ça complique les choses!
Smiley cligne Smiley cligne
Ton problème initial vient du fait que dans de nombreux langages de programmation, donc Javascript, les nombres commençant par 0 sont considérés comme étant en base octale, et non en base décimale. De ce fait, il est tout à fait normal que 023 (base8) == 19 (base10) Smiley smile

Menubestof a écrit :
Comment traduire en français cette requête avec ce (int)?! Je savais pas qu'on pouvais écrire ça de la sorte!


Comme l'a dit devzonefr, il s'agit d'un cast, soit une conversion de ton paramètre en valeur entière (int). Ce qui m'étonne un peu par contre, c'est que le cast ait considéré ta valeur comme décimale alors qu'elle commence par un 0...