我有一个表单,其中输入字段通过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>';
}
答案 0 :(得分:0)
由于每个记录都有一个表单,并且每个表单都有自己的提交按钮,因此它们在页面上实际上是唯一且独立的实体,这意味着可以重复字段名称(但是ID不能)
表单已提交,并且只有通过表单提交发送的该行的数据 - 使用预定义的字段名t_1_score
和t_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>";
}
}