2010-05-07 8 views
0

alt text Salut, ive traité avec cela depuis un certain temps maintenant et besoin de votre aide. bien que j'ai un tableau arrayAmenities de $ qui contient une combinaison des données suivantes en fonction de ce qui est extraite de la base de données:Vérifier les cases à cocher dynamiquement

Air Conditioned 
Bar 
Brunch 
Party Room 
Tea Room 
Terrace 
Valet 

Je voudrais l'application pour vérifier dynamiquement l'ensemble des cases suivantes sur la base des données contenues dans le tableau. Avec mon code, une seule case est cochée en fonction des premières données contenues dans le tableau.

Pouvez-vous s'il vous plaît dire ce que je manque? Merci de répondre.

Code

:

//get amenities one by one in order to set the checkboxes 
     $arrayAmenities = explode(',', $rest_amenities); 

     $i=0; 
     while(count($arrayAmenities) > $i) 
     { 
      var_dump($arrayAmenities[$i]); 
      switch($arrayAmenities[$i]) 
      { 
       case 'Air Conditioned': 
        $checkedAir = 'checked=true'; 
        break; 

       case 'Bar': 
        $checkedBar = 'checked=true'; 
        break; 

       case 'Brunch': 
        $checkedBru = 'checked=true'; 
        break; 

       case 'Party Room'; 
        $checkedPar = 'checked=true'; 
        break; 
      } 


      $i+=1; 
     } 

    } 

cases

<table cellpadding="0" cellspacing="0" style="font-size:10px"> 
         <tr> 
          <td style="border-top:1px solid #CCC;border-right:1px solid #CCC;border-left:1px solid #CCC; padding-left:5px ">Air Conditioned <input type="checkbox" name="air_cond" <?php print $checkedAir;?> value="Air Conditioned"></td> 
          <td style="padding-left:10px; border-top:1px solid #CCC;border-right:1px solid #CCC;">Bar <input type="checkbox" name="bar" value="Bar" <?php print $checkedBar;?>></td> 
          <td style="padding-left:10px; border-top:1px solid #CCC;border-right:1px solid #CCC; ">Brunch <input type="checkbox" name="brunch" value="Brunch" <?php print $checkedBru;?>></td>       
         </tr> 

         <tr> 
          <td style="border-top:1px solid #CCC;border-right:1px solid #CCC; border-bottom:1px solid #CCC; border-left:1px solid #CCC; padding-left:5px">Party Room <input <?php print $checkedPar;?> type="checkbox" name="party_room" value="Party Room" ></td> 
          <td style="padding-left:10px; border-top:1px solid #CCC;border-right:1px solid #CCC; border-bottom:1px solid #CCC;">Tea Room <input type="checkbox" name="tea_room" value="Tea Room" ></td> 
          <td style="padding-left:10px; border-top:1px solid #CCC;border-right:1px solid #CCC; border-bottom:1px solid #CCC;">Terrace <input type="checkbox" name="terrace" value="Terrace"></td>       
         </tr> 

         <tr> 
          <td colspan="3" style="border-bottom:1px solid #CCC; border-left:1px solid #CCC; border-right:1px solid #CCC; padding-left:5px">Valet <input type="checkbox" name="valet" value="Valet" ></td> 
         </tr> 
        </table> 
+0

le code HTML de la propriété checked est "checked" () – Dormilich

+0

peut-être vous pourriez essayer 'switch (trim ($ arrayAmenities [$ i ])) 'dans le cas où il reste des espaces après avoir' explode() ' –

Répondre

0

Merci vous tous, merci à vos conseils j'ai réussi à le faire: J'ai fait la à la suite de changements mon code et il fonctionne très bien: d'abord, je ôtait le temps et passer et a fait ce qui suit:

$arrayAmenities = explode(',', $rest_amenities); 
     $elt = implode(',', $arrayAmenities); 

En ce qui concerne e e cases à cocher, je viens de définir les paramètres suivants comme checked = true:

<?php strStr($elt, "Air Conditioned")?print"checked=true":print "";?> 

Je répète l'étape ci-dessus pour toutes les cases à cocher et il fonctionne parfaitement. Merci à tous pour votre suggestion qui m'a beaucoup aidé.

1

Utilisation:

'checked="checked"'; 

au lieu de:

'checked=true'; 
+0

Merci d'avoir répondu, j'ai le même résultat qui est la seule case à cocher en cours de vérification basée sur l'élément contenu dans le tableau. Je crois que le problème est ailleurs. S'il vous plaît n'importe quelle idée? – Selom

0

Utilisez comme ça,

// use striaght like this, here don't use the explode function 


     $i=0; 
while(count($rest_amenities) > $i) 
     { 
switch($rest_amenities[$i]) 
      { 
       case 'Air Conditioned': 
        $checkedAir = 'checked=checked'; 
        break; 

       case 'Bar': 
        $checkedBar = 'checked=checked'; 
        break; 

       case 'Brunch': 
        $checkedBru = 'checked=checked'; 
        break; 

       case 'Party Room'; 
        $checkedPar = 'checked=checked'; 
        break; 
      } 

     $i+=1; 
    } 

Vérifiez maintenant cela.

+0

Merci d'avoir répondu, j'ai le même résultat qui est la seule case à cocher en cours de vérification basée sur l'élément contenu dans le tableau. Je crois que le problème est ailleurs. S'il vous plaît n'importe quelle idée? – Selom

+0

Salut selom, vérifiez maintenant. Vous utilisez exploser (il convertit simplement la chaîne en tableau, donc vous en avez deux dans le tableau.) C'est le problème que vous n'avez rien obtenu). Utilisez la fonction implode (elle convertit le tableau en chaîne afin que vous obteniez le résultat correct) – Karthik

+0

Merci comment puis-je vous donner un vote? – Selom

1

Essayez une approche à court, vous permettra d'économiser beaucoup de com

<tr> 
    <td your styles> 

    Valet 
     <input type="checkbox" name="valet" value="Valet" 
     <? echo ((in_array("Valet", $arrayAmenities) )?"selected=\"selected\"":"") ?> 
     > 

    </td> 
</tr> 

à répéter pour chaque Équipement

+0

'' have 'checked' attribut; 'selected' est pour'