我有一个小问题,我试图捕获两个按钮的输入,一个是,一个没有,进入数据库但由于某种原因数据库并不总是显示点击按钮的值,它只是显示空白。
<form action="refer.php" method="post" id="formID" >
<div class="prompt_container" style="float: left;">
<span class="prompt_item"><input type="image" src="images/yes.jpg"
alt="submit" value="yes" onclick="this.disabled=true,this.form.submit();"
/></span>
<input type="hidden" name="refer" value="yes">
</div>
</form>
<form action="thank_you.php" method="post" id="formID" >
<div class="prompt_container" style="float: right;">
<span class="prompt_item"><input type="image" src="images/no.jpg"
alt="submit" value="no" onclick="this.disabled=true,this.form.submit();"
/></span>
<input type="hidden" name="refer" value="no" >
</div>
</form>
以下是将其全部写入数据库的代码
session_start();
$name = $_SESSION['name'];
$tel = $_SESSION['tel'];
$email = $_SESSION['email'];
$refer = $_POST['refer'];
$curDate = date("Y-m-d");
mysql_connect ("host", "user", "pass") or die ('Error: ' . mysql_error());
mysql_select_db ("database");
$query = "INSERT INTO Table (id, name, tel, email, refered, date)
VALUES('NULL', '".$name."', '".$tel."', '".$email."', '".$refer."', '".$curDate."')";
mysql_query($query) or die (mysql_error());
显然,低于IE8的任何内容都会忽略所有<input type="image">
表单输入的value属性。
我怎样才能让它在所有浏览器中正常运行?可能是jQuery还是Javascript?
答案 0 :(得分:3)
问题可能是在坐标上点击(1,2):
<input type="image" name="foo" value="bar"/>
IE将通过:
foo.x=1&foo.y=2
其他浏览器将通过的地方:
foo=bar&foo.x=1&foo.y=2
因此,要使图像输入跨浏览器工作,您需要嗅探name.x
参数的存在,而不仅仅是name
。
如果您需要两个不同的图像按钮,这意味着它们需要有两个单独的名称,而不是依赖于可能无法解析的不同value
:
<input type="image" name="foo.bar"/>
<input type="image" name="foo.bof"/>
然后在服务器端检查是否存在参数foo.bar.x
和foo.bof.x
。
[编辑:编辑]
<input type="image" value="yes"/>
这不起作用。如果没有name
属性,image
输入不是成功的控件,因此value
将不会被传递,并且协调数据也可能无法传递。
<input type="hidden" name="refer" value="yes">
无论点击哪个image
,都会提交两个隐藏的输入。 image
输入的成功不会影响任何其他hidden
元素的成功。
$query = "INSERT INTO Table (id, name, tel, email, refered, date) VALUES('NULL', '".$name."', '".$tel."', '".$email."', '".$refer."', '".$curDate."')";
那里有一些非常危险的SQL注入。您应该与mysql_real_escape_string
或参数化查询结交朋友。
答案 1 :(得分:2)
为输入提供不同的名称,检查提交的数据中是否存在name.x
。
答案 2 :(得分:0)
我注意到您在提交表单之前禁用了输入。
你不能这样做,如果你想提交这些输入的值。禁用的输入未提交。
您需要做的是首先将值复制到某些隐藏的输入。