【问题标题】:posting php data within a table inside of a form在表格内的表格中发布php数据
【发布时间】:2017-06-06 12:28:23
【问题描述】:

在下面的代码中,问题是隐藏输入字段(名为“res_id”)的值将固定到表的第一行。知道我在这里运行一个 foreach 循环来生成 res_id 字段的值,我希望每次 foreach 循环重新开始时都有唯一的值。请注意,表格数据字段或<td> 呈现正确的值。换句话说,如果我尝试在操作 php 页面中回显 res_id 的 POST 值,它将保持相同的值!希望我很清楚。非常感谢您的帮助。

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

【问题讨论】:

标签: php mysql forms pdo foreach


【解决方案1】:

在你的 foreach 循环中包含一个行计数器,或者为来自另一个来源的每一行使用一个唯一的 ID

$i_rowcount++;

将输入字段命名为这样,因此您的帖子值中的行 ID 为数组索引键。

<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>';

【讨论】:

  • 我明白了这一点。这就是完美的声音。我只需要一点帮助来弄清楚如何在操作页面中获取这个动态命名的输入字段'name="resid[$i_rowcount]"' 的值。我尝试了我能想到的,但没有运气!谢谢...@Bernhard
  • 如果您有任何其他具体问题,请告诉我!感谢您的评分!
猜你喜欢
  • 1970-01-01
  • 2015-06-04
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 2023-04-05
  • 2022-01-01
相关资源
最近更新 更多