Problème de formulaire avec du php et du js

Résolu/Fermé
ploufe Messages postés 3 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 22 août 2008 - 20 août 2008 à 23:57
ploufe Messages postés 3 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 22 août 2008 - 22 août 2008 à 11:37
Bonjour à tous,

Tout d'abord, je m'excuse pour la clarté de mon code qui n'est pas forcément parfaite (voir forcement pas parfaite...) je débute !

Je développe un petit site de pronostics sur des match de rugby. Un fois connecté, on a accès à une page pronostic où il y a 1 formulaire par match proposant de pronostique le vainqueur, et les bonus offensifs et défensifs. Chaque formulaire s'appelle selon l'id du match auquel il se rapporte.

Le choix du vainqueur se fait par un <select> et les bonus par deux input checkbox.

Avec un évènement onchange sur chaque élément, on exécute la fonction javascript pronostiquer(id) que voici:
function pronostiquer(id){ 
		var req = null; 
		if(window.XMLHttpRequest)
			req = new XMLHttpRequest(); 
		else if (window.ActiveXObject)
			req  = new ActiveXObject("Microsoft.XMLHTTP"); 

		req.onreadystatechange = function(){
		
			if(req.readyState == 4){
				if(req.status == 200) {
					afficheDesc('<img src="images_site/ok.gif" width="15px" height="15px"/>','textdiv'+id);
				}
				else {	
					afficheDesc("Error: returned status code " + req.status + " " + req.statusText,'textdiv'+id);
				}	
			
			}	
			
		} 
		
		var Vainqueur 	= document.forms['prono'+id].elements["vainqueur"].value;
		var BOff 		= document.forms['prono'+id].elements['bo'].value;
		var BDff 		= document.forms['prono'+id].elements['bd'].value;
		var Idmatch 	= document.forms['prono'+id].elements['idmatch'].value;
		var Idjoueur	= document.forms['prono'+id].elements['idjoueur'].value;

		req.open("POST", "../scripts/script_pronostique.php", true); 
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
		req.send("vainqueur="+Vainqueur+"&bo="+BOff+"&bd="+BDff+"&idmatch="+Idmatch+"&idjoueur="+Idjoueur); 
}


Le but de cette fonction d'envoyer les valeurs vainqueur, bonusoff et bonusdef et d'exécuter une requête SQL qui ajoute ou update le pronostique via le script script_pronostique.php que voici :
<? 



$vainqueur = $_POST['vainqueur'];
$bo = $_POST['bo'];
$bd = $_POST['bd'];
$idmatch = $_POST['idmatch'];
$idjoueur = $_POST['idjoueur'];


include '../config/config.php';
$db = mysql_connect($sql_serveur,$sql_login,$sql_password);
mysql_select_db($sql_base,$db);

$i=0;
$sql= "SELECT * FROM lagrole.pronostique WHERE idmatch='$idmatch' AND idjoueur='$idjoueur' ";
$req= mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

while($data = mysql_fetch_assoc($req)){
	$i=1;
}

if ($i == 1){
	$db = mysql_connect($sql_serveur,$sql_login,$sql_password);
	mysql_select_db($sql_base,$db);
	MYSQL_QUERY("UPDATE lagrole.pronostique SET vainqueur ='$vainqueur', bonusoff='$bo',bonusdef ='$bd' WHERE idmatch='$idmatch' AND idjoueur='$idjoueur' LIMIT 1");
	//MYSQL_QUERY("INSERT INTO lagrole.pronostique VALUES('','$idjoueur','$idmatch','$vainqueur','$bd','$bo')");

}

else {
	$db = mysql_connect($sql_serveur,$sql_login,$sql_password);
	mysql_select_db($sql_base,$db);
	MYSQL_QUERY("INSERT INTO lagrole.pronostique VALUES('','$idjoueur','$idmatch','$vainqueur','$bd','$bo')");
	//MYSQL_QUERY("UPDATE lagrole.pronostique SET vainqueur ='$vainqueur', bonusoff='$bo',bonusdef ='$bd' WHERE idmatch='$idmatch' AND idjoueur='$idjoueur' LIMIT 1");

}


?>



enfin, dans mon formulaire initial, une petite fonction php permet de mettre les check box sur checked et le select sur une valeur précise si le vote a déjà été efectué.


Jusqu'ici tout devrai bien aller MAIS....

Sur safari, tout marche impec (je suis sous mac)...

Quand je teste sur Firefox3.0 Mac , sur Firefox3.0 PC et sur IE6 (pas encore testé sur IE7), le clic sur une check box la requête effectue comme si j'avais les deux checkbox de sélectionnées...En effet, après un rechargement, les deux sont selectionée et les deux sont enregistrées comme checkées dans ma base de donnée sql.

Impossible d'enregistrer ensuite un uncheck... rien a faire... les deux cas n'enregistrent pas le uncheck...

Le choix du vainqueur par le <select> marche lui impec quelques soit le navigateur... le problème viens uniquement avec les checkbox...

Une petite idée?

Merci !!! Et bonne chance pour m'aider....

Autre problème : comme vu dans ma fonction javascript, une image apparait a la fin de l'exécution du script... comment la faire disparaitre quelque secondes après?

Merci encore

jb

1 réponse

ploufe Messages postés 3 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 22 août 2008
22 août 2008 à 11:37
Problème réglé en travaillant avec checked plutot que value :

https://www.developpez.net/forums/d602881/javascript/general-javascript/poo-formulaire-php-javascript-httpxmlr/

ploufe
0