我有麻烦将type="button"
表单元素的值添加到mySql数据库,我想知道我是否错过了一些东西。
Edit -它看起来不像该元素的信息正在从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();
?>
看到您无法回显$_POST['quiz_start'],这意味着您的值实际上没有设置。这是因为当你在<input type='button'>
中使用类按钮时,你的表单实际上并没有像<input type='submit'>
一个解决方案是将按钮更改为实际的提交和格式…或者你需要从你的按钮调用一个带有onClick的javascript函数,如:
<input type="button" onClick="myfunction()">
关于我所说的参考,请看这篇文章。
如果正如你所说的,其余的表单值都提交得很好,但只有按钮值不起作用,你有几个不同的可能的解决方案,这取决于你的偏好。
- 使用选择字段或复选框让人们选择可以传递数据的类型。
- 在javascript中使用
<input type="button" onClick="myfunction()">
提交表单,然后在javascript中运行更新查询。 - 最后,如果你仍然想在PHP中运行你的查询,你可以运行一个javascript函数,使AJAX调用返回JSON信息,你可以在页面加载后定义一个PHP变量,然后你可以插入你的更新查询。
试试这个:
<?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();
?>
因为input type="button"似乎不能捕获用户的选择,所以我想分享我想出的一个非常简单的方法,只使用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>