IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[POO] Formulaire avec du php et du javascript HTTPXmlR


Sujet :

JavaScript

Vue hybride

drwriggles [POO] Formulaire avec du php... 21/08/2008, 13h46
riete Je suis moi aussi sur Mac et... 21/08/2008, 14h59
drwriggles Oui je pense que c'est Safari... 22/08/2008, 10h26
drwriggles En fait avec value , si la... 22/08/2008, 10h59
riete Cool !! A+ sur les ondes ;) 22/08/2008, 14h19
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut [POO] Formulaire avec du php et du javascript HTTPXmlR
    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 sais , ça n'est pas une excuse...)!

    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:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <?
     
     
     
     
     
     
     
    $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

    PS: Je peux passer l'adresse du site par MP mais n'ayant pas du tout vu les problèmes de sécurité, je voudrais éviter de la filer direct pour le moment...

  2. #2
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Je suis moi aussi sur Mac et n'ai jamais rencontré ce type de pb.
    Mais je ne pense pas que le problème soit lié à la plateforme. Cela fonctionne sur Safari (s'est une hypothèse ) simplement car Safari gère le DOM un peu différement. Si tu veux être sur de ton code test le avec Firefox.

    En clair, je pense que si tu fais .value sur un objet checkbox, il te retourne On ou OFF, c'est à toi de faire la conversion (0 ou 1) ensuite, tu ne crois pas ?

  3. #3
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut
    Oui je pense que c'est Safari qui est plus efficace pour des codes peut être un peu approximatifs...

    Dans tous les cas, il faut que ça marche au moins sur FF (et IE en plus ça serai top !)

    Pour la checkbox, c'est justement un ON qui m'interesse pour la checker...

    Voici le code php autour de la checkbox bonus offensif:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo '<td> <input type="checkbox" name="bo"';
         if ($r['2'] =='on'){echo ' checked';}
         if(date_passee($p['8'])){echo ' disabled="disabled"';}	
    echo '  onchange="pronostiquerBO('.$p['7'].')"> </td>';
    $r['2'] est obtenu par une petite requête sql qui regarde si le match a déjà été pronostiqué et si oui me retourne dans $r les différentes valeurs (vainqueur, bo, bd...)
    $p['8'] est la date et l'heure a laquelle le match commence...

    J'ai testé de créer une fonction par élément (select, checkbox bo et checkbox bd)... ça a dissocié le problème, les checkbox ne se cochent plus ensembles mais je n'arrive pas a enregistrer un décochage... alors que le cochage fonctionne bien...


  4. #4
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut
    En fait avec value , si la case est décochée, la valeure n'est pas OFF mais rien ('NULL')

    En travaillant avec checked au lieu de value soit 'true ou false' au lieu de 'on OU NULL', ça marche !!!


  5. #5
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Cool !!
    A+ sur les ondes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formulaire avec nom en tableau et javascript
    Par kloyatweb dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/02/2010, 10h09
  2. [XHTML 1.0] Formulaire avec du PHP
    Par kaselander dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 25/02/2009, 13h49
  3. [POO] Requête avec classe PHP
    Par krfa1 dans le forum Langage
    Réponses: 3
    Dernier message: 18/01/2007, 18h45
  4. Formulaire avec du PHP qui ne marche pas !
    Par Sandara dans le forum Langage
    Réponses: 19
    Dernier message: 02/06/2006, 18h26
  5. VALUE d'un champ de formulaire avec variable php
    Par shub dans le forum Langage
    Réponses: 5
    Dernier message: 04/04/2006, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo