<?php class checkbox { // Source des images var $img_check; var $img_uncheck; // On instancie la classe en dclarant les images. Ainsi elle seront rptes function checkbox($check_img_src, $uncheck_img_src) { $this->img_check = $check_img_src; $this->img_uncheck = $uncheck_img_src; } // Fonction pour ajouter une checkbox // * $name : attributs 'name' et 'id' de l'lments HTML checkbox qui sera cr // * $checked : tat initial de la checkbox (attribut 'checked') // * $value : attribut 'value' de l'lments HTML checkbox qui sera cr function add($name, $checked=false, $value='OK') { // prdfinition des attributs de la checkbox $check = $checked ? 'checked=checked' : ''; $img = $checked ? $this->img_check : $this->img_uncheck; // Prformatage du code javascript $JS = "if(document.getElementById('$value').checked==true) {" ; $JS.= "this.src = '$this->img_uncheck';" ; // on modifie juste l'image affiche $JS.= "} else { " ; $JS.= "this.src = '$this->img_check';" ; $JS.= "}" ; // inversion de l'attribut checked de la "vraie" checkbox $JS.= "document.getElementById('$value').checked = !document.getElementById('$value').checked;" ; // Preformatage de la sortie : // la "vraie" checkbox (cache) $out = "<input type=\"checkbox\" name=\"$name\" id=\"$value\" value=\"$value\"$check style=\"display:none;\" onchange=\"javascript:document.getElementById('img_".$value."').src=((this.checked) ? '".$this->img_check."' : '".$this->img_uncheck."');\" />"; // l'image qui remplace la checkbox $out.= "<img src=\"$img\" onclick=\"$JS\" id=\"img_".$value."\" />"; return $out; // et on envoi la sauce ! } } $myCheckbox = new checkbox('checked.gif','non_checked.gif'); ?> <?php // on test si le formulaire a ete envoye // s'il l'a ete alors on met dans $tabLED l'array des LED coche // sinon on met un tableau vide $tabLED = (isset($_POST['led'])) ? $_POST['led'] : array(); ?> <form name="formulaire" method="post" action="news2.php"> Coche pour allumer :<br /> <?php $myCheckbox = new checkbox('checked.gif','non_checked.gif'); // On parcours les puissances de deux desire, ici ca va de 2^0 a 2^5 for($i=0; $i < 6; $i++){ // on fait l'operation de 2^$i $value = pow(2, $i); // On affiche la checkbox avec la valeur calcule au dessus // On test si la valeur calcule appartient a $tabLED, si tel est le cas ca signifie que la case a ete coche // Dans ce cas la on l'indique a l'aide 'checked="true"' sinon on lui dit rien // echo '<input name="led[]" type="checkbox" id="led1" value="'.$value.'" '.((in_array($value, $tabLED)) ? 'checked = "true"' : '').' /> Led'.($i+1).'<br />'; echo '<label for="'.$value.'">'.$myCheckbox->add('led[]',((in_array($value, $tabLED)) ? true : false),$value)." LED ".($i+1)." </label><br /> \n"; } ?><input type="submit" name="submit" value="Allumer"></form><?php// On test si le formulaire a ete envoye if(isset($_POST['submit'])){ require_once("class/php_iol.class.php"); $DemoPhpIOL = new php_iol(); $out=0; // On parcours tout le tableau et on ajoute les valeurs coche dans $out if(isset($_POST['led'])) foreach($_POST['led'] AS $id => $value) $out += (int)$value; $DemoPhpIOL->WriteIOOutput(888, $out); // 888dec of 378hex echo"envoi de". $out.".<br>"; } ?>