我在将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();
?>
答案 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。
如果您说其余的表单值提交正常但只是按钮值不起作用,则根据您的偏好,您可以使用几种不同的解决方案。
<input type="button" onClick="myfunction()">
在javascript中提交表单,然后在javascript中运行更新查询。答案 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>