5568 sujets

Sémantique web et HTML

Bonjour à tous,

Voila mon problème : J'ai des Checkbox où l'on ne peut en sélectionner qu"une grâce à un script java. Pour ces Ckeckbox, je n'arrive pas à récupérer dans mon PHP la valeur cochée (undefine index...). Soit je change la syntaxe du HTML et je récupère la valeur mais mon script pour n'en sélectionner qu'une ne fonctionne plus ou c'est l'inverse.
J'ai pas mal cherché mais je n'ai rien trouvé pour cette configuration particulière.

J'espère que vous pourrez m'aider, en vous remerciant par avance.

Voici le HTML :

<Script language="Javascript">
function selectOnlyThis(id) {
for (var i = 1;i <= 4; i++){
    if ("Check" + i === id && document.getElementById("Check" + i).checked === true){
            document.getElementById("Check" + i).checked = true;
            } else {
              document.getElementById("Check" + i).checked = false;
            }
    }  
}
	</script>
	
	
<div align=center>
	<fieldset id="motif" style="width :380px" style="margin:auto">
    <legend>Motif de la demande</legend>
		<p class="cases_cocher2">
    <input type="checkbox" id="Check1" value="Panne" onclick="selectOnlyThis(this.id)" />
	<label for="panne">Panne</label>
	<input type="checkbox" id="Check2" value="Evol" onclick="selectOnlyThis(this.id)" />
	<label for="Evol">Evolution</label>
	<input type="checkbox" id="Check3" value="Supp" onclick="selectOnlyThis(this.id)" />
	<label for="Supp">Suppression</label>
	<input type="checkbox" name="Crea" id="Check4" value="" onclick="selectOnlyThis(this.id)" />
	<label for="Crea">Création</label>
		</p>
    </fieldset>
	   </div>


Et voici le PHP :

print($_POST['Check1']);
print($_POST['Check2']);
print($_POST['Check3']);
print($_POST['Check4']);
Bonsoir.

Pourquoi ne pas utiliser plutôt les boutons radio (input type="radio") si vous voulez qu'une seule option soit sélectionnable ?

Smiley smile
Salut !

Je ne sais pas si ça peut t'aider mais voici une solution pour faire disparaître tes erreurs :


<?php 
   for ($i = 1; $i <= 3; $i++) {
         if (isset($_POST['Check' . $i])) {
             //Do something
         }
   } 
?>


Cdt
Bonjour,

Pour répondre à Zelena : Pour des raisons esthétiques je ne doit utiliser que des checkbox, sinon, crois moi, j'aurai utilisé des boutons radio.
Pour répondre à Ketedaro : Merci de ton aide, je vais essayer ça dès que j'ai un peu de temps.

En tous cas, merci à vous deux.
Modérateur
a écrit :
Pour répondre à Zelena : Pour des raisons esthétiques je ne doit utiliser que des checkbox

C'est la pire des raisons possibles, d'autant que l'esthétique des checkbox ou des radios n'est nulle part garantie. En plus ce sera perturbant pour l'utilisateur. Il y a des moments où il faut savoir dire au graphiste qu'il se trompe!
dida a écrit :

Pour répondre à Zelena : Pour des raisons esthétiques je ne doit utiliser que des checkbox, sinon, crois moi, j'aurai utilisé des boutons radio.


Apparemment, je peux faire de courtes citations. Je vais laisser parler Mme Boucher (« Ergonomie Web »):
« Pour que vos internautes s'approprient rapidement votre site web, vous devez capitaliser sur ce qu'on appelle l'apprentissage externe. Lorsque l'internaute arrive sur votre site , il n'est pas vierge de toute expérience. Il a déjà visité d'autres sites et en a tiré des connaissances sur le fonctionnement d'un site Internet. Il va essayer, même s'il n'en a pas conscience, d'appliquer ces connaissances à vos pages.

Votre site Internet doit donc être cohérent avec les autres sites afin de bénéficier de ces connaissances antérieures des utilisateurs. Tenir compte des conventions web vous garantira un niveau d'expertise minimal des utilisateurs sur votre site. Si vous respectez les basiques, votre site semblera simple et intuitif parce qu'il colle aux habitudes des utilisateurs. »

Est-ce pertinent de sacrifier la simplicité et l'efficacité à l'esthétisme ?
Smiley smile
Modifié par Zelena (07 Jul 2017 - 10:21)
Est-ce pertinent de sacrifier la simplicité et l'efficacité à l'esthétisme ?

Peut-être pas et même surement pas, mais on pourra toujours philosopher ou disserter sur le sujet, à l'arrivée le client est roi ...... Pas de boutons radios !!!
Modérateur
Coucou
Pas de boutons radios... en apparence ! Rien ne t’empêche d'utiliser des bouton radio et de les styler de façon à faire des cases a cocher. Tu auras un rendu de case a cocher tout en gradant le fonctionnement de base des radios bouton. Moi ca me parrait moins casse-gueule que de modifier le comportement de checkbox avec un script. (Et le jour ou le client s'en rend compte et voudrait revenir à des radio, c'est tout pret ^^)
Modifié par _laurent (07 Jul 2017 - 11:48)
dida a écrit :
Est-ce pertinent de sacrifier la simplicité et l'efficacité à l'esthétisme ?

Peut-être pas et même surement pas, mais on pourra toujours philosopher ou disserter sur le sujet, à l'arrivée le client est roi ...

Eh oui, le client est roi mais le roi change parfois d'avis et d'opinion suivant les discussions qu'il peut avoir avec son entourage.
Un professionnel a un devoir d'expertise. Il peut suivre ce que dit son client tout en lui faisant remarquer que ce n'est pas une bonne idée.
D'autant qu'à la longue… faire un travail dont on n'est pas satisfait est assez déprimant.
Smiley sweatdrop
Modérateur
dida a écrit :
mais on pourra toujours philosopher ou disserter sur le sujet, à l'arrivée le client est roi ...... Pas de boutons radios !!!


C'est un beu banal mais surtout complètement faux. Pour être roi, le client doit payer, et cher. Et souvent quand il paie excessivement cher il est plus à l'écoute.

Dans le pire des cas rien n'empêche de suivre la proposition de Laurent.
Comme je le disais, on pourra toujours philosopher ou disserter sur le sujet...... Pas de boutons radios !!!
Donc si je vous ai bien compris il n'existe pas de solutions techniques pour récupérer mes valeurs dans des variables tel qu'est écrit mon fichier HTML ? La seule solution étant celle de _Laurent de modifier l'apparence des boutons radio en Checkbox ?
Si tel est le cas, savez vous comment on peut faire ça, car après avoir fouillé les Forums et autres sites, je n'ai rien trouvé la dessus. Encore merci d'avance de votre aide.
Merci Zelena, pas de souci en anglais je vais regarder ça de plus près. Merci encore
Modérateur
Sinon c'est possible de récupérer les infos des checkbox en PHP…

Ce code est complètement faux:
a écrit :

<label for="panne">Panne</label>
<input type="checkbox" id="Check2" value="Evol" onclick="selectOnlyThis(this.id)" />


La valeur de for du label correspond à l'id de l'input

Pour être envoyé, la valeur de l'attribut name doit être renseignée. C'est elle qui sera lue dans $_POST.

ce qui nous donne:
a écrit :

<label for="Check2">Panne</label>
<input type="checkbox" name="tralala_pouetpouet" id="Check2" value="Evol" onclick="selectOnlyThis(this.id)">


D'autre part un checkbox ne sera pas envoyé s'il n'est pas coché, il faut donc tester:


if (isset($_POST['tralala_pouetpouet'])){
  $choix = $_POST['tralala_pouetpouet'];
  // puis faire ce qu'on souhaite
}


On peut changer la manière de récupérer ainsi:

1) Attribuer le même name à tous les inputs. Une seule valeur sera alors récupérable, celle de la dernière checkbox cochée.
2) Attribuer le même name à tous les inputs avec des crochets: name="tralala_pouetpouet[]" $_POST['tralala_pouetpouet'] contiendra alors un tableau des checkboxs cochées (ou ne sera pas défini si aucune n'est cochée).

Mais si le client était roi, il aurait choisi le meilleur artisan du royaume non? (vanne facile) Smiley cligne Smiley cligne
Modérateur
Pour revenir sur le style des checkbox voila un petit exemple full CSS :

https://jsfiddle.net/ovsv7ugm/

Le principe est de faire disparaitre le input, de linker le label avec le input (via le for) et en CSS de faire apparaître ce que l'on veut dans le label correspondant.

Bon code et bonne journée à tous
OK et merci à tous. je vais tester tout ça. Merci encore de votre aide précieuse.