Bonjour les Ir!!!
J'ai un gros souci, en fait, je souhaite avoir dans mon script un système de case à cocher à partir d'une valeur, malheureusement, j'ai du mal à le faire avec javascript et PHP. Je m'explique à travers un exemple:
Une personne A est agée de 30 ans, mon script doit détecter son âge et venir cocher la case correspondant au chiffre 30 ou inférieur à 30 sans l'intervention de l'utilisateur. En supposant qu'on ait 3 cases:
dont les valeurs sont case1 = 30, case 2= 40 et case 3= 50, si l'âge est compris entre 1 à 30 cela veut dire que c'est la case 30 qui sera sélectionnée, si l'age est compris entre 31 et 40 donc c'est la deuxième case qui sera sélectionnée et en fin la case 3 si la condition respecte 41 à 50.
S'il vous plaît, aidez-moi à trouver la solution en utilisant Javascript et PHP
Voici un petit script PHP que j'ai utilisé mais le problème n'est pas résolue
Nbr:<input type="number" name="age" id = "age"><br>
<?php
if(isset($_POST['nbr']) && $_POST['nbr'] != ""){
@$nbr = $_POST['nbr'];
if($nbr <= 20){
?>
<input type="radio" name="gender" value="20" checked>20
<input type="radio" name="gender" value="30" >30
<?php } else if($nbr > 20 && $nbr <= 30){ ?>
<input type="radio" name="gender" value="20" >20
<input type="radio" name="gender" value="30" checked>30
<?php }
else { ?>
<input type="radio" name="gender" value="20" checked>20
<input type="radio" name="gender" value="30" >30
<?php
}
}?>
<input type="radio" name="gender" value="20" checked>20
<input type="radio" name="gender" value="30" >30
Ce que je veux
Décrivez ce que vous cherchez à obtenir.
Ce que j'obtiens
Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
Bonjour,
Pourquoi faire des cases à cocher si c'est sélectionné par avance ?
Tu pourrai très bien arrondir à la dizaine inférieur et y attribuer en javascript la valeur à ton button. return floor($nombre / 10) * 10;
Sinon mieux faut ne pas dubliquer t'es button input. Mais selon la valeur rendre le bon input "checked" via le javascript toujours.
T'as condition, il ne faut pas la mettre à l'intérieur d'une requête POST qui signifie à la soumission du formulaire. Dans ce cas là modifier directement la valeur.
Dans tous les cas, ajoute un attribut "id" à ton input pour l'appeler en Javacsript et lui dire ce que tu souhaites faire.
Bonjour Jessy,
Merci pour ton intervention, c'est possible d'expliciter tout ceci à travers un petit bout de code?
Oui pas de soucis. Moi je comprend surtout que l'utilisateur doit insérer son âge puis soumettre le formulaire. Cela remplira automatiquement ton formulaire.
Maintenant Php est un langage serveur. Tu n'auras jamais de javascript dans une validation de php. C'est à dire dans un isset($_POST['nbr'])
Il faudra revoir un peu la base d'un formulaire POST en php, mais on est tous passé par là :D
Tu as donc deux possibilité. Soit lorsque l'utilisateur indique son âge et soumet le formulaire, tu gères ça dans ton controller.
if(isset($_POST['nbr']) && $_POST['nbr'] != ""){ @$nbr = $_POST['nbr']; if($nbr <= 20){ tu enregistres directement la valeur en base de donnée. } }
Soit tu le fais en javascript directement visible par l'utilisateur. Mais bon du coup ça serait bien de l'empecher de sélectionner une case différente de son âge par la suite.
``<input type="number" name="age" id = "age" onchange="updateAgeRange()">
<input id="range-20" type="radio" name="gender" value="20" >
<input id="range-30" type="radio" name="gender" value="30" >
<script>
function updateAgeRange(){
const age = document.getElementById('age').value;
if(age < 30){
document.getElementById("range-20").checked = true;
document.getElementById("range-30").checked = false;
} else if(age >= 30) {
document.getElementById("range-20").checked = false;
document.getElementById("range-30").checked = true;
}
}
</script>``
Le code est évidement optimisable etccc. C'est juste la base et quelques piste. Tu devrais y arriver avec ça. N'hésite pas si tu as des questions. Je ne répondrai pas de suite ou d'autres pourront me remplacer pour t'aider.
Au plaisir
Bonjour SiProZz, merci pour ton intervention, je passe à l'action toute de suite pour voir ce que ça donne comme résultat