2010-09-01 5 views
0

le code ci-dessous fonctionne parfaitement dans FF et CHROME mais pas dans IE. S'il vous plaît aider. J'ai commenté mes fonctions de santize comme je pensais qu'ils pourraient l'affecter, mais il fait toujours la même chose .... rien dans IE. Merci d'avance pour toute assistance.PHP SQL UPDATE fonctionne dans FF et CHROME mais pas dans 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); 
} 
?> 

et l'extrémité avant ....

<? 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>"; 
} 
?> 

Dan

+2

MySQL n'a rien à voir avec le navigateur; navigateurs = client, PHP + MySQL = serveur –

+1

Le code backend ne serait pas traité de différentes manières pour les navigateurs différents retraité sur le serveur. Postez votre code HTML –

+0

@Daniel Hanly: Mais étonnamment, il y a assez de différence dans la gestion des formulaires pour que les différents navigateurs envoient un ensemble de données différent à partir du même formulaire, ce qui donne l'impression que l'entrée est la même. t. – Piskvor

Répondre

2

Vous devriez publier votre front-end, pas de back-end (car il est à peu près pas dépendant du navigateur).

Votre HTML n'est probablement pas valide.

Edit:

Yep, IE ne prend pas de valeur pour le type d'image d'entrée. Il envoie seulement le x & y (field_name_x, field_name_y) et rejette totalement l'attribut "value" d'origine.

Essayez plutôt une entrée masquée.

+0

merci, posté. – Dan

+0

Mettez donc le nom = 'updatebucket' value = 'updatebucket' dans une autre entrée cachée et avez juste l'image comme "soumettre"? ou dois-je me débarrasser de l'image comme le bouton soumettre tous ensemble? Merci. – Dan

+0

il suffit d'ajouter un champ caché, gardez l'image mais pour soumettre seulement :) – Kemo

0

Il semble que input type='image' n'envoie pas la valeur lorsqu'il est utilisé par IE. Vous aurez besoin d'un autre champ caché:

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

De cette façon, le paramètre updatebucket sera affiché sur le serveur, quel que soit le navigateur utilisé.

L'hypothèse ici était que tous les navigateurs gèrent les formulaires HTML de la même manière (et ils ne le font pas); c'est pourquoi je garde l'excellent Fiddler d'Eric Lawrence - il peut différer deux requêtes HTTP, donc vous verrez immédiatement la différence entre les navigateurs.

+0

Merci Piskvor. C'est excellent!! :) – Dan

0

Une alternative serait de vérifier $_POST[{image-element-name}_x}] (dans ce cas $_POST['updatebucket_x']. Tous les navigateurs envoyer les coordonnées x/y de l'élément d'image updatebucket.x & updatebucket.y et PHP en mode silencieux (et frustrante) modifie la updatebucket.x-updatebucket_x. Ensuite, Encore une fois, vous n'avez besoin que de cliquer sur un autre type d'entrée = submit/type = les éléments d'image modifieraient l'action, sinon la solution précédente d'un élément caché comme précédemment le ferait

Questions connexes