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 :

Requête SQL ignorée sur IE<9 via un XHR


Sujet :

JavaScript

  1. #1
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 280
    Points : 347
    Points
    347
    Par défaut Requête SQL ignorée sur IE<9 via un XHR
    Bonjour,

    Pourrait-on m'expliquer pourquoi sur ces versions d'IE, l'exécution d'un php appelé par un objet XMLHttpRequest() ne peut pas faire fonctionner une simple requête update?
    Terminées les prises de tête pour programmer en php. On procède comme ça : http://cavril.developpez.com/php/ (débutants pressés voulant éviter d'approfondir vers la POO)

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Points : 274
    Points
    274
    Par défaut
    Nous pas pouvoir faire magie sans exemple de code ?
    As-tu des erreurs dans ton JS qui s'affichent dans ta console ?
    As-tu lancé le mode débug et vu ce qu'il se passe ?

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 662
    Points
    66 662
    Billets dans le blog
    1
    Par défaut
    php s'executant coté serveur, la version du navigateur n'est pas en cause au niveau de l'execution du php !

    Maintenant, ajax étant du js, il est possible que ton code js ne soit pas compatible avec le navigateur...

    Encore faut il VOIR ce code afin d'en juger ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 961
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 961
    Points : 44 133
    Points
    44 133
    Par défaut
    Bonjour,
    à voir pour les anciennes version IE About Native XMLHTTP.

  5. #5
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 280
    Points : 347
    Points
    347
    Par défaut
    J'ai greffé les tests de compatibilité IE/other et fait fonctionner tout ça sur ff sans problème. J'ai essayé de réduire le code le plus possible il me reste tout ça, et ça continue de ne pas fonctionner sur IE<9.

    start.html :
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8">
    	<title>page start up</title>
    </head>
    	<body>
    		<p>pour html 5</p>
    		<span id="clickme">
    cliquer ici
    		</span>
    	</body>
     
    <script>
     
    function getXMLHttpRequest() {
    	var xhr = null;
     
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
    	return xhr;
    }
     
    function request(callback) {
        var xhr = getXMLHttpRequest();
    	alert('requesting');
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                callback(xhr.responseText);
            }
        };
    	var sVar1 = encodeURIComponent(numeroItem); // encode pour protéger la variable
    	xhr.open("GET", "handlingData.php?item=" + sVar1, true); // true pour asynchrone, false pour synchrone
    	xhr.send(null);
    }
     
    var lireData = function readData(sData) {
    	alert(sData);
    }
     
    function addEvent(element, event, func) {
     
        if (element.addEventListener) { // pour ff et autres
    	element.addEventListener(event, func, false);
        } else { // pour IE<9
            element.attachEvent('on' + event, func);
        }
     
    }
     
    var clicking = function (){
    	numeroItem = 3;
    	request(lireData); // appel d'une fonction gérant le callback
    	alert('ok');
    }
     
    var element = document.getElementById('clickme');
    addEvent(element, 'click', clicking);
    </script>
     
    </html>
    handlingData.php :

    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
    <?php
    	header("Content-Type: text/plain"); // Utilisation d'un header pour spécifier le type de contenu de la page. Ici, il s'agit juste de texte brut (text/plain).
    	//identifiants
     
    	//identifiants
    	if ($_SERVER["REMOTE_ADDR"]=='127.0.0.1')
    	{	
    		$adresse='localhost';
    		$nom='root';
    		$motdepasse='';
    		$database='hypoc';
    	}
    	else
    	{ // naméo!
    	}
    	mysql_connect($adresse, $nom, $motdepasse);
    	mysql_select_db($database);	
     
    	$itemOk = (isset($_GET["item"]));
    	if ($itemOk) {
    		$item = $_GET["item"];
     
    		$points1 = array(3,0);
    		$points2 = array(4,0);
    		$points3 = array(5,0);
    		$points4 = array(5,0);
    		$userPoints1 = 0;
    		$userPoints2 = 0;
    		$userPoints3 = 0;
    		$userPoints4 = 0;
     
    		if (in_array($item, $points1)) $userPoints1 = 1;
    		if (in_array($item, $points2)) $userPoints2 = 1;
    		if (in_array($item, $points3)) $userPoints3 = 1;
    		if (in_array($item, $points4)) $userPoints4 = 1;
     
    		mysql_query("UPDATE users SET userPoints1=userPoints1+$userPoints1, userPoints2=userPoints2+$userPoints2, userPoints3=userPoints3+$userPoints3, userPoints4=userPoints4+$userPoints4 WHERE userNom='nomTest'") or die(mysql_error());
     
    		$points = mysql_query("SELECT userPoints1, userPoints2, userPoints3, userPoints4, userPointsMedia FROM users WHERE userNom='nomTest'");
    		$tableauPoints = mysql_fetch_array($points);
     
    		$contenu = 'points1 : '.$tableauPoints['userPoints1'].'		'.'points2 : '.$tableauPoints['userPoints2'].'		'.'points3 : '.$tableauPoints['userPoints3'].'		'.'points4 : '.$tableauPoints['userPoints4'].' item : '.$item.' userpoints1 : '.$userPoints1;
    		echo $contenu;
    } else {
        echo "FAIL";
    }
     
    ?>
    Peut être que IE n'aime pas les $ sans les "'" pour les requêtes sql?
    Fichiers attachés Fichiers attachés
    Terminées les prises de tête pour programmer en php. On procède comme ça : http://cavril.developpez.com/php/ (débutants pressés voulant éviter d'approfondir vers la POO)

  6. #6
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 280
    Points : 347
    Points
    347
    Par défaut
    Moi aussi ça me laisse sans voix...
    Terminées les prises de tête pour programmer en php. On procède comme ça : http://cavril.developpez.com/php/ (débutants pressés voulant éviter d'approfondir vers la POO)

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Points : 274
    Points
    274
    Par défaut
    Citation Envoyé par Ah_Kin Voir le message
    J'ai greffé les tests de compatibilité IE/other et fait fonctionner tout ça sur ff sans problème. J'ai essayé de réduire le code le plus possible il me reste tout ça, et ça continue de ne pas fonctionner sur IE<9.

    start.html :
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8">
    	<title>page start up</title>
    </head>
    	<body>
    		<p>pour html 5</p>
    		<span id="clickme">
    cliquer ici
    		</span>
    	</body>
     
    <script>
     
    function getXMLHttpRequest() {
    	var xhr = null;
     
    	if (window.XMLHttpRequest || window.ActiveXObject) {
    		if (window.ActiveXObject) {
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch(e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		} else {
    			xhr = new XMLHttpRequest(); 
    		}
    	} else {
    		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
    		return null;
    	}
    	return xhr;
    }
     
    function request(callback) {
        var xhr = getXMLHttpRequest();
    	alert('requesting');
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                callback(xhr.responseText);
            }
        };
    	var sVar1 = encodeURIComponent(numeroItem); // encode pour protéger la variable
    	xhr.open("GET", "handlingData.php?item=" + sVar1, true); // true pour asynchrone, false pour synchrone
    	xhr.send(null);
    }
     
    var lireData = function readData(sData) {
    	alert(sData);
    }
     
    function addEvent(element, event, func) {
     
        if (element.addEventListener) { // pour ff et autres
    	element.addEventListener(event, func, false);
        } else { // pour IE<9
            element.attachEvent('on' + event, func);
        }
     
    }
     
    var clicking = function (){
    	numeroItem = 3;
    	request(lireData); // appel d'une fonction gérant le callback
    	alert('ok');
    }
     
    var element = document.getElementById('clickme');
    addEvent(element, 'click', clicking);
    </script>
     
    </html>
    handlingData.php :

    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
    <?php
    	header("Content-Type: text/plain"); // Utilisation d'un header pour spécifier le type de contenu de la page. Ici, il s'agit juste de texte brut (text/plain).
    	//identifiants
     
    	//identifiants
    	if ($_SERVER["REMOTE_ADDR"]=='127.0.0.1')
    	{	
    		$adresse='localhost';
    		$nom='root';
    		$motdepasse='';
    		$database='hypoc';
    	}
    	else
    	{ // naméo!
    	}
    	mysql_connect($adresse, $nom, $motdepasse);
    	mysql_select_db($database);	
     
    	$itemOk = (isset($_GET["item"]));
    	if ($itemOk) {
    		$item = $_GET["item"];
     
    		$points1 = array(3,0);
    		$points2 = array(4,0);
    		$points3 = array(5,0);
    		$points4 = array(5,0);
    		$userPoints1 = 0;
    		$userPoints2 = 0;
    		$userPoints3 = 0;
    		$userPoints4 = 0;
     
    		if (in_array($item, $points1)) $userPoints1 = 1;
    		if (in_array($item, $points2)) $userPoints2 = 1;
    		if (in_array($item, $points3)) $userPoints3 = 1;
    		if (in_array($item, $points4)) $userPoints4 = 1;
     
    		mysql_query("UPDATE users SET userPoints1=userPoints1+$userPoints1, userPoints2=userPoints2+$userPoints2, userPoints3=userPoints3+$userPoints3, userPoints4=userPoints4+$userPoints4 WHERE userNom='nomTest'") or die(mysql_error());
     
    		$points = mysql_query("SELECT userPoints1, userPoints2, userPoints3, userPoints4, userPointsMedia FROM users WHERE userNom='nomTest'");
    		$tableauPoints = mysql_fetch_array($points);
     
    		$contenu = 'points1 : '.$tableauPoints['userPoints1'].'		'.'points2 : '.$tableauPoints['userPoints2'].'		'.'points3 : '.$tableauPoints['userPoints3'].'		'.'points4 : '.$tableauPoints['userPoints4'].' item : '.$item.' userpoints1 : '.$userPoints1;
    		echo $contenu;
    } else {
        echo "FAIL";
    }
     
    ?>
    Peut être que IE n'aime pas les $ sans les "'" pour les requêtes sql?
    PHP COTÉ SERVEUR !!!!!
    Ce qui signifie que les $ dans les variables ou les "" coté php le navigateur s'en cogne complètement, ce que reçoit le navigateur c'est le code généré

  8. #8
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 280
    Points : 347
    Points
    347
    Par défaut
    Oui donc anyway tout ça ça marche sur ff et pas sur IE. Ça viendrait de ajax.
    Terminées les prises de tête pour programmer en php. On procède comme ça : http://cavril.developpez.com/php/ (débutants pressés voulant éviter d'approfondir vers la POO)

Discussions similaires

  1. [Hibernate 2]Requête SQL native sur plusieurs tables
    Par Giovanny Temgoua dans le forum Hibernate
    Réponses: 0
    Dernier message: 06/04/2010, 16h10
  2. Requête SQL - prob sur order
    Par delavega dans le forum ASP
    Réponses: 4
    Dernier message: 29/10/2008, 17h15
  3. Enregistrer les données d'une requête SQL Query sur une autre table
    Par LE MAHJONG dans le forum Bases de données
    Réponses: 4
    Dernier message: 23/09/2008, 20h02
  4. Requête SQL : Jointure sur 3 tables - Bd Access 1997 & Delphi 7
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/12/2007, 09h57
  5. Réponses: 4
    Dernier message: 14/11/2006, 19h03

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