Avatar billede zetn Nybegynder
28. december 2004 - 17:47 Der er 40 kommentarer og
1 løsning

Hjælp til en WYSIWYG

Heysa, jeg har lige lavet en WYSIWYG med execCommand funktionen, og skal til at sammenkoble den med php, så det bliver muligt at ændre nogle sider. Men jeg har dog et problem med at hente koden fra databasen ind i selve editor feltet.

link til editoren: http://www.boligpladsen.dk/wysiwyg/test.htm

problemet er at andre online editorer bliver udskrevet i et textarea, men mit skal komme ud her:

<iframe  id="iView" style="width: 416px; height:200px;"></iframe>

ved ikke lige hvordan man skal klare den?

/jacob
Avatar billede coderdk Praktikant
28. december 2004 - 17:54 #1
Hvorfor bruger du ikke:

  http://www.kevinroth.com/rte/demo.htm
  http://www.koivi.com/WYSIWYG-Editor/

eller

  http://www.fckeditor.net/

Der er eksempler, og så virker det i andet end IE ;)
Avatar billede zetn Nybegynder
28. december 2004 - 18:05 #2
i denne her (det første link) - hvad hedder det felt jeg skal kalde?

<form name="RTEDemo" action="demo.htm" method="post" onsubmit="return submitForm();">
<script language="JavaScript" type="text/javascript">
<!--
function submitForm() {
    //make sure hidden and iframe values are in sync before submitting form
    //to sync only 1 rte, use updateRTE(rte)
    //to sync all rtes, use updateRTEs
    updateRTE('rte1');
    //updateRTEs();
    alert("rte1 = " + document.RTEDemo.rte1.value);
   
    //change the following line to true to submit form
    return false;
}

//Usage: initRTE(imagesPath, includesPath, cssFile)
initRTE("images/", "", "");
//-->
</script>
<noscript><p><b>Javascript must be enabled to use this form.</b></p></noscript>

<script language="JavaScript" type="text/javascript">
<!--
//Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
writeRichText('rte1', 'Hej med dig', 350, 200, true, false);
//-->
</script>
<p>Click submit to show the value of the text box.</p>
<p><input type="submit" name="submit" value="Submit"></p>
</form>
Avatar billede coderdk Praktikant
28. december 2004 - 18:07 #3
updateRTE() <- den smider teksten i feltet, så vidt jeg husker
Avatar billede zetn Nybegynder
28. december 2004 - 18:09 #4
ja, men når jeg trykker submit, og skal smide teksten ind i en database?
Avatar billede coderdk Praktikant
28. december 2004 - 18:11 #5
I dette tilfælde hedder feltet vist "rte1", som der bliver postet til demo.htm
Avatar billede zetn Nybegynder
28. december 2004 - 18:12 #6
oki, jeg er noob indenfor php, så hvordan requester man et felt, altså ligesom man i asp kan request.form?
Avatar billede coderdk Praktikant
28. december 2004 - 18:14 #7
$_GET['felt'] hvis det er en GET, $_POST['felt'] hvis det er en post, men du kan vist også bruge $_REQUEST['felt']

Ellers skim denne igennem: http://www.webcafe.dk/artikler/php/ :)
Avatar billede zetn Nybegynder
28. december 2004 - 18:22 #8
har linket den til redirect.php hvor der er echo $_GET['rte1']; - men den skriver ikke noget.

se den på http://www.silo52.dk/admin/demo.htm
Avatar billede coderdk Praktikant
28. december 2004 - 18:23 #9
Den har  method="post"  så du skal nok bruge $_POST['rte1']
Avatar billede zetn Nybegynder
28. december 2004 - 18:25 #10
prøv at ændre i formen og tryk submit, så skriver den bare den defaulte værdi
Avatar billede coderdk Praktikant
28. december 2004 - 18:30 #11
Ændr lige:

<form name="site_edit" action="redirect.php" method="post">

til:

<form name="site_edit" action="redirect.php" method="post" onsubmit="submitForm()">
Avatar billede zetn Nybegynder
28. december 2004 - 18:32 #12
Det virker :)

Så er der kun lige en sidste ting jeg mangler tror jeg, og det er at få selve html koden ind i editoren. Jeg har forsøgt her, men det giver fejl:

<?php

$db = mysql_query("SELECT * FROM sites WHERE site_id = '$do'") or die(mysql_error());
while ( $row = mysql_fetch_array($db)) {

?>

<script language="JavaScript" type="text/javascript">
<!--
//Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
writeRichText('rte1', '<?php echo $row[html_code]; ?>', 400, 200, true, false);
//-->
</script>
Avatar billede coderdk Praktikant
28. december 2004 - 18:46 #13
Hvilken fejl får du?
Avatar billede zetn Nybegynder
28. december 2004 - 18:47 #14
Parse error: parse error, unexpected $ in /usr/home/web/sth42038/admin/site_edit.php on line 87


linie 87: </html>
Avatar billede coderdk Praktikant
28. december 2004 - 18:49 #15
Erh, der er ikke en $ på den linje, det må være en anden ;)
Avatar billede zetn Nybegynder
28. december 2004 - 18:51 #16
Nej det er netop det... men tror det har noget med den her kode at gøre:

<?php

$db = mysql_query("SELECT * FROM sites WHERE site_id = '$do'") or die(mysql_error());
while ( $row = mysql_fetch_array($db)) {

?>

da fejlen forsvinder når jeg fjerne den..
Avatar billede coderdk Praktikant
28. december 2004 - 18:52 #17
Det ser nu rigtig nok ud... Husker du at afslutte med en } ?
Avatar billede zetn Nybegynder
28. december 2004 - 19:01 #18
hvor henne?
Avatar billede zetn Nybegynder
28. december 2004 - 19:03 #19
Har sat tegnet ind, og nu giver den ikke fejl. Men der kommer heller ikke noget udtræk.
Avatar billede zetn Nybegynder
28. december 2004 - 19:03 #20
bruger: <?php echo $row[html_code]; ?>
Avatar billede zetn Nybegynder
28. december 2004 - 19:07 #21
Hvis jeg sætter echo ind før ) tegnet, altså:

<?php

$db = mysql_query("SELECT * FROM sites WHERE site_id = '$do'") or die(mysql_error());
while ( $row = mysql_fetch_array($db)) {

print $row[name];
}
?>

Så gider den godt at udskrive Name, men ikke længere nede hvor den egentlig skal udskrives.

min kode nu:


<?php

$db = mysql_query("SELECT * FROM sites WHERE site_id = '$do'") or die(mysql_error());
while ( $row = mysql_fetch_array($db)) {

print $row[name];
}
?>


<script language="JavaScript" type="text/javascript">
<!--
//Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
writeRichText('rte1', '<?php echo $row[name]; ?>s', 400, 200, true, false);
//-->
</script>
<p><input type="submit" name="submit" value="Submit"></p>
</form>
Avatar billede coderdk Praktikant
28. december 2004 - 19:18 #22
Prøv med:

<?php

$db = mysql_query("SELECT * FROM sites WHERE site_id = '$do'") or die(mysql_error());
$row = mysql_fetch_array($db);

?>
<script language="JavaScript" type="text/javascript">
<!--
//Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
writeRichText('rte1', '<?php echo $row[name]; ?>s', 400, 200, true, false);
//-->
</script>
<p><input type="submit" name="submit" value="Submit"></p>
</form>
Avatar billede zetn Nybegynder
28. december 2004 - 19:36 #23
Det virker... Har 2 ting mere (skal nok lige oprette et spg så du kan få nogle flere point.)

1. siden den skal redirecte til skal indeholde det id som også er i URL'en, har forsøgt med denne:

<form name="site_edit" action="redirect.php?do=$do" method="post">

men så skriver den bare $do istedet for det som er i URL.


2. jeg skal have opdateret databasen, men får følgende fejl:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/home/web/sth42038/admin/redirect.php on line 7

har brugt følgende kode:

$query="update sites SET html_code='$_POST['rte1']' WHERE site_id='$do'";


/jacob
Avatar billede coderdk Praktikant
28. december 2004 - 19:39 #24
1. Prøv med:

<form name="site_edit" action="redirect.php" method="post">
<input type="hidden" name="din_id" value="<?= $do ?>">

Så får du den med $_POST['din_id']

2.

$query="update sites SET html_code='{$_POST['rte1']}' WHERE site_id='$do'";
Avatar billede zetn Nybegynder
28. december 2004 - 19:44 #25
2'eren har jeg så lavet til:

$query="update sites SET html_code='{$_POST['rte1']}' WHERE site_id='{$_POST['din_id']}'";

men den gider ikke rigtig opdatere noget..

du kan se den på

http://www.silo52.dk/admin/site_edit.php?do=1
Avatar billede coderdk Praktikant
28. december 2004 - 19:48 #26
Må jeg se koden der opdaterer på redirect.php?
Avatar billede zetn Nybegynder
28. december 2004 - 19:49 #27
$conn = mysql_connect("xxx", "xxx", "xxx");

mysql_select_db("sth42038");


$query="update sites SET html_code='{$_POST['rte1']}' WHERE site_id='{$_POST['din_id']}'";
Avatar billede coderdk Praktikant
28. december 2004 - 19:51 #28
hehe du skal nok også lave en:

  mysql_query( $query );

:)
Avatar billede zetn Nybegynder
28. december 2004 - 19:53 #29
:)

$query="update sites SET html_code='{$_POST['rte1']}' WHERE site_id='{$_POST['din_id']}'";
mysql_query($query);

Den gider dog stadig ikke at opdatere skidtet
Avatar billede zetn Nybegynder
28. december 2004 - 19:54 #30
eller jo, den gider godt at opdatere, men den får ikke rigtig den rigtige kode med...

prøv selv at ændre noget nu, har sat den til at udskrive $query
Avatar billede coderdk Praktikant
28. december 2004 - 19:57 #31
Ok, ændr:

<script language="JavaScript" type="text/javascript">
<!--
function submitForm() {
    //make sure hidden and iframe values are in sync before submitting form
    //to sync only 1 rte, use updateRTE(rte)
    //to sync all rtes, use updateRTEs
    updateRTE('rte1');
    //updateRTEs();
    alert("rte1 = " + document.RTEDemo.rte1.value);
   
    //change the following line to true to submit form
    return false;
}

//Usage: initRTE(imagesPath, includesPath, cssFile)
initRTE("images/", "", "");
//-->
</script>


til:


<script language="JavaScript" type="text/javascript">
<!--
function submitForm() {
    updateRTE('rte1');
    return true;
}

initRTE("images/", "", "");
//-->
</script>


og ændr:

<input type="submit" name="submit" value="Rediger side">

til:

<input type="submit" onclick="submitForm()" name="submit" value="Rediger side">

Hvis det ikke lige virker det sidste, så ændr type="submit" til type="button"
Avatar billede coderdk Praktikant
28. december 2004 - 19:58 #32
Alternativt til det sidste, ændr formen fra:

<form name="site_edit" action="redirect.php" method="post">

til:

<form name="site_edit" action="redirect.php" method="post" onsubmit="return submitForm()">
Avatar billede zetn Nybegynder
28. december 2004 - 20:02 #33
Nu opdaterer den, men prøv en gang at se denne side:

http://www.silo52.dk/admin/site_edit.php?do=4

den siger der er fejlt på siden, da jeg lavede nogle linieskift og opdaterede, da den godt gider og opdatere hvis det er i én linie.
Avatar billede coderdk Praktikant
28. december 2004 - 20:38 #34
Hmm, prøv at lave:

<script language="JavaScript" type="text/javascript">
<!--
//Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
writeRichText('rte1', '<?php echo $row[name]; ?>s', 400, 200, true, false);
//-->
</script>

om til:

<script language="JavaScript" type="text/javascript">
<!--
//Usage: writeRichText(fieldname, html, width, height, buttons, readOnly)
writeRichText('rte1', '<?php echo preg_replace( "/\n\r?/", "<br/>", $row['name'] ); ?>s', 400, 200, true, false);
//-->
</script>
Avatar billede zetn Nybegynder
28. december 2004 - 20:48 #35
Den bliver stadig ved med at gøre det, du kan selv lige prøve at redigere.
Avatar billede coderdk Praktikant
28. december 2004 - 21:00 #36
Download rte.zip på: http://www.kevinroth.com/RTE/demo.htm
Der er en demo.php - I den er der en funktion du skal bruge der hedder RTESafe...
Avatar billede zetn Nybegynder
28. december 2004 - 21:07 #37
Nice, så er det vist på tide og give dig nogle point :)

response.redirect("?") - hvad hedder det i php?

værsgo' - vil du ikke have nogle flere?
Avatar billede coderdk Praktikant
28. december 2004 - 21:09 #38
header( "location: side.php" );

Nej det er ok, skal ikke have flere :)
Avatar billede zetn Nybegynder
28. december 2004 - 21:09 #39
Nu er spørgsmålet ellers laver ;)

http://www.eksperten.dk/spm/575169
Avatar billede zetn Nybegynder
28. december 2004 - 21:10 #40
Forresten mange tak for hjælpen, det var kanon!
Avatar billede coderdk Praktikant
28. december 2004 - 21:10 #41
OBS: når du bruger header() må der IKKE skrives noget ud før eller efter - pga det sidste er det en god ide at smide en exit; lige efter en header/location :)
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