Partage
  • Partager sur Facebook
  • Partager sur Twitter

PHP dans du JavaScript

Ben ça marche pô...

Sujet résolu
    29 octobre 2008 à 18:17:39

    Bonjour,

    Voici mon code, je m'exprimerai après...

    function augmeter_points()
       {document.write("<?php $points++ ; ?>") ;}
    setInterval('augmenter_points()', 1000) ;
    

    Je pense que certains s'appercevront de mon excellent niveau en JavaScript (procédé ironique :p ), àmoins que mon code soit bon, mais ça m'étonnerai.

    Ce que je veux faire, c'est que toutes les secondes, $points s'incrémente, $points étant une variable en PHP. Mais ce script fait planter TOUT mon site : plus rien ne s'affiche ! La page est blanche...

    Alors qu'est-ce qui plante ???

    Merci de m'aider à répondre à cette question... s'il vous faut plus d'infos, vous me dites, je vous donne tout ça ! ^^
    • Partager sur Facebook
    • Partager sur Twitter
    In 12 we trust.
    Anonyme
      29 octobre 2008 à 18:19:47

      Le php est exécuté coté serveur, le javascript coté client donc aucune chance que ça marche :p
      • Partager sur Facebook
      • Partager sur Twitter
        30 octobre 2008 à 14:55:55

        Bon ben comme ça j'ai ma réponse ^^

        Y'a vraiment pas moyen de faire marcher ce script ?
        • Partager sur Facebook
        • Partager sur Twitter
        In 12 we trust.
          30 octobre 2008 à 15:04:45

          Je comprends pas ta deuxième ligne. Tu utilises document.write , ce qui veut dire que tu veux écrire quelque chose. OK. Mais après, en PHP, tu écris $points++ ; ce qui veut dire que tu incrémentes ta variable $points . C'est cool, mais si tu ne mets pas echo $points; rien ne va s'écrire :-°

          En plus, il y a une faute de frappe dans le nom de ta fonction...
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            30 octobre 2008 à 19:17:50

            Citation : Léo

            Je comprends pas ta deuxième ligne. Tu utilises document.write , ce qui veut dire que tu veux écrire quelque chose. OK. Mais après, en PHP, tu écris $points++ ; ce qui veut dire que tu incrémentes ta variable $points . C'est cool, mais si tu ne mets pas echo $points; rien ne va s'écrire :-°



            o_O Euh... N'importe quoi ? Qui te dit qu'il à envie d'écrire quoi que ce soit ? Et puis de toute façon, rajouter echo $points; ne risque pas d'afficher "le nouveau $point"...

            @ MisterScen : Ya moyen de faire marcher ton script avec ajax, mais je suis pas sûr que tu en aies vraiment besoin. Explique ce que tu veux faire exactement.

            • Partager sur Facebook
            • Partager sur Twitter
              30 octobre 2008 à 21:08:17

              non, c'est sur que ça peut po fonctionner comme ça. Comme le php est exécuté coté serveur et le js coté client, et que le serveur exécute avant le client, ton code php ne peut pas fonctionner.

              Comme il est pris entre "", il est simplement lu comme un string par le client. Pour que le serveur puisse reconnaître le code php dans les pages html, et donc l'éxécuter avant d'envoyer le résultat au navigateur client, il faut que ce code php soit "explicite" pour le serveur. Dans ton code, il est entre "" et donc, il n'est pas possible pour l'interpréteur php de le reconnaître.

              Tu peux essayer de lire les tutos sur ajax, qui pourra te permettre de faire ce que tu veux avec le dynamic script loading... je te conseille de t'améliorer un peu côté php avant, parce qu'il faut bien comprendre comment marchent les échanges clients-serveur...

              Bonne chance
              • Partager sur Facebook
              • Partager sur Twitter
                31 octobre 2008 à 8:01:43

                Bin y'a pas moyen...
                Faut juste créer une variable JS a la place d'une variable PHP...
                Si après, tu veux retrourner ce nombre à une autre page, tourne toi vers un formulaire hidden ou je ne sais quoi...
                • Partager sur Facebook
                • Partager sur Twitter
                  31 octobre 2008 à 14:54:47

                  Le truc c'est que je suis super nul en JavaScript, mais je n'ai pas trouvé autre moyen que ce code...

                  Au pire, je m'arrête là ^^ Oubliez tout ça, moi va falloir que j'en sache plus...
                  • Partager sur Facebook
                  • Partager sur Twitter
                  In 12 we trust.
                    31 octobre 2008 à 15:20:49

                    Pour faire ça, il faudrait que tu recuperes la valeur de ta variable dans ton js, du style echo "var pts = ".$points;
                    Puis que tu fasses un appel à ta page ensuite en lui fournissant la nouvelle valeur en post ou en get afin de l'incrémenter, de la redonner au JS etc etc. De l'ajax pour pas grand chose visiblement. Surtout que jsuis sur que tu n'as pas besoin de ça. Si tu veux augmenter les points toutes les secondes, tu le fais directement côté serveur, entre deux actualisations on s'enfou de savoir combien on a de points non ? Donc suffit de savoir combien de secondes il y a entre deux actualisations ( tu sauvegardes l'ancien score dans un fichier ou dans la bdd avec le timestamp associé ).

                    Si jamais on a vraiment besoin d'une actualisation à la seconde, là il faut effectivement que tu utilises ajax, regarde du côté de Ajax.PeriodicalUpdater dans la lib prototype, ça permet de raffraichir à intervalle régulière une balise de ton dom en appellant un script php. Donc toutes les secondes par exemple, ton JS va demander le nouveau code à placer dans ton <div> à ton script php et le remplacer.

                    le script php sera sans doute qqch du genre :

                    <?php
                    
                    mysql_connect( ... );
                    mysql_select_db( ... );
                    $res = mysql_query("SELECT points FROM xxx WHERE user = '$_SESSION[\"user\"]'");
                    $tab = mysql_fetch_assoc($res);
                    
                    $points = $tab['points'];
                    $points++;
                    
                    mysql_query("UPDATE xxx ...");
                    
                    echo $points;
                    
                    mysql_close();
                    
                    ?>
                    


                    Seule chose, tu auras deux accés à la bdd par seconde et par personne connectée du coup.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    PHP dans du JavaScript

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown