2010-09-01 136 views
0

下面的代码在FF和CHROME中完美工作,但不在IE中。请帮忙。我已经评论了我的美食功能,因为我认为他们可能会影响它,但它仍然是一样的......在IE中什么都没有。 非常感谢您的帮助。PHP SQL UPDATE在FF和CHROME中工作,但不在IE中?

<?php 

//IF UPDATE BUCKET CHANGE STATUS... 
if(isset($_POST['updatebucket'])){ 


$complete = $_POST["complete"]; 
$bucketid = $_POST["bucketid"]; 

//$complete = sanitizeone($_POST["complete"], "plain"); 
//$complete = strip_word_html($complete); 
//$bucketid = sanitizeone($_POST["bucketid"], "plain"); 
//$bucketid = strip_word_html($bucketid); 

if ($complete=="1") 
    $complete = "0"; 
else 
    $complete = "1"; 

$updatebucket = "UPDATE membersbuckets SET complete = '$complete' WHERE userid = '$userid' AND bucketid = '$bucketid'"; 
mysql_query($updatebucket); 
} 
?> 

和前端....

<? if ($complete=="1") { 
    echo "<form action='' method='post' name='updatebucket'><input name='complete' type='hidden' value=" .$complete. " /><input name='userid' type='hidden' value=" .$userid. " /><input name='bucketid' type='hidden' value=" .$bucketid. " /><input type='image' name='updatebucket' value='updatebucket' src='images/tick.png' /></form>"; 
    }else{ 
    echo "<form action='' method='post' name='updatebucket'><input name='complete' type='hidden' value=" .$complete. " /><input name='userid' type='hidden' value=" .$userid. " /><input name='bucketid' type='hidden' value=" .$bucketid. " /><input type='image' name='updatebucket' value='updatebucket' src='images/cross.png' /></form>"; 
} 
?> 

+2

MySQL与浏览器无关;浏览器=客户端,PHP + MySQL =服务器 – 2010-09-01 12:42:29

+1

对于不同的浏览器,后端代码不会以不同的方式进行处理,因为这是p漫游在服务器上。发布您的HTML – 2010-09-01 12:42:41

+0

@Daniel Hanly:但令人惊讶的是,在表单处理方面有足够的差别,即不同的浏览器将从同一表单发送不同的数据集,这看起来似乎是输入相同,但输出不是'吨。 – Piskvor 2010-09-01 13:15:47

回答

2

你应该张贴您的前端,没有后端(因为它几乎不依赖于浏览器)。

您的HTML可能无效。

编辑:

是的,IE不会为图像类型的输入值。它仅发送y(field_name_x,field_name_y)并完全丢弃原始的“值”属性。

请尝试使用隐藏输入。

+0

谢谢,贴。 – Dan 2010-09-01 12:43:53

+0

因此,在另一个隐藏的输入中输入name ='updatebucket'value ='updatebucket',并将图像作为“提交”?或者我必须一起摆脱作为提交按钮的图像? 谢谢。 – Dan 2010-09-01 12:52:05

+0

只是添加一个隐藏的领域,保持图像,但只提交:) – Kemo 2010-09-01 12:53:53

0

看来input type='image'从IE中使用时不会发送值。你需要另一个隐藏字段:

<input type='hidden' name='updatebucket' value='updatebucket' /> 
<input type='image' src='images/tick.png' /> 

这样一来,updatebucket参数将被发送到服务器,无论使用哪种浏览器。

这里的假设是所有的浏览器都以同样的方式处理HTML表单(而且他们不这样做)。这就是为什么我保持Eric Lawrence出色的Fiddler的原因 - 它可以区分两个HTTP请求,所以您会立即看到浏览器之间的差异。

+0

谢谢Piskvor。这非常好! :) – Dan 2010-09-01 13:03:08

0

另一种方法是,以检查$_POST[{image-element-name}_x}](在这种情况下$_POST['updatebucket_x']。所有的浏览器将发送图像元素的x/y坐标为updatebucket.x & updatebucket.y,和PHP静默(和令人沮丧)改变updatebucket.xupdatebucket_x。然后再次,你只需要点击不同的输入类型= submit/type =图片元素就会改变所采取的动作,否则之前提出的隐藏元素的解决方案会如前面所述的那样做。

相关问题