Discussion:
Transmission chaine de caracteres Javas cript->PHP
(trop ancien pour répondre)
Zarak
2010-05-06 16:34:03 UTC
Permalink
Bonjour,

J'ai un problème que je vais essayer de résumer simplement : je voudrais
transmettre une chaine de caractère depuis Javascript vers PHP, chaine
qui sera ensuite traitée dans une requête SQL.

La fonction Javascript récupère un évenement clavier, qui est transmis -
avec succès - vers une fonction php "Rechercher" :

/* Fonction Javascript */
function Update(frappe)
{
document.getElementById("textfield").value = "<?php Rechercher('"+frappe+"'); ?>";
}

/* Fonction PHP */
function Rechercher($text)
{
$result = RequeteSQL("SELECT nom FROM table WHERE nom LIKE '$text%' ORDER BY nom");
$ligne = mysql_fetch_array($result);
echo $ligne[0];
}

A partir de là, un truc bizarre se produit : la chaîne est bien transmise, un "echo" peut
le prouver, mais la requête SQL ne renvoit rien. Si je rajoute par exemple au début de la
fonction PHP $text = "V", ça va marcher, la requête SQL va me renvoyer le premier enregistrement
commençant par "V". Si ce même "V" provient du Javascript, 'a marche pu.

Qu'est-ce qui ne fonctionne pas entre Javascript, MySQL et l'appel PHP ? N'y a-t-il pas une
histoire de formatage de chaîne de caractère ou qqch dans le genre ?

Merci.
Olivier Miakinen
2010-05-06 17:05:02 UTC
Permalink
Bonjour,
Post by Zarak
J'ai un problème que je vais essayer de résumer simplement : je voudrais
transmettre une chaine de caractère depuis Javascript vers PHP, chaine
qui sera ensuite traitée dans une requête SQL.
Ok. Le problème -- classique -- est que tu n'as pas encore compris
comment PHP et JavaScript s'articulent : voir par exemple dans la FAQ
<http://faqfclphp.free.fr/#rub2.3>.

En très gros, les étapes sont les suivantes :
1) Le script PHP s'exécute sur le serveur web, et génère la page HTML,
laquelle peut éventuellement contenir du JavaScript (mais bien sûr ce
code n'est pas encore exécutable).
2) La page HTML générée est envoyée au navigateur, et elle est
maintenant une page *statique* du point de vue du serveur (plus aucun
code PHP ne peut s'exécuter).
3) C'est alors que JavaScript peut entrer dans la danse, dans le
navigateur, et récupérer d'éventuels événements clavier. Mais comme dit
ci-dessus PHP n'existe plus ; l'interpréteur PHP sur le serveur a fini
de travailler depuis longtemps, et ne recommencera que pour une *autre*
page web.
Post by Zarak
La fonction Javascript récupère un évenement clavier, qui est transmis -
Non, tu te trompes. L'événement clavier ne *peut* pas être transmis avec
succès à PHP car il n'y a plus de PHP.

Cordialement,
--
Olivier Miakinen
Denis Beauregard
2010-05-06 21:52:17 UTC
Permalink
Post by Zarak
Bonjour,
Post by Zarak
J'ai un problème que je vais essayer de résumer simplement : je voudrais
transmettre une chaine de caractère depuis Javascript vers PHP, chaine
qui sera ensuite traitée dans une requête SQL.
Ok. Le problème -- classique -- est que tu n'as pas encore compris
comment PHP et JavaScript s'articulent : voir par exemple dans la FAQ
<http://faqfclphp.free.fr/#rub2.3>.
Par curiosité, comment Google fait-il pour réussir cette opération ?
C'est du java qui appelle le serveur à chaque saisie d'un caractère ?

Le code de la page de Google est très compliqué et il y a beaucoup de
javascript et un .js avec un nom aléatoire. Mais pas de php dans ce
code... Une question pour le forum des auteurs ? (suivi en
conséquence)


Denis
Zarak
2010-05-07 10:12:26 UTC
Permalink
Post by Olivier Miakinen
3) C'est alors que JavaScript peut entrer dans la danse, dans le
navigateur, et récupérer d'éventuels événements clavier. Mais comme dit
ci-dessus PHP n'existe plus ; l'interpréteur PHP sur le serveur a fini
de travailler depuis longtemps, et ne recommencera que pour une *autre*
page web.
Post by Zarak
La fonction Javascript récupère un évenement clavier, qui est transmis -
Non, tu te trompes. L'événement clavier ne *peut* pas être transmis avec
succès à PHP car il n'y a plus de PHP.
Cordialement,
Ok, j'ai résolu mon problème, effectivement c'était très crade (lol), juste
le temps que je m'intéresse à Ajax, qui correspond exactement à ce que je
cherchais.

'a r'commençerais pu :)
Pascal
2010-05-06 17:18:26 UTC
Permalink
Post by Zarak
Bonjour,
Bonjour,
Post by Zarak
/* Fonction Javascript */
function Update(frappe)
{
document.getElementById("textfield").value = "<?php
Rechercher('"+frappe+"'); ?>";
}
Je ne comprends pas la cinématique, là.
Qu'est-ce que les balises PHP font dans le corps de la fonction JavaScript ?

Comment les données sont-elles transmises ? (GET, POST, AJAX ?)
Comment sont-elles récupérées dans PHP ?
Post by Zarak
A partir de là, un truc bizarre se produit : la chaîne est bien transmise, un "echo" peut
le prouver,
Où se trouve le "echo" lors du test ?
Il manque des détails de fonctionnement pour comprendre, je crois.
J'attends la suite, à moins que d'autres soient plus imaginatifs.

Cordialement,
Pascal
Olivier Miakinen
2010-05-06 18:40:56 UTC
Permalink
Post by Zarak
Post by Zarak
Bonjour,
Bonjour,
Post by Zarak
/* Fonction Javascript */
function Update(frappe)
{
document.getElementById("textfield").value = "<?php
Rechercher('"+frappe+"'); ?>";
}
Je ne comprends pas la cinématique, là.
Qu'est-ce que les balises PHP font dans le corps de la fonction JavaScript ?
:-D

Il faut lire le code PHP indépendamment du code JavaScript :
<?php Rechercher('"+frappe+"'); ?>

Lors de la génération de la page HTML, on appelle donc la fonction
Recherche() en lui passant une chaîne de 10 caractères qui sont un
guillemet, un plus, six lettres, un plus et un guillemet. En clair,
$text vaut « "+frappe+" ».

La requête SQL est donc :
« SELECT nom FROM table WHERE nom LIKE '"+frappe+"' ORDER BY nom »
(oui, avec deux sortes de guillemets au sein de la même chaîne)

Si, comme on peut le supposer, le echo dans Rechercher() retourne une
chaîne vide, alors le code JavaScript résultant est :
«
function Update(frappe)
{
document.getElementById("textfield").value = "";
}
»

Pas étonnant que ça ne fonctionne pas !

Cordialement,
--
Olivier Miakinen
Pascal
2010-05-06 20:03:37 UTC
Permalink
Post by Zarak
<?php Rechercher('"+frappe+"'); ?>
Je m'en doutais un peu, sans approfondir, mais je faisais de la
maïeutique avec mes questions. Il faut que notre ami se creuse pour y
répondre, ça peut l'éclairer.

Cordialement,
Pascal
Bruno Desthuilliers
2010-05-06 21:52:17 UTC
Permalink
Post by Pascal
je faisais de la
maïeutique avec mes questions.
Pascal, ce que tu fais chez toi ne regarde que toi, mais ici c'est un
neswgroup sérieux alors par pitié épargne nous le récit de tes turpitudes.
Pascal
2010-05-07 13:45:32 UTC
Permalink
Post by Bruno Desthuilliers
Post by Pascal
je faisais de la
maïeutique avec mes questions.
Pascal, ce que tu fais chez toi ne regarde que toi, mais ici c'est un
neswgroup sérieux...
Si tu le dis ! ;-)

Continuer la lecture sur narkive:
Loading...