[PHP] Javascript foutmelding bij bouw textarea

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik laat via javascript een textarea maken, waar je (netzoals hier) je via icoontjes je text kan editen. Dit gaat allemaal goed als ik gewoon iets insert. Maar wanneer ik iets wil updaten. Dus via zo'n textarea waar ik de text uit mijn database via php in doe....

zie:
code:
1
2
//Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
writeRichText('text', '<?echo "$text";?>', 520, 200, true, false);


Javascript geeft nu een foutmelding aan:
code:
1
2
Error: Unterminated string constant
Code: 0


Terwijl hij wel werkt wanneer ik hem gewoon echo in html?

Wat doe ik fout. Probleem is dus dat hij die textarea niet maakt. Dat komt dus zoals ik gelezen heb omdat ik foutieve tekens heb in de text. MAar ik heb tóch over al addslashes gebruikt.

Zo ziet m'n javascript code ná uit:
code:
1
2
3
4
5
6
7
8
9
<script language="JavaScript" type="text/javascript">
<!--
//Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
writeRichText('text', '<p>Er zal dit jaar helaas geen LIVE TV-uitzending zijn van het WK, 3 december as. in München. Wel zal het programma Sportschau van de ARD ruim verslag doen van dit evenement, maar dan op zondag morgen van 9.45 tot 10.50.</p>
<p>ARD is in Hoorn gewoon op de <a href=\"http://www.multikabel.nl/freqs.php?gem_id=19&check=check\" target=\"_blank\">kabel</a> te ontvangen. Sportschau zal met alle waarschijnlijkheid de gehele finale laten zien op TV, met eventueel 1 of 2 teams uit de tussenronde. </p>
<p>De --- website (deze site) zal gedurende het WK het thuisfront op de hoogte houden. Via een speciaal messageboard is het mogelijk om alle verrichtingen van ---- te volgen. </p>
<p>Dus volg --- vanuit huis:<br />- Zaterdag: LIVE via internet op <a href=\"http://www.---.nl/\">http://www.---.nl</a><br />- Zondag: Op TV - ARD (Duitsland) - van 9.45 tot 10.50</p>', 520, 200, true, false);
//-->
</script>


Hoop dat iemand mijn kan helpen. Alvast bedankt

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

Sinds wanneer mogen strings over meerdere regels in javascript ;)

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 20:03
Newlines vervangen door <br>. Denk dat het ook handig is om quotes te escapen :).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
uhm zo geeft hij het weer in m'n HTML, ik weet niet hoe ik het aan elkaar krijg (op 1 regel) of dit moet via php gaan dan?

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 19:48

Cyphax

Moderator LNX
Verwijderd schreef op woensdag 23 november 2005 @ 09:46:
uhm zo geeft hij het weer in m'n HTML, ik weet niet hoe ik het aan elkaar krijg (op 1 regel) of dit moet via php gaan dan?
Ja haal de newlines eruit (\n) want dat gooit roet in het eten in jouw geval. :)

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 20:03
Verwijderd schreef op woensdag 23 november 2005 @ 09:46:
uhm zo geeft hij het weer in m'n HTML, ik weet niet hoe ik het aan elkaar krijg (op 1 regel) of dit moet via php gaan dan?
Ja, dit moet je in PHP doen, voor je de string naar je browser schrijft.

offtopic:
Waarom zie ik zo ontzettend veel mensen quotes om variabelen heen zetten? echo "$text" heeft toch geen nut... 't zorgt er slechts voor wat performanceverlies...

[ Voor 37% gewijzigd door sjroorda op 23-11-2005 09:49 . Reden: Quote toegevoegd ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Om witregels erin te krijgen moet je '\n' gebruiken,

met trim/rtrim haal je de begin en/of eindwitregels weg,

maar om ze ertussen weg te halen, kon in niet vinden.....

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 19:48

Cyphax

Moderator LNX
Verwijderd schreef op woensdag 23 november 2005 @ 12:05:
Om witregels erin te krijgen moet je '\n' gebruiken,

met trim/rtrim haal je de begin en/of eindwitregels weg,

maar om ze ertussen weg te halen, kon in niet vinden.....
Je wilt er geen witregels in hebben, right? Je kunt ze ook converteren naar <br /> met nl2br (http://nl3.php.net/manual/en/function.nl2br.php), anders eruit filteren, met str_replace ofzo?

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • Maxxi
  • Registratie: Mei 2004
  • Laatst online: 19-04 19:18
'<?echo "$text";?>'

Ik denk dat de " " er niet horen.

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 19:48

Cyphax

Moderator LNX
Maxxi schreef op woensdag 23 november 2005 @ 12:16:
'<?echo "$text";?>'

Ik denk dat de " " er niet horen.
Dan wordt de variabele niet geparsed en komt er letterlijk $text in je output, als de string tussen single quotes staan.

[ Voor 24% gewijzigd door Cyphax op 23-11-2005 12:20 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Houdt er rekening mee dat nl2br een <br /> tag _toevoegt_, het vervangt je newlines dus niet. Dat zal je met str_replace of een andere replace functie moeten doen denk ik.

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Nu online

orf

PHP:
1
2
3
4
5
<?php

$sString = str_replace("\n", '\n', $sString);

?>

Acties:
  • 0 Henk 'm!

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 21:13

TheDane

1.618

Zo te zien maak je gebruik van Kevin Roth's rich text editor :P

Hij heeft een hele fijne functie erbij geleverd om alle tekst die je in die teksteditor wil zetten safe te maken.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php 
    function rteSafe($strText) {
    //returns safe code for preloading in the RTE
    $tmpString = $strText;
    
    //convert all types of single quotes
    $tmpString = str_replace(chr(145), chr(39), $tmpString);
    $tmpString = str_replace(chr(146), chr(39), $tmpString);
    $tmpString = str_replace("'", "'", $tmpString);
    
    //convert all types of double quotes
    $tmpString = str_replace(chr(147), chr(34), $tmpString);
    $tmpString = str_replace(chr(148), chr(34), $tmpString);
//  $tmpString = str_replace("\"", "\"", $tmpString);
    
    //replace carriage returns & line feeds
    $tmpString = str_replace(chr(10), " ", $tmpString);
    $tmpString = str_replace(chr(13), " ", $tmpString);
    
    return $tmpString;
    }
    
    
$content = $frm['n_description']; 
$content = rteSafe($content);
?>


$content kun je dan in je js regeltje echo'en.

[ Voor 9% gewijzigd door TheDane op 23-11-2005 12:40 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Cyphax schreef op woensdag 23 november 2005 @ 12:19:
[...]

Dan wordt de variabele niet geparsed en komt er letterlijk $text in je output, als de string tussen single quotes staan.
Onzin, dan wordt de waarde van de variabel $text gewoon direct naar de output gestuurd. Anders output je een string waarin van te voren de waarde ervan wordt verwerkt. Zulke quotes zijn dus gewoon overbodig.

Noushka's Magnificent Dream | Unity


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

PHP:
1
$text = addcslashes($text, "\0\n\r\t\\'/");

Eventueel kan je hier nog double quotes bij zetten, maar ik zet mijn javascript strings altijd tussen single quotes dus hoef ik double quotes niet te escapen.
Kevin Roth's oplossing is wel erg omslachtig...

[ Voor 65% gewijzigd door crisp op 24-11-2005 09:08 ]

Intentionally left blank


  • Cyphax
  • Registratie: November 2000
  • Laatst online: 19:48

Cyphax

Moderator LNX
Michali schreef op donderdag 24 november 2005 @ 09:01:
[...]


Onzin, dan wordt de waarde van de variabel $text gewoon direct naar de output gestuurd. Anders output je een string waarin van te voren de waarde ervan wordt verwerkt. Zulke quotes zijn dus gewoon overbodig.
Geen idee wat je nu eigenlijk precies zegt.
code:
1
2
  $test = "string";
  echo '$test';

Output is "$test", niet "string", wat is daar onzin aan?
Het is wel irrelevant omdat DancingTim de variabele tussen dubbele quotes heeft staan, dat zag ik verkeerd (daarmee de post van Maxxi ook). :P
(wordt snel verwarrend met al die combinaties van quotes en talen zo)
[edit]
Bij nader inzien snap ik jouw post ook trouwens. :)

[ Voor 8% gewijzigd door Cyphax op 24-11-2005 09:19 ]

Saved by the buoyancy of citrus


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Er staan idd dubbele quotes omheen, die zijn overbodig. Als je er enkele omheen zet krijg je idd letterlijk de variabel zoals je hem in de string zet. Maxxi bedoelde dat je die dubbele quotes om $text gewoon weg kan laten. Maar dat had je al begrepen dus ;)

Noushka's Magnificent Dream | Unity

Pagina: 1