Page 1 sur 1

Insertion Php dans un code Javascript

Posté : 01 avr. 2005, 11:23
par toony
Peut-on insérer une variable php tiré d'une BDD mysql dans un bout de code Php?
Le but est de convertir automatiquement la valeur d'un INPUT en dollars, le taux du dollar etant dans une BDD mysql... :roll:

Ca parait ptet un peu cinglé, je sais meme pas si ya une autre méthode alors...comment dire..................................HELP!!!!

Re: Insertion Php dans un code Javascript

Posté : 01 avr. 2005, 11:33
par albat
Peut-on insérer une variable php tiré d'une BDD mysql dans un bout de code Php?
Une variable PHP dans du code PHP ?
Ah oui ! Sans problème... :lol:

Bon, plus sérieusement, ta question devait être :
Peut-on insérer une variable php tiré d'une BDD mysql dans un bout de code Javascript ?
Oui aussi, mais c'est moins direct. :wink:
<?php
echo "<script type='text/javascript'>";
echo "variableJS = ".$variablePHP;
echo "</script>";
?>

Posté : 01 avr. 2005, 11:50
par Invité
Autant pour moi!! je m'est trompé....

Donc en fait, cette solution me va pas , je pensais plus au contraire :
aller chercher la valeur d'un champ dans une table mysql et l'insérer dans un fichier .js........ :? ....ca devient plus dur!!! :D
c'est pour ça que je pensais au Php vu que je sais faire mais après...mystère! :(

Posté : 01 avr. 2005, 12:05
par albat
aller chercher la valeur d'un champ dans une table mysql et l'insérer dans un fichier .js........ :?
Donc transmettre la valeur d'une variable PHP à une variable JS.
C''est bien ce que je t'ai indiqué. :shock:
<?php
// requête SQL
$req = "SELECT cours_dollar FROM cours_devises WHERE ...";
$res = ...
// récupération du résultat dans une variable PHP
$variablePHP = $cours_dollar;
// affectation à une variable JS
echo "<script type='text/javascript'>";
echo "variableJS = ".$variablePHP;
echo "document.write('10 EUR = ' + (10*variableJS) + ' USD');";
echo "</script>";
?>
En revanche, tu auras du mal à le faire dans un fichier externe .js

Posté : 27 déc. 2006, 05:45
par karpediem
Bonjour,

Moi j'ai un tout petit problème (mais problème quand même, enfin pour moi ;o) dans le même style que celui-ci... alors je ne sais pas s'il faut que je fasse un nouveau post ou si je dois compléter celui-ci...

Bon, je me lance et je vous explique :

J'ai un magnifique tableau associatif que j'ai créé avec php suite à la lecture des enregistrements d'une table.

J'ai, pour simplifier : $_VILLE[$code_postal] = $ville;

Dans mon formulairre, j'ai une liste déroulante avec les codes postaux (liste alimentée avec ce même tableau) et un champ ville.

Je souhaiterai que lorsque l'évènement onChange() est détecté sur mon champ code_postal, mon programme aille lire mon tableau php (index = code_postal.value) et renvoie la valeur associée (un nom de ville) qu'il a trouvé dans mon champ ville...

Le pb c'est la communication javascript <=> php. Dans un sens ça va, mais dans l'autre, j'ai du mal...

Afin d'être plus explicite, voici un bon (extraction explicite tant que possible ;o) de mon code :

Code : Tout sélectionner

<FORM name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" > blablabla <select name="code_postal" size="1" onChange="recup_ville();"> <?php foreach ($_VILLE as $key => $value) { echo '<option value="'.$key.'">'; echo $key; echo '</option>'."\n"; } ?> </select> Ville <input name="ville" type="text" size="52"> blablabla </FORM>
Dans mon javascript j'ai commencé comme ceci...

Code : Tout sélectionner

<script> function recup_ville(){ var form_err = "0"; if (form1.code_postal.value.length <1 ) { form_err = "1"; } if ( form_err == "1") { alert('Le Code Postal doit être complet'); } else { form1.ville.value = ... c'est là que ça se gate ;-(( il faudrait que je puisse lire $_VILLE[form1.code_postal.value] et ça, je sais pô faire ;-( } } </script>
J'ai essayé de passer par notre très cher php en bidouillant un truc comme ça :

Code : Tout sélectionner

<?php echo "<script>\n"; echo "function test_recup(){\n"; echo $var."=form1.code_postal.value;\n"; echo "return ".$_VILLE[$var].";\n"; echo "}\n"; echo "</script>\n"; ?>
pour après dans mon javascript compléter ma fonction recup_ville() avec :

Code : Tout sélectionner

form1.ville.value = test_recup();
Mais ça ne fonctionne pas... rien n'est récupéré ;-(

Du coup, j'ai un tas de questions à vous pôser :
- Pensez-vous que je suis dans la bonne direction ?
- Y a-t-il une façon plus simple de communiquer des valeurs javascript à php ?
- Avez-vous des suggestions pour mon problème ?

Merci à tous ne serait-ce que pour m'avoir lu jusqu'au bout sans vous endormir ;o))

A bientôt

Posté : 27 déc. 2006, 14:48
par karpediem
Apparemment, ce que je veux faire ne peut pas être fait de cette façon car si on étudie comment ça se passe (vulgarisation... merci r0bl0che) :

1. Le navigateur demande la page foo.php.
2. Le serveur reçoit la requête du navigateur.
3. Le serveur exécute le code PHP contenu dans foo.php.
4. Le résultat (généralement, une page HTML, mais pas nécessairement)
est renvoyé au navigateur.
5. La page générée en PHP arrive dans ton navigateur et l'HTML et le
JavaScript sont interprétés.

Donc, tenter d'exécuter du JS à l'étape 3. n'a aucun sens.
De même que tenter d'exécuter du PHP à l'étape 5., d'ailleurs.

Pour résoudre le problème, il y aurait 3 choix :
- Recharger la page en lui passant en paramètre une donnée lié au onchange. Ainsi, côté PHP, on peut afficher les bonnes valeurs.

- Au premier chargement de la page, créer un/des tableau(x) JS contenant toutes les données récupérées en PHP. Ainsi, lorsqu'un onchange survient, les données sont disponibles. => ça je ne sais pas comment faire... quelqu'un a une idée ?

- Utiliser Ajax pour aller chercher les données sur le serveur à chaque onchange. Ce qui revient un peu à un mix des deux premières solutions mais qui nécessite un peu plus de connaissance en programation.=> ça je ne sais pas comment faire... quelqu'un a une idée ?

A bientôt et Bonnes Fêtes !

Karpediem

Posté : 27 déc. 2006, 15:15
par Ajoloca
Bonjour,

C'est un sujet maintes fois traité dans le forum, une recherche avec le terme "XMLHttpRequest" te donnera surement des solutions.