Bonjour,
Dans une application d'estimation j'aurais voulu récupérer l'ensemble des informations sur les tarifs dans ma BDD, puis traiter l'ensemble du système de calcul en Javascript.
En effet à ce jour cela fonctionne tout en PHP, et il se passe quelques secondes avant le retour du résultat.
Ma question est simple, j'aurais voulu donc récupérer l'ensemble des données dont j'ai besoin en PHP, puis me définir ses données dans des variables javascript.
PS : j'ai bien compris que PHP et co^té serveur et javcascrip côté client, mais j'imagine qu'une fois la variable défini en php style :

<?php $prix = $this->data->[0]['estimation']; ?>

Comment puis-je utiliser $prix en javascript ?

Merci sisi

15 réponses


Effectivement un simple :

<script type="text/javascript">
        var prix = <?= $prix ?>;
...
    </script>

fera l'affaire. Sinon tu peux passer en Ajax.

Pas très clean, si tu veux un bon truc, fait une requête ajax qui ira récupérer tes données au format JSON.

Généralement lorsque tu travail avec des données qui arrivent du côté serveur, tu travail avec du json ^^
Je trouve que travailler avec du json lorsqu'on a beaucoup de données est beaucoup plus clean, après chacun son avis, ta métode je ne l'ai jamais vu sur un projet

Ou sinon prendre ton idée, mais partir avec du json tout de même, ta variable devrait contenir du json, du moins pour travailler après c'est beaucoup plus pratique

Salut et merci pour ces retours.
Du coup oui il y a pas mal de tarifs different a recup que je peux MettRe dans un tableau. Il faut donc que jE me penche sur jsonencode, en esperant pas trop galerer.Je m en occupe demain et vs fait unretour

Bonjour,
J'essai d'appliquer vos différentes remarques, mais d'entré je tombe sur un problème.
Dans mon fichier js si je code :

var prix =10;
alert(prix);

Une fenetre apparait bien avec noté 10

Par contre si je code :

var prix1 = <?= $prix ?>;
alert(prix1);

Plus rien ne se passe, et j'ai "Uncaught SyntaxError: Unexpected token <" qui apparait dans ma console.

PS : je suis sur cakephp, mis je ne penses pas que cela influence quoi que ce soit

merci

Perso ça fontionne

            <?php $test = 10; ?>
            <script type="text/javascript">
                var test = <?= $test; ?>;
                alert(test);
            </script>

Mais c'est moche, si tu peux passe en Ajax, vraiment c'est bien plus propre.

Merci,
Je me renseigne sur l'AJAX, mais
en quelques mots, quel est l avantage de l'AJAX (que je ne conais pas du tout).
MErci

Maxwell, oui je me suis rendu compte du truc, du coup pour faire des essais j'ai codé cela dans ma vue

<script type="text/javascript">
                var prix = <?= $prix; ?>;
                alert(prix);
            </script>

J'essaie de récupérer de la mêm façon un array qui récap l'ensemble des données que je souhaite utiliser pour mes calculs
Dans mon controller

$tarifs = $this->Estimation->find('all');
$this->set('tarifs', $tarifs);

Le tableau $tarifs, je n'arrive pas à le récupérer de la m^me manière que précédement :/

Perso pour ce genre de chose, j'utilise toujours AJAX, mélanger php et js c'est une horreur..

Si c'est un problème de perf, en faisant ça, tu déportes ton problème du server vers le client. Quelques pistes :

  • si l'internaute a un PC bureautique pourri ou un vieux téléphone, ca va mêtre quelques secondes à s'afficher aussi avec du JS
  • Essaies de repenser tes calculs, ils sont peut être simplifiables
  • Certaines données calculées sont peut être redondantes et peuvent être stockées en base pour ne pas refaire le calcul à chaque fois

Donc, sur machine strictement identique, JS ne sera pas plus rapide que PHP pour faire un calcul. En utilisant JS, tu fais en quelque sorte un pari sur le fait que la machine de l'internaute sera plus pluissante que ton server.

Je ne connais pas trop CakePHP mais j'ai toujours vu Grafikart compacter ses tableaux pour les passer à la vue.

$this->set(compact($tarifs));

Ok merci pour toutes ces réponses.
Amethyste, oui j'ai beaucoup de conditions redondantes. Je regarderais du côté de mon code si il y des choses que je peux améliorer. La réponse est oui à coup sure.
Maxwell et Damarus, je vous remercie pour vos indos complémentaire.
Emix tu me confirme encore une fois qu il faut vraiment que je me colle à l AJAX.

Après, je trouve ça bien plus clean, une requête AJAX qui récupère un format JSON de tes données, ensuite tu pourras travailler facilement avec tes données en JS.
Si tu ne souhaites pas ajouter d'ajax, dans ces cas là, créé une variable en json que tu ajouteras avec un echo dans ton script, mais je ne te le conseil pas, de plus ça te fera un gros + à connaître ajax pour tes projets en js, tu ne seras pas déçu ;)