输入类型=“按钮”的值未添加到数据库中

时间:2013-01-14 02:48:55

标签: php html forms input

我在将type="button"表单元素的值添加到mySql数据库时遇到了麻烦,我想知道我是否遗漏了某些内容。

编辑 - 看起来该元素的信息不会从html传递到php,因为它没有回显值。我唯一的问题是这一个元素,表格的其余部分正确提交。

我正在使用它进行在线测验,根据他们选择的图像构建用户个人资料,并将图像设置为按钮元素的背景图像,我正在尝试直接html(而不是使用javascript和单选按钮或复选框)。

<input type="button" name="quiz_start" value="jeans" style="background: url(files/start1.jpg) no-repeat; width:54px;height:140px; cursor:pointer; border:none; color: transparent; font-size : 0">       

为了提出问题,我简化了PHP代码(包括指定用户ID并将其限制为只有一个字段)。我还在下面提供了完整的代码。

<?php
//Start session & connect to database 
$user_id = 3;   

$qry = "INSERT INTO style(user_id, quiz_start) VALUES('$user_id','$_POST[quiz_start]')";
$result = @mysql_query($qry);      
header("location: page2.html");
exit(); 
?>

完整查询是:     

$fieldlist=$vallist='';
foreach ($_POST as $key => $value) { 
 $fieldlist.=$key.',';
 $vallist.='\''.($value).'\',';
}
$fieldlist=substr($fieldlist, 0, -1);
$vallist=substr($vallist, 0, -1);
$fieldlist.=', user_id';
$vallist.=','.$user_id;
$setlist='';
foreach ($_POST as $key=>$value){
$setlist.=$key .'=\''.$value.'\',';
}
$setlist=substr($setlist, 0, -1);  
$result = mysql_query('UPDATE style SET '.$setlist.' WHERE user_id='.$user_id);
if (mysql_affected_rows()==0) {
$result = mysql_query('INSERT INTO style ('.$fieldlist.') VALUES ('.$vallist.')');
}  
header("location: page2.html");
exit();
?>

3 个答案:

答案 0 :(得分:1)

试试这个:

    <?php
//Start session & connect to database 
$user_id = 3;   

$qry = "INSERT INTO style(user_id, quiz_start) VALUES('".$user_id."','".$_POST['quiz_start']."')";
$result = @mysql_query($qry);      
header("location: page2.html");
exit(); 
?>

答案 1 :(得分:1)

看到您无法回显$ _POST ['quiz_start'],这意味着您的值实际上未设置。这是因为当您使用<input type='button'>中的类按钮时,您的表单实际上并未像<input type='submit'>

那样提交

一种解决方案是将您的按钮更改为实际提交并格式化...或者您需要使用按钮中的onClick调用javascript函数,如下所示:

<input type="button" onClick="myfunction()">

关于我所说的内容,请参阅this post

如果您说其余的表单值提交正常但只是按钮值不起作用,则根据您的偏好,您可以使用几种不同的解决方案。

  1. 使用选择字段或复选框供人们选择您可以传递数据的类型。
  2. 使用<input type="button" onClick="myfunction()">在javascript中提交表单,然后在javascript中运行更新查询。
  3. 最后,如果您仍想在PHP中运行查询,可以运行javascript函数进行AJAX调用以返回JSON信息,在该信息中您可以在页面加载后定义php变量,然后可以将其插入到更新查询。

答案 2 :(得分:1)

由于看起来输入类型=“按钮”无法捕获用户的选择,我想分享一个非常简单的方法,我想通过单选按钮或仅使用html的复选框来执行此操作。

您需要做的就是将输入元素设置为style="display:none",并使用标签标记环绕图像和输入元素,以便用户可以单击图像上的任意位置以选择元素: - )

<label for="quiz_start">
<img src="files/start1.jpg" />
<input style="display:none" type="radio" id="quiz_start" name="quiz_start" value="jeans">    
</label>