2017-01-21 3 views
0

В следующем коде проблема состоит в том, что значение скрытого поля ввода (с именем «res_id») будет зафиксировано в первой строке таблицы. Зная, что я запускаю цикл foreach здесь, чтобы генерировать значение полей res_id, я ожидаю иметь уникальные значения за каждый раз, когда цикл foreach начинается. Обратите внимание, что поле данных таблицы или <td> отображает правильное значение. Другими словами, если я попытаюсь повторить значение POST значения res_id на странице действия php, оно останется тем же самым значением! надеюсь, я поняла. Ваша помощь очень ценится.публикация php-данных внутри таблицы внутри формы

<div> 
<form id="form_st_feedback" class="form-horizontal" action="st_fdbk.php" method="post" onsubmit="return confirm('Are you sure?');"> 
     <table class="table table-bordered"> 
      <thead> 
       <th style="width:10%; padding:0px; margin:0px;">Res. ID</th> 
       <th style="width:10%; padding:0px; margin:0px;">Class Date</th> 
       <th style="width:10%; padding:0px; margin:0px;">Tutor</th> 
       <th style="width:15%; padding:0px; margin:0px;">How was your class?</th> 
       <th style="width:55%; padding:0px; margin:0px;">Your comment</th> 
      </thead>    
      <tbody> 
      <?php 
    $tt=null; 
    $rr = null; 
    $mypdo2 = Database::connect(); 
    $mypdo2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $mysql3 = "SELECT * FROM tbl_reservation WHERE res_st_id = $user_id AND res_del=FALSE AND teacher_cant_mkit=FALSE ORDER BY res_date"; 
    $myq3 = $mypdo->prepare($mysql3); 
    $myq3->execute(array()); 
    $mydata3 = $myq3->fetch(PDO::FETCH_ASSOC); 



     foreach ($mypdo2->query($mysql3) as $row) { 
      $res_id=$row['res_id']; 
      $mysql4 = "SELECT * FROM tbl_st_page_feedbk WHERE fb_res_id = ? LIMIT 1"; // linking to feedback table 
      $myq4 = $mypdo2->prepare($mysql4); 
      $myq4->execute(array($res_id)); 
      $mydata4 = $myq4->fetch(PDO::FETCH_ASSOC); 

       $tt=$row['res_date'].$row['res_time']; 
       $str_tt0= date('m/d/Y H:i', strtotime($tt)); 
       $str_tt=strtotime($str_tt0); 
       if ( ($str_tt - $timenow<=-600)) { //10 mins after class started 
       echo '<tr>'; 
        echo '<td>'. $res_id .'</td>'; 
        echo "<input type='hidden' name='res_id' value='$res_id'>"; 
        echo '<td>'. $row['res_date'].'<br />'.$row['res_time'] .'</td>'; 
        if ($row['res_tut_id']==10) {echo '<td>' . 'Kim' . '</td>';} 
        if ($row['res_tut_id']==16) {echo '<td>' . 'Morly' . '</td>';} 
        if ($row['res_tut_id']==22) {echo '<td>' . 'Arlene' . '</td>';} 
          if ($row['st_rep_feedbk']=='NO') { 
          echo '<td>' .'<select name="selected_quality"style="color:blue;"> 
               <option value="Excellent">Excellent (5/5)</option> 
               <option value="Good">Good (4/5)</option> 
               <option value="Fair">Fair (3/5)</option> 
               <option value="Poor">Poor (2/5)</option> 
               <option value="Very Poor">Very Poor (1/5)</option> 
             </select>' 
           .'</td>'; 
          echo '<td>' 
             .'<textarea id="comment_txt" name="comment_txt" style="color:#00f; display:inline; flloat:left;" rows="2" maxlength="80" value=""></textarea>' 
             .'<br />' 
             .'<button id="submit" type="submit" class="btn btn-success" style="display:block; margin:2px auto; padding:2px 5px;">Submit</button>' 
            .'</td>'; 
          } 
          else { echo '<td>'.$mydata4['fb_quality'].'</td>'; 
            echo '<td>'.$mydata4['fb_comment'].'</td>'; 
            } 
       echo '</tr>'; 
      } // end of if 
      } //end of foreach 
      Database::disconnect(); 
      ?> 
      </tbody> 
     </table> 
    </form> 
    </div> 
+0

проблема в том, что у вас есть несколько элементов с тем же именем! Сделайте это 'name = 'res_id []''! – Jeff

+0

Дополнительная информация: http://stackoverflow.com/questions/4688880/html-element-array-name-something-or-name-something – Jeff

ответ

0

включает счетчик строк в цикле Еогеаспа или использовать уникальный идентификатор для каждой строки из другого источника

$i_rowcount++; 

имени входного поле, как это, поэтому у вас есть идентификатор строки в ваших почтовых значениях как массив-индекс-ключ.

<input type="hidden" name="resid[$i_rowcount]" value="your value"> 

результат будет, что у вас есть массив, когда вы щелкаете пост, который выглядит как этот

resid 
1 => value of first row 
2 => value of second row 
... 

и в случае, если вы хотите, чтобы исправить значения вашего выбора поля, сделать это то же самое путь

$a_options = array(1 => 'Very Good', 
        2 => 'Good', 
        3 => 'Average'); 

echo '<select name="selected_quality[$i_rowcount]"style="color:blue;">'; 
foreach($a_options as $i_key => $s_value){ 
echo '<option'.($_POST['selected_quality'][$i_rowcount] == $i_key ? ' selected="selected"' : '').' value="'.$i_key.'">'.$s_value.'</option>'; 
} 
echo '</select>'; 
+0

Я вижу здесь пункт. Это идеальный звук. Мне просто нужна небольшая помощь, пытаясь выяснить, как получить значение этого динамически названного поля ввода «name =» остаток [$ i_rowcount] »на странице действия. Я пробовал то, что мог придумать, но не повезло! Спасибо ... @Bernhard – Ali

+0

если у вас есть другие вопросы, дайте мне знать! спасибо за рейтинг! – Bernhard