De MySQL à JavaScript en passant par PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : De MySQL à JavaScript en passant par PHP

par Louisss » 26 mai 2009, 14:23

Bonjour et merci pour vos réponses.

Ton code marche très bien, enneite. J'avais effectivement pensé à utiliser cette fonction, mais j'avais mal réglé les paramètres.

Merci bien.

Sinon, zeus, j'ai hésité à mettre cette question dans le forum débutant à cause du fait que je mélange PHP, MySQL et JavaScript.

Cordialement

par Ryle » 23 mai 2009, 09:30

En fait, javascript interprète les retours à la ligne dans le code, comme des fins d'instructions (le point-virgule en fin de ligne est en effet facultatif, mais perso, je trouve quand même ça plus clair :))

Du coup, quand avec php tu génère le code javascript suivant :
<script type="text/javascript">
  var maVariable = 'un texte avec 
un retour à la ligne';
</script>
Javascript génère une erreur, puisque pour lui, il s'agit de deux instructions, la première s'arrêtant avant d'avoir refermé la chaine.

La solution d'enneite te permet de transformer les retours à la ligne présents dans ta chaine initiale, afin que php ne les interprète pas (\\n) et donc ne génère pas de renvoi à la ligne dans le code js. En revanche, il va ainsi pouvoir écrire des "\n" dans la chaine javascript, qui ne seront pas considérés comme une fin d'instruction, mais bien un retour à la ligne dans la chaine :
<script type="text/javascript">
  var maVariable = 'un texte avec \n un retour à la ligne';
</script>

par enneite » 23 mai 2009, 09:07

j'ai pas très bien compris ce que tu voulais obtenir, donc excuse moi si je tombe à coté de ce que tu veux, mais tu peux essayer ce code:

$req = "SELECT Texte FROM Phrase";
$res = mysql_query($req);
for($comp = 0;$comp < mysql_numrows($res);$comp++)
{
$texte=str_replace("\n","\\n",mysql_result($res, $comp, 'Texte'))

echo "TabQuestions[".($comp + 1)."] = \"".$texte."\";\n";
}
ça devrait remplacer les sauts de lignes par des sauts de lignes interprétés par javascript.

par jojolapine » 22 mai 2009, 23:10

Montre nous le code source javascript généré par ton php (un petit ctrl + U )...

par zeus » 22 mai 2009, 20:18

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "PHP débutant".

Merci de prendre le temps de lire les règlements
ainsi que l'intitulé de chaque forum avant de poster un nouveau sujet.

De MySQL à JavaScript en passant par PHP

par Louisss » 22 mai 2009, 18:40

Bonjour.

Je suis en train d'écrire un script PHP qui doit récupérer des données dans une BD MySQL pour générer du code JavaScript.
Je précise avant tout que le code JavaScript fonctionnait très bien avant que j'y mette du PHP, le but étant de stocker les textes dans une BD.

Le problème se situe au niveau des sauts de lignes :
Dans MySQL, le champ concerné est de type text.
Je récupère chaque donnée via PHP et je l'injecte dans de le JavaScript, mais ce dernier ne comprend pas les sauts de ligne. J'ai essayé aussi bien en tapant les sauts de ligne dans la BD qu'en les remplaçant par des \n que JavaScript est sensé comprendre. Ca ne marche dans aucun cas.

Voici le code :

Code : Tout sélectionner

$req = "SELECT Texte FROM Phrase"; $res = mysql_query($req); for($comp = 0;$comp < mysql_numrows($res);$comp++) { echo "TabQuestions[".($comp + 1)."] = \"".mysql_result($res, $comp, 'Texte')."\";\n"; }
Chaque texte ainsi inséré dans le tableau JavaScript contient un saut de ligne, c'est là que ça coince.
Le \n à la fin ne pose pas de problème, lui, il est correctement interprété.

Merci d'avance