Avatar billede mazey Praktikant
24. juli 2006 - 21:20 Der er 13 kommentarer og
1 løsning

Gøre brug af PHP i javascript

Hej Eksperter...


Jeg har et javascript hvori jeg gerne vil hente noget tekst fra en database, men jeg har fundet ud af at hvis der er afsnit mellem teksterne virker det ikke.

Kode:

var description=new Array()
<?
$guidep2 = mysql_query("SELECT * FROM guide");
$xp1 = 0;
while($guidep3 = mysql_fetch_array($guidep2)){
?>
description[<?=$xp1?>]="sadasdsad"
<?
$xp1++;
}
?>

Hvis  --> description[<?=$xp1?>]="sadasdsad" <-- value er på flere linier laver den fejl. som den er nu med "sadasdsad" så virker det fint, men hvis jeg laver den således:

description[<?=$xp1?>]="sadasdsad
sadasdasd
asdsad
asdasd
asd
"

Så fejler den... hvorfor? og kan det gøres så man kan lave det?

Hvis i ikke forstår så sig til! :D
Avatar billede nielle Nybegynder
24. juli 2006 - 21:27 #1
Den fejler fordi at JavaScriptet ikke kan finde ud af at noget starter på næste linje.

Kuren må være at lave linjeskiften om til noget bedre:

description[<?=$xp1?>]="sadasdsad\nsadasdasd\nasdsad\nasdasd\nasd\n";
Avatar billede erikjacobsen Ekspert
24. juli 2006 - 21:27 #2
Det er vel fordi JavaScript skal have den linie serveret som:

description[<?=$xp1?>]="sadasdsad\nsadasdasd\nasdsad\nasdasd\nasd\n";
Avatar billede nielle Nybegynder
24. juli 2006 - 21:32 #3
.
Avatar billede nielle Nybegynder
24. juli 2006 - 21:36 #4
Jeg går ud fra at du ønsker at indsætte en værdi fra databasen.

var description = new Array()
<?
$guidep2 = mysql_query("SELECT * FROM guide");
$xp1 = 0;
while ($guidep3 = mysql_fetch_array($guidep2))
{
?>
    description[<?=$xp1?>] = "<? echo str_replace("\n", '\n', $guidep3["ditFelt"]); ?>"
<?
$xp1++;
}
?>
Avatar billede mazey Praktikant
24. juli 2006 - 21:38 #5
Så kan det godt være jeg er for amatør agtig hvad angår PHP og Javascript, for jeg ved jo ikke hvordan jeg lige gør det når jeg skal hente det fra database...
Men Jeg skal så have lavet alle linebreaks om til "\" ?
Avatar billede mazey Praktikant
24. juli 2006 - 21:41 #6
Ja, det kan du godt have ret i nielle.. det prøver jeg lige
Avatar billede erikjacobsen Ekspert
24. juli 2006 - 21:46 #7
Hvis linierne er adskilt alene af linefeed - \n - så går det nok, men er de adskilt af carriage-return linefeed - \r\n - skal der lige tilføjes en \r. Du finder ud af det ved at prøve dig frem ;)
Avatar billede roenving Novice
25. juli 2006 - 11:28 #8
-- men måske er det html-entiteten, der skal bruges: <br> !-)
Avatar billede mazey Praktikant
25. juli 2006 - 18:06 #9
Jeg har prøvet med:
description[<?=$xp1?>]=""<? echo str_replace('r\\n', '\n', $guidep3[tekst]); ?>""
description[<?=$xp1?>]=""<? echo str_replace('<br>', '\n', $guidep3[tekst]); ?>""

Men den returnerer stadig en fejl. "Fejl et objekt var ventet"
Avatar billede mazey Praktikant
25. juli 2006 - 18:11 #10
Der var så lige lidt for mange anførelsestegn... :D
Men stadig fejl...
Hvis jeg trækker data hvor der kun er en enkelt linie så virker nedenstående fint, men når jeg ændrer den til at skulle hente rækken med flere linier, fejler den stadig.

description[<?=$xp1?>]="<? echo str_replace('\n', '', $guidep3[navn]); ?>"
Avatar billede nielle Nybegynder
25. juli 2006 - 18:48 #11
Læg godt mærke til indholdet af str_replace() - der er "-tegn rundt om det første led, og '-tegn rundt om det andet:

description[<?=$xp1?>]="<? echo str_replace("\r\n", '\n', $guidep3[tekst]); ?>"

Den lille forskel betyder at PHP behandler \n (og \r) forskelligt i de to strenge. I den første af dem betyder \n et linjeskift, og i den anden er \n simpelthen teksten \n.

Hvis det, som roenving forslår, er <br> der skal bruges, i stedet for \n, så er det:

description[<?=$xp1?>]="<? echo str_replace("\r\n", "<br>", $guidep3[tekst]); ?>"

- eller:

description[<?=$xp1?>]="<? echo str_replace("\r\n", '<br>', $guidep3[tekst]); ?>"

- for her er der nemlig ikke nogen potentielle escape-sekvenser i streng nr. 2.
Avatar billede nielle Nybegynder
25. juli 2006 - 18:50 #12
Iøvrigt bør der også være "-tegn (eller '-tegn) i din $guidep3[]:

description[<?=$xp1?>]="<? echo str_replace("\r\n", '\n', $guidep3["tekst"]); ?>"
Avatar billede mazey Praktikant
25. juli 2006 - 18:53 #13
Ok nielle.... Det gav den helt store forskel.
Kan godt se hvad du mener, og det er helt perfekt at det fungerer!

Mange mange tak!

Smider du svar?
Avatar billede nielle Nybegynder
25. juli 2006 - 20:08 #14
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester