2011-05-13 2 views
-1

J'ai un formulaire dans une visionneuse (fancybox). J'essaie de faire un ajax pour lancer une mise à jour de la base de données. Mais je ne sais pas pourquoi ça ne marche pas. Le code ci-dessous est ce qui est dans la lightbox:php, jQuery, Lightbox, Ajax GET et le post POST

<div id="timezonelightbox"> 

<div class="lightboxtitle">Select Time Zone</div> 

<form method="get" action="" > 

<select name="timezones" id="timezones" class="selecttimezones"> 

<option value="Africa/Abidjan ">Africa/Abidjan </option> 

<option value="Africa/Accra  ">Africa/Accra </option> 

<option value="Africa/Addis_Ababa ">Africa/Addis_Ababa </option> 

<option value="Africa/Algiers ">Africa/Algiers </option> 

<option value="Africa/Asmara">Africa/Asmara</option> 

</select> 

<input type="button" id="confirmtimezone" class="confirmtimezone" value="Confirm now" 
onclick="updateTimeZone(); $.fancybox.close();"> 
</form> 

</div> 

<script type="text/javascript"> 

     function updateTimeZone(){ 

       $.getScript('<?echo $site["url"];?>/updateTimeZone.php?timezones=<?echo $_GET["timezones"]?>'); 

} 

     </script> 

C'est ce que j'ai dans le fichier appelé:

header("content-type:text/js"); 

if(isset($_GET['timezones'])){ 

$queryupdatetimezone="UPDATE `Profiles` SET `TimeZone` ='".$_GET['timezones']."' WHERE 
ID=".(int)$_COOKIE['memberID']; 

$resultupdatetimezone=mysql_query($queryupdatetimezone) or die("Errore update default timezones: ".mysql_error()); 

    exit; 

}else{ 

?>alert ('An error occured');<? 

} 
?> 

Tout semble bien quand je clique sur le bouton de confirmation. Pas d'erreurs Mais quand je regarde dans la base de données, il enregistre une chaîne vide. $ _GET ['fuseaux horaires'] est vide. Comment est-ce possible? Qu'est-ce que je fais mal?

+0

pour écrire du code ici: multiligne: entend chaque ligne au moins 4 espaces. Pour le code en ligne entourez votre code avec '=' test' –

+0

Wow, n'est pas cette question du jour – Starx

+0

@DiegoP, sur le côté droit, alors que vous posez votre question ou la question d'édition sont les informations sur l'écriture de question efficace. – Starx

Répondre

0

C'est une chaîne emtry, car vous envoyez une chaîne vide. Regardez cette ligne que vous avez affichée:

$.getScript('/updateTimeZone.php?timezones='); 

Vous avez probablement oublié de donner le fuseau horaire que vous vouliez en là comme ceci:

$.getScript('/updateTimeZone.php?timezones=THE_TIMEZONE'); 

Remplacer THE_TIMEZONE avec le fuseau horaire que vous voulez définir ...

+0

désolé mais ce n'est pas le problème. La valeur de la boîte de sélection est là. Cela ne fonctionne pas correctement car le code est incorrect. Je ne suis pas un programmeur expérimenté, je joue juste avec le code. Je connais les choses les plus difficiles parfois, et je ne connais pas les plus simples d'autres fois. C'est mon problème. Merci –

+0

@Diego: Le problème est que vous créez la valeur des fuseaux horaires lorsque le serveur rend la page. La valeur qui est sélectionnée par l'utilisateur est _ignored_. Analysez la situation et pensez aux parties de votre code qui sont exécutées à quel moment - lorsque le serveur envoie la page ou lorsque l'utilisateur interagit avec lui. – Arsen7