2010-09-01 173 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 =圖片元素就會改變所採取的動作,否則之前提出的隱藏元素的解決方案會如前面所述的那樣做。

相關問題