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 :

[AJAX] requete sur une page php


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut [AJAX] requete sur une page php
    Bonjour,
    j'ai un petit probleme avec ajax, voila les codes:

    Code : JavaScript
    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
     
    function change(stat) {
    var xhr; // on déclare l'instance
    if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); // Firefox, Opera, Konqueror, Safari, ...
    else if (window.ActiveXObject) xhr = new ActiveXObject('Microsoft.XMLHTTP'); // Internet Explorer
    else alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...'); // Navigateur ancien
     
    var pseudo = document.getElementById('pseudo').innerHTML;
    xhr.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
    document.getElementById(stat).innerHTML = xhr.responseText;
    }
    }
    xhr.open("GET","stat.php?stat="+stat+"£amp;pseudo="+pseudo,true);
    xhr.send(null);

    le reste de la page

    Code : 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
     
    if(isset($_SESSION['pseudo'])) {
    mysql_connect("localhost", "root", "");
    mysql_select_db("jeu");
     
    $pseudo = $_SESSION['pseudo'];
     
    $retour2 = mysql_query("SELECT * FROM statu WHERE pseudo='$pseudo'");
    $donne2 = mysql_fetch_array($retour2);
     
    echo'<p><h3 id="pseudo">' . $donne2['pseudo'] . '</h3>';
    echo 'Vous avez ' . $donne2['points'] . ' points à distribuer</p>';
    echo '<p>Pour ajouter un point de stat, cliquez sur les points existants du statut que vous voulez augmenter<br/><br/>';
    echo '<span onMouseOver="document.getElementById(\'info\').innerHTML = \'Force: Augmentez ce stat afin de faire plus dégats, et donc de gagner plus facilement les combats\';">Force</span>: <span onClick="change(force);">' . $donne2['force'] . '</span><br/>';
    echo '<span onMouseOver="document.getElementById(\'info\').innerHTML = \'Marchandage: Augmentez ce stat afin de gagner plus d argent lorsque vous vendez vos céréales\';">Marchandage</span>: ' . $donne2['marchandage'] . '<br/>';
    echo '<span onMouseOver="document.getElementById(\'info\').innerHTML = \'Chance: Augmentez ce stat pour augmenter votre gain dexperience à la fin d un combat\';">Chance</span>: ' . $donne2['chance'] . '<br/>';
    echo '<span onMouseOver="document.getElementById(\'info\').innerHTML = \'Travail: Augmentez ce stat pour produire plus vite et ainsi gagner des ressources plus rapidement\';">Travail</span>: ' . $donne2['travail'] . '<br/>';
    echo '<span onMouseOver="document.getElementById(\'info\').innerHTML = \'Maitrise des armes: Augmentez ce stat pour pouvoir équiper certaines armes\';">Maitrise des armes</span>: ' . $donne2['arme'] . '<br/>';
    echo '<span onMouseOver="document.getElementById(\'info\').innerHTML = \'Maitrise des armures: Augmentez ce stat pour pouvoir équiper certaines armures\';">Maitrise des armures</span>: ' . $donne2['armure'] . '<br/><br/>';
    echo '<input type="submit" value="valider"/>';
    echo '</p>';
     
    echo '<p id="info">Passez la souris sur un stat pour avoir sa description</p>';
     
    }
    else {
    echo '<p>Vous n\'etes pas autorisé à être sur cette page</p>';
    }
    ?>

    Et stat.php:

    Code : 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
     
     
    <?php
    if(isset($_GET['stat']) AND isset($_GET['pseudo']))
    {
    mysql_connect("localhost", "root", "");
    mysql_select_db("jeu");
     
    $pseudo = mysql_real_escape_string(htmlspecialchars($_GET['pseudo']));
     
    $retour2 = mysql_query("SELECT * FROM statu WHERE pseudo='$pseudo'");
    $donne2 = mysql_fetch_array($retour2);
    if($donne2['points'] > 0) {
    $stat = $_GET['stat'];
    $new_point = $donne2['points'] - 1;
    $new_stat = $donne2[$stat] + 1;
    mysql_query("UPDATE statu SET $stat = $new_stat, points = $new_point WHERE pseudo='$pseudo'");
    echo $new_stat;
    }
    else {
    echo 'points de stat insuffisants';
    }
    }
    ?>

    Donc quand je clique sur le 5 de force, rien ne se passe. Desolé e faire une si courte description, mais je vois pas trop quoi mettre d'autre...^^

    Donc si quelqu'un a une idee...

    Merci d'avance

    edit: ares quelques test, je sais maintenant que le probleme vient de responseText, il ne vaut rien

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET","stat.php?stat="+stat+"£amp;pseudo="+pseudo,true);
    Le £, c'est une faute de frappe ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Merci beaucoup de ta reponse.
    Malheursement ca ne marce toujours pas ouin!
    mais avant de continuer, j'aimerai avoir une petite precision:
    est il possible de dire a javascript que le contenu d'un p est un nombre, genre:
    j'ai les points de stat qui s'affiche dans une balise <p>, j'aimerai que mon code javascript decremente ce nombre, mais si j'essaye il me met que ce n'est pas un nombre, existe t il une fonction qui permettrai de faire ca???

    Encore merci

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseInt('chaine',base)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Ok encore merci, tu m'aides beaucoup^^
    Sinon toujours pas de solution pour mon code précédent? Au pire je passe direct par php, mais je preferai rester avec ajax

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_GET['pseudo']))
    pseudo n'est pas une variable de session dans ce contexte, mais une variable du tableau GET !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    c'est ce que j'ai mis non?

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Dans ton 1er post, moi je lis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_SESSION['pseudo']))

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    En même temps, si je regarde pas le bon code...
    En fait, l'erreur est ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span onClick="change('force');">
    si tu ne mets pas les guillemets, ta fonction essaye de récupérer la variable force qui n'existe pas, donc rien n'est envoyé...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Ajouter, et ca ne marche toujours pas.
    J'ai fait une alert(stat); et stat vaut bien force, ce ne vient pas de la a mon avis.

    Peut etre que c'est du à l'emplacement de mes fichiers:
    le fichier principale ou il y a ajax ----> Dans un répertoire page, la page est incluse par php.
    la page statu.php ----> dans le repertoir principal du site.
    LEs 2 ne sont pas dans le meme repertoire, peut etre est ce du a cela?

  11. #11
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 186
    Points
    186
    Par défaut
    Bonjour, je pense que tu n'envoies rien du tout .
    voici pour ma part à quoi ressemble mes code AJAX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     xhr.open("POST","messagerie_ecrire.php",true);
             xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
             xhr.send("afficher=1&id="+id+"&pseudo="+pseudo);
    ton code va aller chercher la page
    'stat.php?stat="+stat+"£amp;pseudo="+pseudo'

    As-tu déjà fais un include en php ? si cela marche pareil (jamais testé ta méthode mais send(null) = aucune données envoyer) tu ne peux chercher une page avec comme nom 'stat.php?stat="+stat+"£amp;pseudo="+pseudo'
    Car sur un serveur il est possible de nommer les pages ainsi, les paramètres en sont pas pris en compte.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    bah si je met le send(null) cela veut dire que j'envoie les données par methode GET.
    Mais je vais suivre ton conseil et essayer par un post.

    Merci beaucoup de votre aide

    edit:
    aillait ca marche!!!!
    je suis passé paar psot, mais bizare que GET ne marche pas.
    En tout cas merci enormement à vous deux

    edit:
    Si vous passez, pouvez vous me dire ce qui ne va pas dans le code de l'update de la base de donnée? Merci d'avance

  13. #13
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 186
    Points
    186
    Par défaut
    Bonsoir,

    une méthode très simple pour bien corriger les erreurs / warning de ses codes php, tout d'abord bien nommer les variables.
    Exemple :
    au lieu de $requete, $requete2
    $requetePersonnage, $requeteInventaire, fais en sorte de donner un sens aux noms de variables, c'est très pratique lors que tu dois toucher à ton code dans 6 mois, ou que quelqu'un passe derrière.

    De plus pour les requêtes SQL, y'a un truc génial avec php,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE statu SET $stat = $new_stat, points = $new_point WHERE pseudo='$pseudo'") or die(mysql_error());
    Le "mysql_error" va t'afficher l'erreur exacte de ta requête, si cela ne vient pas de ta requête, utilise "echo" suivit d'un "exit; il te permettera d'afficher des bout de code, données, contenus, et de stoper la création de la page pour que tu vois ce qui cloche.

    GoT

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Ok merci beaucoup je vais essayer.
    Mais pour cela je dois enlever ajax non?afin d'afficher l'erreur mysql;
    je vous tiens au courant^^

  15. #15
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 186
    Points
    186
    Par défaut
    Bonjour,

    Non il n'est pas necessaire d'enlever l'AJAX, étant donné que ajax va afficher le résultat de ton php, il affichera donc le résultat de ta requête, ou mysql_error si la syntaxe de ta requête est mauvaise.

    Tiens nous au courant

    GoT

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'force = '6', points = '4' WHERE pseudo='okami'' at line 1

    Voila le message d'erreur qu'il m'affiche.
    Mais je ne vois pas ou est le probleme de syntaxe.
    Quelqu'un a une idee??

    Encore merci^^

  17. #17
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Points : 186
    Points
    186
    Par défaut
    Bonsoir,

    Donne nous ta requête complète pour que l'on puisse t'aider, logiquement tu as une erreur d'écriture sur ta requête, un champ mal nommé, un erreur au niveau des virgules, ou de syntaxes, affiche nous ça et nous pourrons t'aider


    GoT

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    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
    <?php
    if(isset($_POST['stat']) AND isset($_POST['pseudo']))
    {
    mysql_connect("localhost", "root", "");
    mysql_select_db("jeu");
     
    $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
     
    $retour2 = mysql_query("SELECT * FROM statu WHERE pseudo='$pseudo'");
    $donne2 = mysql_fetch_array($retour2);
    if($donne2['points'] > 0) {
    $stat = $_POST['stat'];
    $new_point = $donne2['points'] - 1;
    $new_stat = $donne2[$stat] + 1;
    mysql_query("UPDATE statu SET $stat='$new_stat', points='$new_point' WHERE pseudo='$pseudo'") or die(mysql_error());
    echo $new_stat;
    }
    else {
    echo 'points de stat insuffisants';
    }
    }
    else {
    echo 'test test';
    }
    ?>
    Voici le code complet php sur lequel ajax effectue la requete. Et voici la ligne qui ne va pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE statu SET $stat='$new_stat', points='$new_point' WHERE pseudo='$pseudo'") or die(mysql_error());
    J'ai testé $stat, il vaut force, et ma BDD contient bien un champs force.

    MErci beaucoup de m'aider

  19. #19
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ca fait un peu de temps que j'ai pas utilisé MySQL (merci à mon patron d'avoir opté pour webdev / hyperfile ), mais dans :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'force = '6', points = '4' WHERE pseudo='okami'' at line 1
    il n'y aurait pas un problème de type de données pour force et points ?

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 213
    Points : 43
    Points
    43
    Par défaut
    Ce sont des "int" dans la BDD.
    Peut etre ne dois je pas mettre de " ' " pour dire que c'est un nombre?

    edit: j'ai essayé sans les " ' ", meme erreur, je commence a desesperer^^

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/06/2007, 12h10
  2. [AJAX] Réafficher d'une page php avec ajax
    Par red_nour dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/06/2007, 08h21
  3. Calcul temps passé sur une page PHP pur
    Par mathieugamin dans le forum Langage
    Réponses: 10
    Dernier message: 29/03/2007, 17h22
  4. Réponses: 1
    Dernier message: 20/09/2006, 00h29
  5. Afficher un calendrier sur une page php
    Par griese dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 12/06/2006, 09h53

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