2014-01-27 5 views
-2

Если я отправлю форму, как передать значение на страницу process.php, если поле выбора находится внутри цикла while. Есть ли какое-либо решение или вариант?Данные из цикла while

<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> 
+1

$ _POST [ 'day_name'], $ _POST [ 'время'] –

+0

ваш вопрос не clear.first всего я не могу видеть $ _POST [ 'day_name'] и $ _POST [ 'время'] в любом месте в вашем коде. Введите требуемый код. –

+0

Ваш вопрос непонятен ??? что вы хотите ... если вы отправляете форму, тогда вы можете получить $ _POST, и вам нужно иметь тег формы –

ответ

0

Сначала измените код 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); 
+0

Я пробую ваш код и его работу, но. Он просто сохраняет 1 значение для каждого массива. – canyon

+0

@canyon Пожалуйста, можете проверить это снова. Я изменил код отправки данных. меня устраивает. Это образец массива данных, который я использовал для проверки кода. $ _POST = массив ( 'day_0' => 0, 'day_1' => 1, 'DAY_2' => 2, 'time_0' => 0, 'time_1' => 1, 'time_2' = > 2, 'count' => 3 ); – Duli

0

Вы не получаете значение, потому что все <select> окно создается в цикле While имеют такое же имя. Измените имя этого окна выбора. Попробуйте ниже кода для визуализации <select> окна:

<?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 значения переменного;

0
$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> 
Смежные вопросы