IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Input radio : ma valeur se fait tronquer par le Helper ? [CakePHP]


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Points : 29
    Points
    29
    Par défaut Input radio : ma valeur se fait tronquer par le Helper ?
    Bonjour,

    J'utilise la v2.4 de cake php.

    J'ai un champ 'issue' dans une table 'trainings', qui est défini comme decimal(2,1)

    Et je constate un effet bizarre dans un formulaire, voici mon ctp :
    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
    <?php echo $this->Form->create('Training'); ?>
        <?php
    		$issueMineure = $issue + 0.1;
    		$issueMajeure = floor($issue) + 1;
    	    if($issueMineure == $issueMajeure){
        		$options = array(
    	    		$issue => 'Continuer sur l\'issue actuelle - ' . $issue, 
    	    		$issueMajeure => 'Passer à l\'issue majeure ou mineure - ' . number_format($issueMajeure,1));
        	}
        	else{
        		$options = array(
    	    		$issue => 'Continuer sur l\'issue actuelle - ' . $issue, 
    	    		$issueMineure => 'Passer à l\'issue mineure - ' . $issueMineure,
    	    		$issueMajeure => 'Passer à l\'issue majeure - ' . number_format($issueMajeure,1));
        	}
     
    	$attributes = array('legend' => false, 'value' => $issue);//'value' => $issue indique quelle valeur est cochée par défaut
    	?>
    	<?php echo $this->Form->radio('issue', $options, $attributes); ?>
    	<?php //echo $this->Form->input('issue'); ?>
    <?php echo $this->Form->end('Envoyer'); ?>
    Ce qui m'embête c'est que la valeur $issueMineure, qui vaut par exemple 1.8 si $issue vaut 1.7, semble tronquée par le FormHelper. En effet quand je fait Ctrl+U dans mon navigateur préféré j'obtiens ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        	<input type="radio" name="data[Training][issue]" id="TrainingIssue17" value="1.7" checked="checked" />
    		<label for="TrainingIssue17">Continuer sur l'issue actuelle - 1.7</label>
    	<input type="radio" name="data[Training][issue]" id="TrainingIssue1" value="1" />
    		<label for="TrainingIssue1">Passer à l'issue mineure - 1.8</label>
    	<input type="radio" name="data[Training][issue]" id="TrainingIssue2" value="2" />
    		<label for="TrainingIssue2">Passer à l'issue majeure - 2.0</label>	
    <div class="submit"><input  type="submit" value="Envoyer"/></div></form>
    Ce qui ne me va pas ici, c'est le value=1 en rouge, qui devrait être un value=1.8.

    Quelqu'un sait-il ce que je ne fait pas comme il faut ?...

    Merci beaucoup,
    Stéphane.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Plutôt un probleme de type.
    Tu utilises le flottant 1.7 comme clef de tableau, il est réduit à l'entier 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $options = array(
    	    		"$issue" => 'Continuer sur l\'issue actuelle - ' . $issue, 
    	    		"$issueMineure" => 'Passer à l\'issue mineure - ' . $issueMineure,
    	    		"$issueMajeure" => 'Passer à l\'issue majeure - ' . number_format($issueMajeure,1));
        	}
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Le problème ne vient pas de cake mais de php lui même.

    En effet, ton tableau "options" est construit avec des clefs de type flottant ce qui... n'est pas possible en php, les clefs ne peuvent être que des entiers ou des chaînes de caractères.

    Une manière très simple de corriger ton problème est de caster tes clefs de tableau en string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $options = array(
            (string)$issue => 'Continuer sur l\'issue actuelle - ' . $issue,
            (string)$issueMineure => 'Passer à l\'issue mineure - ' . $issueMineure,
            (string)$issueMajeure => 'Passer à l\'issue majeure - ' . number_format($issueMajeure, 1)
        );
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 34
    Points : 29
    Points
    29
    Par défaut
    Super merci,
    je ne savais pas que le type flottant ne pouvait pas être utilisé comme clé de tableau php. Et je suppose que la variable $issue, que j'envoie à la vue par un "compact" est convertie en string ce qui fait que ça marchait bien pour le "1.7".
    Merci encore, j'espère que cette résolution aidera d'autres beginners comme moi
    Stéphane.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Image sur un input avec des valeurs qui se rajoutes par défaut X et Y
    Par yule dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 27/07/2012, 14h02
  2. Input Password Avec Valeur Par Default
    Par xxkirastarothxx dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 29/09/2009, 18h43
  3. fonction avec if sur input radio qui ne renvoie pas la bonne valeur
    Par eddflo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/06/2009, 02h20
  4. recuperer la valeur d'un input radio
    Par phantom_lord dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2009, 14h16
  5. [struts] <html:radio> et valeur par défaut
    Par nikalkal dans le forum Struts 1
    Réponses: 3
    Dernier message: 27/02/2006, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo