Page 1 sur 1

De MySQL à JavaScript en passant par PHP

Posté : 22 mai 2009, 18:40
par Louisss
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

Posté : 22 mai 2009, 20:18
par zeus
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.

Posté : 22 mai 2009, 23:10
par jojolapine
Montre nous le code source javascript généré par ton php (un petit ctrl + U )...

Posté : 23 mai 2009, 09:07
par enneite
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.

Posté : 23 mai 2009, 09:30
par Ryle
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>

Posté : 26 mai 2009, 14:23
par Louisss
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