Input radio et tableau array

Résolu
Chers confrères,
Pour me forcer à utiliser plus les tableaux php (Je les ai en horreur), j'ai créer 3 tableau différents pour la gestion des mes parcelles.
Pour chaque actions, j'ai un bouton radio "a faire" = 0, "effectué" = 1
Supposons que toutes les actions sont à faire.
Le problème et qu'avec les tableaux, il n'y a que le dernier des travaux où le radio "a faire est coché".
Auriez vous une idée pour remédier à ce problème.

		for($i=0;$i<count($tab_annee);$i++)
		{
		echo '<tr>'; 
		echo '<td>'.$tab_lib[$i].'</td>'; 
		echo '<td>'.$tab_annee[$i].'</td>';
		if ($tab_trav[$i] == 0){
			echo '<td BGCOLOR="red">     ';
		}else{
			echo '<td BGCOLOR="green">     ';
		}
		echo '</td>';
		echo '<td>';
		?>
			<input type="radio" name="<?php echo $tab_trav[$i]; ?>" value="0" <?php if ($tab_trav[$i]  == 0) {echo ' checked="checked"';} ?> /><span id=text_rouge> A faire </span> 
			<input type="radio" name="<?php echo $tab_trav[$i]; ?>" value="1" <?php if ($tab_trav[$i]  == 1) {echo ' checked="checked"';} ?> /><span id=text_vert> Effectué </span>
		<?php 
		echo '</td>';		
		echo '</tr>';
		
		}
		
		echo '</table>';


Merci d'avance



--
Bien PHPment et MySQLment
Delaville

7 réponses

  1. Maka,
    Merci pour ton aide,
    ça fonctionne parfaitement.
    C'est encore mieux avec ton label et CSS

    Merci encore
    0
    1. de rien

      bonne continuation
      0
  2. Merci
    Ton truc est bien, mais je n'ai pas la couleur
    J'ai bien mais le style dans ma page .CSS qui est appellé

    <label class="radio rouge">
    <input type="radio" name="<?php echo $tab_name[$i]; ?>" value="0" <?php if ($tab_trav[$i] == 0) {echo "checked";} ?> />
    A faire  </label>
    <label class="radio vert">
    <input type="radio" name="<?php echo $tab_name[$i]; ?>" value="1" <?php if ($tab_trav[$i] == 1) {echo "checked";} ?> />
    Effectué </label>

    qu'ai donc fait de travers
    0
    1. essaye en remplacant :

      input:checked
      par
      input[type="radio"]:checked

      edit: cela ne sert à rien ...
      0
    2. correction, ajouter un balise span au libelle "à faire" ou "effectue" comme ceci

      <label class="radio vert">
      <input type="radio" name="name" value="1" />
      <span>Effectué</span>
      </label>

      et le code css comme ceci

      label.radio.vert > input:checked + span {
      background:green; // tu personnalises le bouton vert lorsqu'il est coché
      }

      label.radio.rouge > input:checked + span {
      background:red; // tu personnalises le bouton rouge lorsqu'il est coché
      }

      l'erreur est toute bete, le style etait appliqué au bouton radio, que l'on a justement caché, en ajoutant une balise (ici span) on applique maintenant le style au span qui contiendra le libellé du bouton
      0
  3. et tant qu'on y est une petite astuce sympa

    tu peux utiliser un label avec tes input pour les personnaliser

    ps: un id doit etre unique, ici tu dois donc utilisé des classes

    <input type="radio" name="name" value="0"  /><span id=text_rouge> A faire </span> 
    <input type="radio" name="name" value="1" /><span id=text_vert> Effectué </span>

    à la place, tu peux faire :


    <label class="radio rouge"><input type="radio" name="name" value="0" />A faire</label>
    <label class="radio vert"><input type="radio" name="name" value="1" />Effectué </label>

    le texte sera cliquable et tu peux cacher les bouton radio

    label.radio{
    // un design de base pour tes labels
    }

    label.radio > input{
    display:none; // tu caches des input
    }

    label.radio.vert > input:checked{
    background:green; // tu personnalises le bouton vert lorsqu'il est coché
    }

    label.radio.rouge> input:checked{
    background:red; // tu personnalises le bouton rouge lorsqu'il est coché
    }
    0
    1. Pour le moment, je ne fais aucun update dans ma base. Je teste en remplissant directement dans la base de données.
      De plsu spour corrigé le premier problème j'ai ajouté un tableau

      $tab_annee = array($annee,($annee+5),($annee+8),($annee+15),($annee+21),($annee+26),($annee+32),($annee+45));
      		
      $tab_trav = array( $preparation, $depressage,$entretien,
       $eclairecie1, $eclairecie2,$eclairecie3,$eclairecie4,$coupe);
      						   
      $tab_name = array( 'preparation', 'depressage', 'entretien', 'eclairecie1', 'eclairecie2', 'eclairecie3', 'eclairecie4' ,'coupe');
      		 
      		$tab_lib = array("Préparation du sol et reboisement",
      		"Dépressage et entretien du jeune boisement (1)",
      		"Dépressage et entretien du jeune boisement (2)",
      		"Première éclaircie",
      		"Deuxième éclaircie",
      		"Troisème éclaircie",
      		"Quatrième éclaircie",
      		"Coupe rase");
      

      0
      1. çà m'a l'air compliqué ton histoire ...

        d'ou viennent et que contiennent les variable dans $tab_trav ?
        0
    2. le code de ton tableau est bizarre ... je m'explique

      tu boucles un tableau sur $tab_annee

      et dans ta boucle on a ces données :

      $tab_lib[$i] et $tab_trav[$i]

      tu as créés 3 tableaux ? (où l'on retrouverais la meme clé $i ?? )

      il doit y a voir une facon beaucoup plus simple de faire je pense

      pourrais tu mettre le detail de ce que tu recuperes en base de données, stp
      0
      1. Cher Maka54,
        Ta question m'a fait réfléchir, le name de mon input était 0, voila pourquoi ça ne marchait pas.
        J'ai corrigé ça mais un problème persiste, j'ai mis dans ma bases de données les 2 premiers travaux à 1 (effectué) aucun des input ne sont checked.
        J'aurais encore besoin de cotre aide
        0
        1. bonjour,

          pourrais tu nous donner le code html des input radio généré pour controler les name de chacun
          0