2016-11-20 8 views
1

Desired Output php配列からhtmlフォームを表示したい。私は(名)入力と(姓)入力を1行にしたい。いずれかが、私はこの問題を解決するのに役立つことができれば、私は感謝するでしょう私は、ブートストラップ行クラスを使用していたが、それはPHPの配列からのHTMLフォーム

 <div class="row">first name </div> 
     <div class="row">Last name </div> 

のように別々の行に両方の入力を叩く音!

<?php 

     $form = array(

        'fname' => array(
         'title' => 'First Name', 
         'type' => 'text', 
         'size' => '50', 
        ), 

        'lname' => array(
         'title' => 'Last Name', 
         'type' => 'text', 
         'size' => '50', 
        ), 

     'email' => array(
         'title' => 'Email', 
         'type' => 'email', 
         'class' => 'form-control', 
         'size' => '50', 

        ), 
     'submit' => array(
         'title' => 'Register', 
         'type' => 'submit', 
         'size' => '50', 
         'class' => 'form-control', 

        ), 
     ) 

      ?> 

     <form action="" method="post"> 
    <?php 

     foreach ($contact_form as $name => $elements) { 

      $label = '<label>' . $elements['title'] . '</label><br>'; 

      if ($elements['type'] == 'text') { 

       echo '<div class="row">'; 
       echo $label . '<input type="' . $elements['type'] . '" name="' . $name . '" size="' . $elements['size'] . '" >'; 
       echo '</div>'; 

      } elseif ($elements['type'] == 'email') { 
       echo '<div class="row">'; 
       echo $label . '<input type="' . $elements['type'] . '" name="' . $name . '" size="' . $elements['size'] . '">' . form_error($name) . '<br>'; 
       echo '</div>'; 

      }else{ 

       echo '<input type="' . $elements['type'] . '" name="' . $name . '" value="' . $elements['title'] . '" size="' . $elements['size'] . '">' ; 
      } 
     } 
    ?> 
</form> 
+0

_「私は、ブートストラップ行クラスを使用していたが、それはのような個別の行に両方の入力を叩く音」_だけでなく、あなたが 'row'クラスが何をするか期待していますか?あなたは、列を使用する必要がありますhttp://getbootstrap.com/css/#grid – Turnip

+0

私は別の行ではなく、1つの行に両方の入力をしたい – Abid

+0

私はちょうど同じ結果をフォーム – Abid

答えて

0

PHP配列を更新し、パーセンテージの代わりにブートストラップサイジングを使用するようにします。私も

$form = [ 
    [ 
     'title' => 'First Name', 
     'name' => 'first_name', 
     'type' => 'text', 
     'cols' => '6', 
    ], 
    [ 
     'title' => 'Last Name', 
     'name' => 'last_name', 
     'type' => 'text', 
     'cols' => '6', 
    ], 
    [ 
     'title' => 'Email', 
     'name' => 'email', 
     'type' => 'email', 
     'cols' => '6', 
    ], 
    [ 
     'title' => 'Register', 
     'type' => 'submit', 
     'cols' => '6', 
    ], 
] 

その後、あなたは、foreachループを使用してフォームを作成するためのデータ、

<div class="container"> 
    <form class="form-horizontal"> 

    <?php foreach ($form as $element): ?> 

     <div class="col-sm-<?= $element['cols'] ?>"> 

     <?php if ($element['type'] == 'submit): ?> 

      <button type="submit" class="btn btn-default"><?= $element['title'] ?></button> 

     <?php else: ?> 

      <div class="form-group"> 
      <label for="<?= $element['name'] ?>" class="col-sm-4 control-label"><?= $element['title'] ?></label> 
      <div class="col-sm-8"> 
       <input type="<?= $element['type'] ?>" class="form-control" id="<?= $element['name'] ?>" name="<?= $element['name'] ?>"> 
      </div> 
      </div> 

     <?php endif; ?> 

     </div> 

    <?php endforeach; ?> 

    </form> 
</div> 

がテストされていないことを使用することができますが、遠くではありません...他の微調整のカップルを作りましたオフ...

+0

こんにちはSteve!私はPHPのforeachループなしでこれを試したが、うまく動作しますが、私はループを使用するときに2つの行に壊れます。 – Abid

+0

はシンプルに見えますが、私はそれを正しく得ることができません – Abid

+0

書き換えられた答え。 – Steve

0

条件で管理できます。

  foreach ($form as $name => $elements) { 
      if($name != 'lname'){ 
      echo '<div class="row">'; 
      } 
      // Code here 
      if($name != 'lname'){ 
      echo "</div>"; 
      } 

}

関連する問題