2 votes

Comment obtenir une réponse à partir de deux cases à cocher sélectionnées en PHP

J'ai ces pages :

secondpage.php

    Retour

            Choisissez ce pour quoi vous payez
            Quelque chose
            Quelque chose
            Quelque chose
            Quelque chose

        autre...

        Saisissez le prix

        Qui doit payer :

        Tout le monde

          
        Jean

          
        Pierre

          
        Ferrari

fourthpage.php

Jean

        QUI QUOI COMBIENMA DETTEDETTE TOTALE
        ";
                          }}} ?>

AJOUTER PAYER

et javascript

function ckChange(el) {
  var ckName = document.getElementsByName(el.name);
  if (el.checked) {
    for (var i = 0; i < ckName.length; i++) {
      ckName[i].disabled = ckName[i] !== el;
    }
  } else {
    for (var i = 0; i < ckName.length; i++) {
      ckName[i].disabled = false
    }
  }

}

$(function(){

    var requiredCheckboxes = $(':checkbox[required]');

    requiredCheckboxes.change(function(){

        if(requiredCheckboxes.is(':checked')) {
            requiredCheckboxes.removeAttr('required');
        }

        else {
            requiredCheckboxes.attr('required', 'required');
        }
    });

});

Lorsque j'essaie d'obtenir la réponse de 2 cases à cocher cochées comme

elseif ($selected == 'John' && $selected == 'Peter') { echo $_POST["price"]/3;} 

cela ne me donne pas la bonne réponse. Je n'obtiens pas le prix divisé par 3. Par exemple : j'ai choisi le prix 15 et la dette devrait être 15/3 = 5. Au lieu de 5, j'obtiens 7,5 7,5. Des solutions ?

2voto

Mohammed Alhanafi Points 659

Le problème n’est pas seulement dans

elseif ($selected == 'Jacopo' && 'Denis' && 'Angus'){ echo $_POST["price"]/2;}

Donc d'abord, vous voulez savoir que cette ligne doit être écrite de cette manière.

elseif ($selected == 'Jacopo' || $selected == 'Denis' || $selected == 'Angus'){ echo $_POST["price"]/2;}

Et deuxièmement, vous ne voulez pas utiliser un autre foreach. nous voulons nous assurer que les éléments que vous recherchez sont à l'intérieur du tableau check_list, vous pouvez donc utiliser la fonction in_array().

Voici votre code final.

J'espère que tout est clair et j'espère vous avoir aidé.

0voto

Lars Stegelitz Points 452

Je pense que tu le veux comme ça (corrige-moi si ce n'est pas le cas) :

  • si "everybody" est coché, cas 1
  • si LES TROIS (respectivement DEUX) cases avec les noms sont cochées, cas 2 ou 3
  • toute autre combinaison sera ignorée

Dans ce cas, tu dois t'assurer que $_POST['check_list'] contient tous les éléments requis et rien de plus. Veuillez considérer l'exemple suivant :

// pour faire des essais...
$_POST['check_list'] = ['everybody', 'Jacopo', 'Denis'];

$case1 = ['everybody'];
$case2 = ['Jacopo', 'Denis', 'Angus'];
$case3 = ['Jacopo', 'Denis'];

$resultat1 = array_intersect($_POST['check_list'], $case1);
$resultat2 = array_intersect($_POST['check_list'], $case2);
$resultat3 = array_intersect($_POST['check_list'], $case3);

if (count($case1) == count($resultat1)) {
    echo 'cas 1';
}
elseif (count($case2) == count($resultat2)) {
    echo 'cas 2';
}
elseif (count($case3) == count($resultat3)) {
    echo 'cas 3';
}

La fonction array_intersect va comparer tous les tableaux pour trouver ce qui est commun. Tout ce qui n'est pas dans un des autres tableaux sera enlevé. Théorie des ensembles.

éditer : fautes de frappe corrigées

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X