如何从循环显示的表单中收集输入字段的值

时间:2016-02-02 15:40:50

标签: php

我有一个表单,其中输入字段通过while循环显示但是我遇到了从输入字段收集数据以保存到DB的问题。什么应该是可能的PHP脚本来收集表单数据?

if(isset($_GET['submit'])){
    //collect form data
}


$sql="SELECT * FROM epl";
$result=mysqli_query($db_conx,$sql);
if($nr=mysqli_num_rows($result)>0){

这两个变量初始化为1,在while循环中使用,以增加值将作为输入字段的名称。

$Inum1=1;
$Inum2=1;
while($row=mysqli_fetch_array($result)){
  $t1=$row['team1'];
  $t2=$row['team2'];
  echo '<form METHOD="get">
    <div class="block">
    <div class="epl_form_g">
    <div class="eplT">
      <label >'.$t1.'</label>
    </div>
      <input type="text" name="t_'.$Inum1.'_score" id="input">
    </div>

    <label class="vs">vs</label>

    <div class="epl_form_g">
    <input type="text" name="t_'.$Inum2.'_score" id="input">
    <div class="eplT">
      <label>'.$t2.'</label>
      </div>

    </div> 
    </div> ';
    $Inum1++;
    $Inum2++;
}
echo ' <center><input name="submit" type="submit" value="ENTER NOW!"  
style="width:30%; background-color:#379BFF; text-align:center;border:none; border-radius:3px; height:41px; color:#FFF; 
font-size:24px; box-shadow:none; margin-top:20PX;">
  </form>';
}

1 个答案:

答案 0 :(得分:0)

由于每个记录都有一个表单,并且每个表单都有自己的提交按钮,因此它们在页面上实际上是唯一且独立的实体,这意味着可以重复字段名称(但是ID不能)

表单已提交,并且只有通过表单提交发送的该行的数据 - 使用预定义的字段名t_1_scoret_2_score,因此从$ _GET数组中获取值很简单并在更新/插入语句中使用它们。如果是更新语句,那么我认为每个表单都需要一个隐藏字段,其中包含db记录的ID。

/* process form submission */
if( isset( $_GET['t_1_score'],$_GET['t_2_score'] ) ){

    /* 
       As you submit only 1 form at a time the field names
       can be the same in each form
    */
    $score_team_1=$_GET['t_1_score'];
    $score_team_2=$_GET['t_2_score'];

    /* pseudo database code */
    $sql='insert or update some table';
    $res=$db->query( $sql );
}


/* display your form and the input fields for each row */
if( $result ){
    while( $row=mysqli_fetch_array( $result ) ){
        $t1=$row['team1'];
        $t2=$row['team2'];
        /*$id=$row['id'];*/

        echo "
        <form method='get'>
            <div class='block'>
                <div class='epl_form_g'>
                    <div class='eplT'><label>".$t1."</label></div>
                    <input type='text' name='t_1_score'>
                </div>

                <label class='vs'>vs</label>

                <div class='epl_form_g'>
                    <input type='text' name='t_2_score'>
                    <div class='eplT'><label>".$t2."</label></div>
                </div>
                <!--<input type='hidden' name='id' value='{$id}' />-->
                <input name='sub' type='submit' value='ENTER NOW!' style='width:30%; background-color:#379BFF; text-align:center; border:none; border-radius:3px; height:41px; color:#FFF; font-size:24px; box-shadow:none; margin-top:20px auto 0 auto; float:none;' />
            </div>
        </form>";
    }
}