【问题标题】:Data From While Loop来自 While 循环的数据
【发布时间】:2014-02-17 23:02:48
【问题描述】:

如果我提交表单,如果选择框在 while 循环内,我如何将值传递给 process.php 页面。有什么解决方案或选择吗?

<form role="form" method="post" action="process.php" >
<?php 
    $endDate = '2014-01-28';
    $startDate = '2014-01-27';

    $daydiff = floor( ( strtotime( $endDate ) - strtotime( $startDate ) ) / 86400 );

    $x=0; 
    while($x<=$daydiff)
    {
        ?>
            <div class="form-group">
                <label for="day_name">Day Name</label>
                <select class="form-control" name="day_name">
                    <option value="monday">Monday</option>
                    <option value="tuesday">Tuesday</option>
                    <option value="wednesday">Wednesday</option>
                    <option value="thursday">Thursday</option>
                </select>
            </div>
            <div class="form-group">
                <label for="time">time</label>
                <select class="form-control" name="time">
                    <option value="10am">10am</option>
                    <option value="11am">11am</option>
                    <option value="12pm">12pm</option>
                    <option value="1pm">1pm</option>
                </select>
            </div>
        <?php
        $x++;
    } 
?>
<button type="submit" name="submit">Submit</button>
</form>

【问题讨论】:

  • $_POST['day_name'], $_POST['time']
  • 您的问题不清楚。首先我在您的代码中的任何地方都看不到 $_POST['day_name'] 和 $_POST['time']。请提供所需的代码。
  • 你的问题不清楚???您想要什么...如果您提交表单,那么只有您可以获得 $_POST 并且您需要有表单标签
  • 您想要选中的框还是所有选项?
  • 如果我的组合框在循环时在里面,我如何从组合框中检索值?

标签: php mysql arrays while-loop


【解决方案1】:

您没有得到值,因为在 While 循环中创建的所有 &lt;select&gt; 框都具有相同的名称。请更改这些选择框的名称。试试下面的代码来渲染&lt;select&gt;box:

<?php 
   $endDate = $_POST['enddate'];
   $startDate = $_POST['startdate'];

   $daydiff = floor( ( strtotime( $endDate ) - strtotime( $startDate ) ) / 86400 );

   $x=0; 
   while($x<=$daydiff)
   {?>
      <select class="form-control" name="day_name_<?php echo $x;?>">
        <option value="monday">Monday</option>
        <option value="tuesday">Tuesday</option>
        <option value="wednesday">Wednesday</option>
        <option value="thursday">Thursday</option>
      </select>
      <select class="form-control" name="time_<?php echo $x;?>">
        <option value="10am">10am</option>
        <option value="11am">11am</option>
        <option value="12pm">12pm</option>
        <option value="1pm">1pm</option>
      </select>
      <?php                             
      $x++;
   }?>

现在,通过保留$daydiff 变量值,在while 循环中检索这些值;

【讨论】:

    【解决方案2】:
    $selectOption = $_POST['day_name'];
    
    <select class="form-control" name="day_name">
            <option value="monday">Monday</option>
            <option value="tuesday">Tuesday</option>
            <option value="wednesday">Wednesday</option>
            <option value="thursday">Thursday</option>
    </select>
    

    【讨论】:

      【解决方案3】:

      首先通过在选择框名称的末尾添加数字来更改 HTML 代码。 然后添加新的隐藏变量以保持选择框计数。

      $endDate = $_POST['enddate'];
      $startDate = $_POST['startdate'];
      
      $daydiff = floor(( strtotime($endDate) - strtotime($startDate) ) / 86400);
      
      $x = 0;
      while ($x <= $daydiff) {
          ?>
          <select class="form-control" name="day_<?php echo $x; ?>">
              <option value="monday">Monday</option>
              <option value="tuesday">Tuesday</option>
              <option value="wednesday">Wednesday</option>
              <option value="thursday">Thursday</option>
          </select>
          <select class="form-control" name="time_<?php echo $x; ?>">
              <option value="10am">10am</option>
              <option value="11am">11am</option>
              <option value="12pm">12pm</option>
              <option value="1pm">1pm</option>
          </select>
          <?php
          $x++;
      }
      ?>
      <input type="hidden" name="count" value="<?php echo $x ?>"/>
      

      在您的表单提交中使用此代码来获取所需的数据。

      for ($i = 0; $i < $_POST['count']; $i++) {
          $day_var = 'day_' . $i;
          $days_list[] = $_POST[$day_var];
      
          $time_var = 'time_' . $i;
          $time_list[] = $_POST[$time_var];
      }
      
      print_r($days_list);
      print_r($time_list);
      

      【讨论】:

      • 我尝试了您的代码及其工作,但是。它只为每个数组存储 1 个值。
      • @canyon 请你再检查一次。我已经更改了从提交数据收集代码。这个对我有用。这是我用来测试代码的示例数据数组。 $_POST= 数组('day_0' => 0, 'day_1' => 1, 'day_2' => 2, 'time_0' => 0, 'time_1' => 1, 'time_2' => 2, 'count' => 3);
      猜你喜欢
      • 2011-01-30
      • 1970-01-01
      • 2023-04-07
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      • 2021-11-14
      相关资源
      最近更新 更多