Javasript dans php

Résolu/Fermé
nelly39 - 19 mars 2008 à 15:45
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 20 mars 2008 à 12:21
Bonjour à tous ,

Je vous explique mon problème :
récupérer une valeur javascript dans du php.
Le tout dans une fonction qui me permet de remplir une liste à partir du choix de la permière.
C'est dans la requete, à la place de ELEC, que je voudrais mettre valeurSelec.
Merci d'avance ;-)

Voici le code:


function changeListe(param)
{
	document.form1.CDNAT.length=0; //pour vider la liste de nature intervention
	var valeurSelec = param.options[param.selectedIndex].value;
	   <?php
		mysql_connect("localhost", "root", ""); // connexion à Mysql
		mysql_select_db("travaux1"); // Sélection de la base test2
		$query7 = "SELECT * FROM NATINT WHERE `CDFAM` = 'ELEC'"; //liste de natures d'intervention
		$listeNatInt2 = mysql_query($query7) or die(mysql_error());
		mysql_close(); // Déconnexion de MySQL	
				
	while ($natInt2 = mysql_fetch_array($listeNatInt2) )
	 {
		$libel=$natInt2['LIBEL'];
		$cdnat=$natInt2['CDNAT'];
	?> 
		var libel2="<?php echo "$cdnat - $libel"; ?>";
		var cdnat2="<?php echo $cdnat; ?>";
		nouvel_element = new Option(libel2,cdnat2,false,true);
		document.form1.CDNAT.options[document.form1.CDNAT.length] = nouvel_element;
	<?php
	}
	 ?>
}
A voir également:

13 réponses

Bonjour,
As tu essayé en générant le javascript en php par echo.
<?php
$var_php= echo"<script>param.options[param.selectedIndex].value;</script>";

?>

C'est peut être pas exactement ça mais ça doit pas être loin.
Sinon tu peut essayer aussi d'envoyer un formulaire en renseignant la valeur d'un champ en js mais ça oblige à recharger la page.
0
Tout d'abord merci pour ta réponse.

Mais malheureusement ça ne fonctionne pas :

Parse error: parse error, unexpected T_ECHO in C:\Program Files\EasyPHP\www\gtravaux\travaux.php on line 21


j'ai essayé de bidouillé...

mais quand je met $var_php à la place de ELEC dans ma requete, c'est vide.
(pourtant param.options[param.selectedIndex].value contient bien ce qu'il faut)


Pas simple...

En tout cas merci.

Si d'autres savent ???
+
0
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
19 mars 2008 à 19:46
Je suis pas trop sure de mon coup mais bon, je me lance!

Dans ton code il y a un mélange de javascript et de php.

Le bout de code (javascript) dans lequel tu attribues une valeur à valeurSelec (var valeurSelec = param.options[param.selectedIndex].value;) est bien écrit avant le bout de code (php) où tu veux te resservir de cette variable.

Malheureusement, le php, exécuté côté serveur, sera exécuté AVANT le code en js qui est exécuté par le navigateur une fois la page reçue.

Donc au moment ou le serveur exécute ton code php il connait pas ta variable.

Je te conseille:
- de faire un script js et un script php distincts.
- d'envoyer, dans ton script js, par la méthode POST les variables que tu veux transmettre au script php. (avec un formulaire, par exemple)
- de récupérer ces variables dans le php avec $variable = $_POST['nom_de_la_variable_js'];
- ensuite tu pourras insérer cette variable $variable dans ta requête.

Si tu veux des détails n'hésite pas à demander.

En espérant qu'un "pro" pourra confirmer!

Bon courage!

0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
19 mars 2008 à 20:09
salut,

un passage rapide pour appuyer les dire de chantaussel (le lancement s'est effectué sans problème, bienvenue parmi nous !!!).

récupérer une valeur javascript dans du php

impossible directement.
l'un travail sur le PC du visiteur, l'autre sur le serveur.

tu peux faire passer de l'info par l'url et récupérer dans PHP avec '$_GET' ou utiliser l'objet XmlHttpRequest de Javascript (même principe mais sans recharger la page = Ajax).

je te conseille de regarder Ajax de plus près, je pense que c'est avec ça que tu pourra faire ce que souhaites.
0

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

Posez votre question
Merci de vos réponses.

Effectivement j'avais lu quelque part cette histoire de client et serveur... mais j'avais pas tout compris.

Je vais me renseigner de plus près sur Ajax. Mais n'ayant pas fait de programmation depuis 4 ans, je suis un peu larguer !!

Sinon, si par hasard vous avez un code tout pret pour 2 listes déroulantes dépendantes et surtout qui viennent d'une base de données, je suis preneuse.

En attendant Merci.
A+
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
19 mars 2008 à 20:45
lol !

genre ça ?
0
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
19 mars 2008 à 20:52
Merci pour l'accueil et la confirmation dalida!

Nelly, tu devrais trouver ton bonheur ici : https://www.commentcamarche.net/contents/793-php-recuperation-de-donnees

En gros, si tu génères ta variable javacript grâce à un formulaire (ça à l'air d'être ton cas), tu devras utiliser la méthode "POST" dans ton formulaire et préciser l'url de ton script php où tu vas récupérer ta variable avec $variable_php = $_POST['varible_javascript'];

Si par contre tu n'obtiens pas ta variable par un formulaire (par exemple si le visiteur génère un variable en cliquant sur tel ou tel lien) alors tu devras utiliser XMLHttpRequest, que l'on appelle AJAX mais qui est en fait juste un bout de code javascript qui permet de dialoguer avec un script php! (enfin, je crois...). La méthode "POST" (toujours la même) sera utilisée avec ton objet XMLHttpRequest, au lieu d'être utilisée dans un formulaire. Puis dans ton php tu la récupères avec la même commande qu'au dessus, c'est tout!

Si tu as besoin de XMLHttpRequest, jette un oeil ici : http://www.commentcamarche.net/forum/affich 5494765 xmlhttprequest, je me suis un peu pris la tête dessus... et dans les derniers messages il y a des liens avec plein d'infos.

;)
0
cool !!!

Merci pour le lien Dalida ;-) J'ai pu faire ce que je voulais.

Par contre il transforme les caractères spéciaux (genre accent aigu transformé en point d'interrogation)...

Quelqu'un sait comment remédier à ça ??

Merci :)
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
20 mars 2008 à 10:22
salut,

avant de renvoyer quelque chose en PHP il faut définir l'encodage de caractères grâce à 'header()'.
par exemple pour l'ISO 8859-1 :
header('Content-Type: text/html; charset=ISO-8859-1');
0
Salut !

Apparemment ce n'est pas le souci, car j'ai cette ligne :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Demande de travaux</title>
...


les caractères spéciaux ne sont pas bon seulement dans la liste déroulante que je rempli en faisant appel à ajaxNature.php

Merci
A+
0
Le problème vient de là :

xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');


Mais j'arrive pas à le transformer correctement.

Si qq'un sait?

Merci :)
0
J'ai trouvé la solution pour les problèmes d'accents :

Il faut ajouter

<?php
header('Content-Type: text/html; charset=ISO-8859-1');
?>


au début du code appelé par ajax.

Bon bin voilà, problème résolu !!

A+
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
20 mars 2008 à 12:21
lol !

je n'ai pas été assez clair !

je coche "résolu".

désolé de t'avoir fait perdre du temps et bon courage pour la suite !!!
0