2017-10-12 1 views
-1

Je crée un formulaire et dans le formulaire, tous les champs de saisie s'afficheront dynamiquement. Je suis capable de créer le texte, l'email, le mot de passe, la case à cocher mais pas capable de créer la sélection et la radio. Je dois utiliser la balise select pour le pays et la radio pour le genre.Comment créer dynamiquement le tag HTML select et radio?

J'utilise CodeIgniter.

enter image description here

<?php 
$example_from_name = array('name' => 'user_from_view'); //assigning form name 
echo form_open('formbuilder_control/example_from_view',$example_from_name); 
foreach ($data as $key) { 
    $exp_fields_name=$key->fields_name; //here I am getting the name of field name     
    $exp_fields_type=$key->fields_type; //here I am getting the input type 
    ?> 
    <div class="form-group row label-capitals"> 
     <label class="col-sm-5 col-form-label"><?php echo $exp_fields_name;?></label> 
     <div class="col-sm-7"> 
      <input type="<?php echo $exp_fields_type;?>" name="<?php echo $exp_fields_name;?>" placeholder="<?php echo $exp_fields_name;?>" class="form-control" /> 
      <?php echo form_error($exp_fields_name); ?> 
     </div> 
    </div> 
    <?php 
} 
?> 
<div class="form-buttons-w btn_strip"> 
    <input type="submit" value="Save" class="btn btn-primary margin-10"> 
</div> 
<?php echo form_close(); ?> 
+0

Vous ne pouvez pas donner directement cette zone de texte. Ajoutez-le basé sur 'field_type' en utilisant si condition – KMS

+0

@KMS, Pouvez-vous expliquer un peu plus, j'ai utilisé comme ça parce que je veux du texte, sélectionnez, radio, checkbox etc. –

+0

En fait, Si j'ai utilisé le si et sinon alors, je Je ne reçois pas toute la sortie. J'ai besoin de tous les champs –

Répondre

1

Vous n'avez pas assez de données dynamique pour certains des champs. Vous devrez passer plus de votre base de données. Quelques-unes des champs exigent des valeurs (sélection, radio, case à cocher) Voici la structure de base (comme les autres essayaient de dire):

<?php 
$example_from_name = array('name' => 'user_from_view'); //assigning form name 
echo form_open('formbuilder_control/example_from_view',$example_from_name); 
foreach ($data as $key) { 
    $exp_fields_name=$key->fields_name; //here I am getting the name of field name     
    $exp_fields_type=$key->fields_type; //here I am getting the input type 
    echo "<div class=\"form-group row label-capitals\">"; 
     echo "<label class=\"col-sm-5 col-form-label\">$exp_fields_name</label>"; 
     echo "<div class=\"col-sm-7\">"; 
      if(in_array($exp_fields_type,['text','email','password'])){ 
       echo "<input type=\"$exp_fields_type\" name=\"$exp_fields_name\" class=\"form-control\" />"; 
      }elseif($exp_fields_type=='checkbox'){ 
       echo "<input type=\"$exp_fields_type\" name=\"$exp_fields_name\" value=\"[something needed here]\" class=\"form-control\" /> $exp_fields_name"; 
      }elseif($exp_fields_type=='select'){ 
       echo "<select name=\"$exp_fields_name\">"; 
        echo "<option></option>"; // you will have to determine a way to populate the options 
        // ... more options 
       echo "</select>"; 
      }elseif($exp_fields_type=='radio'){ 
       echo "$exp_fields_name <input type=\"$exp_fields_type\" name=\"$exp_fields_name\" value=\"[something needed here]\" class=\"form-control\" />"; 
      }else{ 
       echo "Whoops, uncaught field type!"; 
      } 
      echo form_error($exp_fields_name); 
     echo "</div>"; 
    echo "</div>"; 
} 
echo "<div class=\"form-buttons-w btn_strip\">"; 
    echo "<input type=\"submit\" value=\"Save\" class=\"btn btn-primary margin-10\">"; 
echo "</div>"; 
echo form_close(); 

Nous, les bénévoles, ne pouvons pas vous aider avec les composants manquants de votre conception. Vous aurez besoin de comprendre comment vous allez passer les options/valeurs nécessaires aux éléments de formulaire html nécessaires.


Si vous connaissez les noms de champs, vous pouvez essayer d'écrire les conditionals en utilisant $exp_fields_name au lieu de $exp_fields_type pour couvrir quelques cas exceptionnels. Peut-être échanger ci-dessus si-bloc avec les éléments suivants:

if($exp_fields_name=='gender'){ 
    echo "<input type=\"radio\" name=\"gender\" value=\"male\" class=\"form-control\" /> Male<br>"; 
    echo "<input type=\"radio\" name=\"gender\" value=\"female\" class=\"form-control\" /> Female"; 
}elseif($exp_fields_name=='country'){ 
    echo "<select name=\"country\" class=\"form-control\" />"; 
     echo "<option>India</option>"; 
     echo "<option>Sri Lanka</option>"; 
     echo "<option>Japan</option>"; 
     // ...continue as needed 
    echo "</select>"; 
}else{ // all other types default to input tag 
    echo "<input type=\"$exp_fields_type\" name=\"$exp_fields_name\" class=\"form-control\" />"; 
} 

Je suppose que les entrées « case à cocher » aura plusieurs entrées, de sorte que vous devrez peut-être écrire un chèque personnalisé pour ce groupe aussi bien.

+0

Je veux savoir Dans le cas où j'ai 2 tags de sélection que je dois utiliser une autre condition esleif pour sélectionner l'étiquette? –

+0

Merci pour l'aide, votre code fonctionne pour moi.Upvote de mon côté. –

+0

Pouvez-vous m'aider dans le lien ci-dessous? Https: // stackoverflow.com/questions/46730730/else-part-is-working-while-autosave-le-data-using-codeigniter –

0

vous devez utiliser IF ou commutateur à l'aide de ce type:

<?php 
    if($exp_fields_type == 'text'){ 
     $input = '<input type="text" name="'.$exp_fields_name;.'" value="" placeholder="" />'; 
    }else if($exp_fields_type == 'radio'){ 
     $input = '<input type="radio" name="'.$exp_fields_name;.'" value="" placeholder="" />'; 
    } 
?> 
+0

J'ai besoin de tous les champs. Je veux dire texte, radio, sélectionnez, case à cocher –

+0

Et votre code radio affichera seulement une seule radio. Je dois montrer le mâle et la femelle. –

0

Votre code ne fonctionne que pour les balises d'entrée. Donc, vous devriez vérifier le type avant de créer l'étiquette par exemple:

<?php 
    if($exp_fields_type == 'select'){   
    $input = '<select name="'.$exp_fields_name.'" placeholder="" > 
       <option value="">option 1 </option> 
       </select>'; 
    }else if($exp_fields_type == 'textarea'){ 
    $input = '<textarea name="'.$exp_fields_name.'"></textarea>'; 

    }else { 
    $input = '<input type="'.$exp_fields_type.'" name="'.$exp_fields_name.'" value="" placeholder="" />'; 
    } 
?> 
+0

Merci pour la réponse, Geeth. Je dois afficher tous les champs. –

+0

j'ai fait quelques changements dans le code. S'il vous plaît, jetez un oeil. – geeth

+0

J'ai essayé votre code mais je ne reçois pas de sortie. Même si je ne reçois aucun champ de saisie, vous avez manqué le point-virgule (;) dans le second elseif et il y a un point-virgule supplémentaire dans l'autre condition dans name = "'. $ exp_fields_name ;." " –