Problème de condition entre JavaScript et PHP

Fermé
Archaon - 15 mai 2003 à 01:38
 Alain42 - 25 juil. 2007 à 15:47
J'ai fais un script en JavaScript contenant du PHP.
Je dois changer une variable de type chaîne $img_sens en PHP, à la condition qu'une variable numérique sens en JavaScript ai telle ou telle valeur. J'ai donc fais ça :

if(sens == 1)
{
<?php $imgsens = "droite.gif" ?>
}
if(sens == 2)
{
<?php $imgsens = "gauche.gif" ?>
}

Avec haut et bas encore. Le problème et que lorsque les lignes en PHP sont interprétées, la condition ne fonctionne plus.
Donc $imgsens devient "droite.gif" puis "gauche.gif" puis "haut.gif" et finalemant quelque soit la valeur de sens, $imgsens = "bas.gif"

Comment pourrais faire pour que la condition soit gardée même au passage en PHP ?


Autre question, si par exemple je prend imgsens en JavaScript, comment je fais ensuite dans la balise <img src=" "> pour que le nom de l'image soit la valeur de imgsens ?
J'ai essayé plusieurs choses comme par exemple <img src=" . imgsens . "> mais bon sans résultat hélas.

(c'est pour ça que je voulais passer par le PHP, mais si possible, j'aimerai une réponse aux deux solutions étant donné que je suis amené à utiliser plus d'une fois le PHP dans mon script)

Merci !
A voir également:

20 réponses

PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 mai 2003 à 21:58
Bsr Archaon,

On dirait que tu mélanges les 2 langages ....
Certe à la fois du code JavaScript et du code PHP peuvent être présent à l'intérieur d'un fichier HTML (note que je parle ici de fichier et pas de page HTML la différence est importante !) mais ils ne s'éxécutent pas en même temps.

Le code PHP est éxécuté sur le serveur, le code JavaScript sur le navigateur de l'internaute donc à des instants différents.
Les 2 langages sont complètement indépendants !

Pour ton ex cela donne :

le code vu par PHP :

<?php $imgsens = "droite.gif" ?>
<?php $imgsens = "gauche.gif" ?>

et tout le reste est ignoré !


le code vu par JavaScript :

if(sens == 1)
{
}
if(sens == 2)
{
}

et tout le reste n'existe pas !


Ce que tu peux faire :

Tout écrire en JavaScript

<html>
<head>
<script language="JavaScript">
<!--
sens=2; // Par ex

if(sens == 1)
{
imgsens = "droite.gif";
}
if(sens == 2)
{
imgsens = "gauche.gif";
}

function load()
{
// Affecte la bonne image
document.getElementById("sens_image").src=imgsens;
}

// -->
</script>
</head>

<body onload="load()">
<img name="sens_image" src="">
</body>
</html>


Ou le faire en PHP :

<?php
$sens=2; // Par ex

if ($sens == 1)
{
$imgsens = "droite.gif";
}
if($sens == 2)
{
$imgsens = "gauche.gif";
}
?>
<html>
<head>
</head>
<body>
<img name="sens_image" src="<?php echo $imgsens;?>">
</body>
</html>


Si tu as besoin d'autres explications poste un autre msg

@+
Php

[[  The Truth is Out There   ]]
Archaon Iron Messages postés 10 Date d'inscription jeudi 15 mai 2003 Statut Membre Dernière intervention 31 mai 2003
15 mai 2003 à 22:44
Bonsoir,

Tes deux solutions semblent bonnes, mais je ne l'ai ai pas essayées car j'ai déjà trouver comment faire, en JavaScript, presque de la même manière, sauf qu'il ma manquait le preload de l'image (merci pour ça)

Mais le Gros du problème, je me suis mal expliqué désolé, c'est que j'aurai régulièrement besoin de faire le genre d'erreur que j'ai fait là. Je m'explique, le problème est qu'apparemment il n'y a aucun moyen de transformer une varible JavaScript (ex: sens_imgage) en variable reconnaissable par le PHP (ex: $sens_image) c'est pour cela que je pensais mettre le PHP dans une condition JavaScript, car la donnée qui est traîtée (là: sens) est une variable JavaScript, donc je dois commencer cette condition en JavaScript.
Là c'est un cas simple, j'ai pu me passer du PHP car dans ce passage il n'utilise pas la bdd.
Mais mon programme devra souvent aller chercher une valeur dans une base de données, les "transmettre" au JavaScript qui tout au long de son exécution devra sous certaines conditions modifier les valeurs et les "retransmettre" au PHP qui va updater la bdd.

Il y aurait-il une solution pour faire ça, sinon une alternative ?
Mon programme doit tourner en JavaScript (question d'intéractivité) et prendre des variables dans une bdd (donc PHP) pour les sauvegardes par exemple.

Help Me Please !! Je suis perdu moi...

"Si on veut, on peut"
=> Hélas non, la chance (ou la malchance) a souvent son mot 
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 mai 2003 à 23:10
Back again,

Evidemment qu'on peut passer des variables de PHP à Javascript
et réciproquement.
Mais dans le sens JS -> PHP il faut obligatoirement recharger une page fut-ce la même.

Je ne m'attacherais qu'aux variables numériques pour le moment car avec les chaînes c'est galère à cause des slashs, des espaces etc ... et surtout du magic_quote de PHP grrrrzzzzz !!!!

De PHP à JavaScript :

C'est simple :

<?php
$var_y=10;
?>
<html>
<head>
<script language="JavaScript">
<!--

var var_y=<?php echo $var_y; ?>;

// -->
</script>
</head>
<body>
...


Ce qui donne :


<html>
<head>
<script language="JavaScript">
<!--

var var_y=10;

// -->
</script>
</head>
<body>
...



De JavaScript à PHP : ca se corse

Passage directement via l'url

page1.php :

<html>
<head>
<script language="JavaScript">
<!--

var var_y=10;

function goto()
{
// Appel de la page page2.php avec 1 paramètre

window.location.href="page2.php?var_y"+var_y;
}

// -->
</script>
</head>
<body>
<form>
<input type="button" value="Vers page 2" onclick="goto()">
</form>
...


page2.php

<html>
<head>
<body>
<?php

// Si la variable est définie
if (isset($var_y))
{
echo "Variable reçue par l'url var_y=".var_y;
}
?>
</body>
</html>


Nota : à l'aide de JavaScript tu peux également récupérer les données passées dans l'url sans utiliser PHP d'ailleurs


C'est ce genre de chose que tu cherches ?

Si oui je pourrais détailler, la transmission via les formulaires (POST/GET), le transmission des chaînes, urlencode/urldecode , escape, htmlspecialchars, la récupération depuis MySql etc ...

@+
Php


[[  The Truth is Out There   ]]
Archaon Iron Messages postés 10 Date d'inscription jeudi 15 mai 2003 Statut Membre Dernière intervention 31 mai 2003
15 mai 2003 à 23:18
Bonsoir PHP !! Mon sauveur !

Là pour l'instant je n'ai pas tout saisi, mais je vais faire un copier collé de ta réponse pour garder ça sous les yeux !

Oui je serai intéressé par l'aide que tu me propose bien sûr, bien que là (je suis vraiment pas doué) je ne sais pas vraiment de quoi tu parles, ça m'a l'air compliqué en tout cas. Mais tu réponds déjà à mon principal soucis, le changement de variables de PHP à JavaScript et inversement.

Merci, pour ton aide, dis moi quand et comment ? Encore un grand merci !!



"Si on veut, on peut"
=> Hélas non, la chance (ou la malchance) a souvent son mot 
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 mai 2003 à 23:42
Bah, demain j'essairais de faire un peu plus easy et de poster quelques trucs du boulot.
Faut que je bosses sur Delphi mais je trouverais bien un moment pour me connecter sur le net. ;-)

@+
PHP


[[  The Truth is Out There   ]]

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Archaon Iron Messages postés 10 Date d'inscription jeudi 15 mai 2003 Statut Membre Dernière intervention 31 mai 2003
15 mai 2003 à 23:49
Oki merci !! j'ai hâte d'être demain (ah 23h48 ! On y est presque ! lol)

"Si on veut, on peut"
=> Hélas non, la chance (ou la malchance) a souvent son mot 
Archaon Iron Messages postés 10 Date d'inscription jeudi 15 mai 2003 Statut Membre Dernière intervention 31 mai 2003
16 mai 2003 à 18:40
Ta méthode pour passer une variable dans le sens PHP-> JavaScript est bonne, mais pour faire l'inverse, elle coince, car il faut que je reste tours sur la même pas, et sans cliquer avec la sourie, sans appuyer sur une touche du clavier, ça doit se faire seul, quand le programme croise certaines conditions.

Le tout doit être comprit dans un script JavaScript (celui qui gère les déplacement)

"Si on veut, on peut"
=> Hélas non, la chance (ou la malchance) a souvent son mot 
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
16 mai 2003 à 19:11
Brs,

G mis un ex en ligne qui devrait te permettre de suivre mes explications :

http://www.nobodysperfect.freesurf.fr/php/passage.php

Quand à passer les variables à la même page rien de plus simple :

Si la page porte le nom page.php


<html>
<head>
<script language="JavaScript">
<!--

var var_y=10;

function goto()
{
// Appel de la page page.php avec 1 paramètre

window.location.href="page.php?var_y"+var_y;
}

// -->
</script>
</head>
<body>
// Si la variable est définie
if (isset($var_y))
{
echo "Variable reçue par l'url var_y=".var_y;
}
?>



<form>
<input type="button" value="Vers la meme page" onclick="goto()">
</form>
...

Et voilà !

By PHP


[[  The Truth is Out There   ]]
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
16 mai 2003 à 19:14
Oops !


echo "Variable reçue par l'url var_y=".$var_y;


à la place de

echo "Variable reçue par l'url var_y=".var_y;


il manquait le $ devant le nom de la variable $var_y ...

Nobody's perfect ...


[[  The Truth is Out There   ]]
Archaon Iron Messages postés 10 Date d'inscription jeudi 15 mai 2003 Statut Membre Dernière intervention 31 mai 2003
16 mai 2003 à 23:01
Merci, mais si maintenant je veux ne pas avoir besoin de cliquer sur un bouton, sans formulaire donc, est-ce possible ? Car les changements de variables se font seuls, sans clics, sans même que le visiteur ne puisse le voir.

"Si on veut, on peut"
=> Hélas non, la chance (ou la malchance) a souvent son mot 
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
16 mai 2003 à 23:22
Je ne vois pas trop bien ce que tu veux faire, ni comment d'ailleurs ...

Pour passer une variable JS à PHP on est OBLIGE de recharger une page fut-ce la même !
En fait Javascript ne passe rien du tout on ne fait qu'envoyer le contenu de la variable par le protocole HTTP en même temps que le requête pour la page à recharger.

Maintenant on peut bien sûr automatiser le rechargement de la page sans aucun clic ni saisie mais alors quel est l'événement qui le déclenche ? Un timer, la fin d'un prog JS ? Quoi ?

Dans tous les cas je peux t'assurer que l'utilisateur va s'apercevoir
que la page se recharge ... A moins éventuellement que tu passes par une petite fenêtre POPUP et que tu demandes à l'utilisateur de ne surtout pas y toucher (traduction : NE PAS LA FERMER !) Mais bon c'est un peu tordu ...

@+
PHP
[[  The Truth is Out There   ]]
Archaon Iron Messages postés 10 Date d'inscription jeudi 15 mai 2003 Statut Membre Dernière intervention 31 mai 2003
16 mai 2003 à 23:34
En fait mon script est un jeu, dans lequel on déplace un personnage, c'est pourquoi le script JavaScript doit contenir le reste, pour que l'on puisse tout le temps se déplacer, sans attendre qu'autre chose soit fait (par exemple enregistrement de données) et j'ai besoin de mySql pour enregistrer les données des joueurs, et pouvoir les récupérer ensuite (donc une base de données=>PHP)

Sinon aurais-tu une autre manière à me suggérer ? Un autre langage, plus adapté, avec base de données et possibilité de 'capter les touches' (getkey par exemple) ?

"Si on veut, on peut"
=> Hélas non, la chance (ou la malchance) a souvent son mot 
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
16 mai 2003 à 23:50
Un jeu, quel type de jeu ? Et ca doit fonctionner en réseau sur le net ?

Parce que le JavaScript est plutôt lent ... Donc les jeux avec anims dans tous les sens tu oublies

Peut être avec JAVA (mais je n'y connais rien et en plus c'est lent) ou en Flash (mais faut acheter le soft de Macromedia)

Cela dit avec JavaScript tu peux détecter les touches ca au moins c'est facile ... quoique pour les touches de direction faut voir
Tu peux aussi utiliser le drag & drop , je sais pas si ca peut te servir

Tu comptes enregistrer beaucoup de choses dans ta base de données ?



[[  The Truth is Out There   ]]
Archaon Iron Messages postés 10 Date d'inscription jeudi 15 mai 2003 Statut Membre Dernière intervention 31 mai 2003
16 mai 2003 à 23:54
"Drag & drop" c'est quoi ? Dans la bdd je dois enregistrer pour chaque joueur différentes données comme HP MP EXP DEX AGI,... les données habituelles on va dire des jeux de rôles.

"Si on veut, on peut"
=> Hélas non, la chance (ou la malchance) a souvent son mot 
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
17 mai 2003 à 00:09
Disons que ca consiste en gros à déplacer des objets à la souris et à faire une action lorsque tu "lâches" l'objet à un endroit précis de la page.

Si tu as IE tu peux faire un test de déplacement sur :
http://www.nobodysperfect.freesurf.fr/ccm/drag.htm


[[  The Truth is Out There   ]]
Archaon Iron Messages postés 10 Date d'inscription jeudi 15 mai 2003 Statut Membre Dernière intervention 31 mai 2003
17 mai 2003 à 00:17
Pas mal, mais le hic c'est que je dois déplacer un personnage, sâchant qu'il y a par exemple des murs, avec le drag & drop il pourrait les traverser.

Et si je plaçai une petite iframe dans un coin de la page, et que si les conditions sont réunies, il lance la page2.php (par exemple) dans cette iframe ? Ca pourrait fonctionner tu penses ? Mais qu'elle est ce code pour ouvrir une autre page dans une iframe en JavaScript ? du style goto('http://www... page2.php' target='nom de l'iframe') ou même je peux faire ça en HTML dans le script JavaScript non ?

"Si on veut, on peut"
=> Hélas non, la chance (ou la malchance) a souvent son mot 
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
17 mai 2003 à 00:42
ma page n'était qu'un essai bien sûr . Pour ton jeu il faudrait que tu implémentes le plan complet de l'espace sous forme de vecteurs dans lequel ton personnage peut évoluer . Ensuite comme il est possible de détecter les coordonnées de la souris en JavaScript hé bien tu peux parfaitement forcer ton personnage (en fait une zone rectangulaire) à rester dans les limites de ton jeu, à ne pas pouvoir franchir de murs ni les portent sans le bonne clé etc ...

Par contre je ne comprends toujours pas ton histoire avec la page2 qui se charge !

Disons que tu es sur la page 1 : quand charges tu la page2 et quelles informations charges-tu exactement ? A quoi servent-t-elles ?



[[  The Truth is Out There   ]]
Archaon Iron Messages postés 10 Date d'inscription jeudi 15 mai 2003 Statut Membre Dernière intervention 31 mai 2003
17 mai 2003 à 00:48
OUla il faudrait que tu m'envoies un script d'exemple avec des explications à chaque ligne pour que je comprenne qu'est-ce qui fait quoi dans le script !
L'histoire de la page 2 qui se charge là, c'est par rapport à ta solution pour passer les données de JavaScript à PHP, il servirai par exemple à ce que dès qu'il t'arrive quelque chose, ce soit enregistré dans la bdd, ou par exemple, pour que les autres joueurs voient où tu te situes, car le script dessinerait le personnage de chaque membre présent, à son emplacement précis. (Et ta solution parle d'une deuxième page)

"Si on veut, on peut"
=> Hélas non, la chance (ou la malchance) a souvent son mot 
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
17 mai 2003 à 01:16
Ce que tu veux faire me semble assez complexe. J'espère que tu as un bon niveau en prog ! ;-)

Tu veux repèrer la position de tous les autres joueurs ben c'est pas gagné. Sauf si tu tolères que la position des joueurs ne soit actualisée qu'une fois par minute par ex (donc pas de jeu en temps réel bien sûr).

En fait c'est aussi complexe que d'écrire un CHAT : en HTML pur c'est pratiquement impossible sauf si tu es prêt à attendre les réponses durant plusieurs dizaines de seconde.

A moins peut être en utilisant les sockets PHP faudrait que je cherche. Mais je t'avoue que je n'ai jamais songé à concevoir un jeu et encore moins en JavaScript.

Sur ce la nuit porte conseil

@+
PHP



[[  The Truth is Out There   ]]
Dans ce cas pourquoi ceci fonctionne t'il si php et javascript agissent indépendement ?

 ?>
	<script language="JavaScript">
		if(window.confirm('Êtes-vous sur de vouloir supprimer ce contact?'))
		{
		 document.write("<?php echo "GAH1"; ?>");
		}
		else
		{
		document.write("<?php echo "GAH2"; ?>");
		}
		</script>
	<?php


( en effet en cliquant sur OUI ça affiche GAH1 et en cliquant sur annuler ça affiche GAH2 ).
Quelques idées:

- tu peux "écrire" des valuers dans ta pge HTML depuis un script Javascript par

document.GetElementById['id_du_calque').innerHTML;

à l'endroit ou tu veux écrire tu mets un <div id='id_du_calque' > </div>


- tu peux dialoguer en asynchrone (en arrière plan) de JS avec un script PHP avec AJAX (c'est une partie de Javascript)

Va voir sur Google comment faire.