Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS] textarea contents vervangen met javascript

Pagina: 1
Acties:

  • JustMitchie
  • Registratie: Maart 2011
  • Laatst online: 27-04 19:28
Hallo allemaal,

Ik weet niet zo goed waar ik deze vraag neer kan zetten en googlen op het probleem heeft weer eens niets opgelost, waarschijnlijk door mijn vraagstelling aan google....

Ik ben bezig met een basic systeempje om content op een website aan te passen, daarvoor heb ik heel mooi een ckeditor instance gebruikt om een textarea vorm te geven.

Op de update pagina heb ik een select boxje, met daarin de namen van de pagina´s die aangepast kunnen/mogen worden, nu wil ik dat OnChange van dit selectboxje, dus als de inhoud van het selectboxje verandert dat de ckeditor.innerHTML de waarde krijgt van de pagina die bij de content hoort.

Op de manieren die ik geprobeert heb, krijg ik hooguit plain HTML op het scherm.... Nu dacht ik slim te zijn en heb ik een method gemaakt die alle pagina's in een array stopt, met als index de titel en wou ik deze meegeven met een javascript functie.. dit werkte echter niet :(

Dit is de javascript functie, die google zegt dat deze het doet. (hij doet het ook wel, maar dan moet je een predifined text meegeven...)

Dit is de ckeditor methode
JavaScript:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
private function show_ckeditor_updateform()
        {
            $i = "
            <textarea class='ckeditor' id='editor1' name='contents'>
            </textarea>
            <script type='text/javascript'>
                CKEDITOR.replace( 'editor1', 
                {
                    toolbar : 'Basic',
                    filebrowserBrowseUrl : './assets/ckfinder/ckfinder.html',
                    filebrowserImageBrowseUrl : './assets/ckfinder/ckfinder.html?Type=Images',
                    filebrowserFlashBrowseUrl : './assets/ckfinder/ckfinder.html?Type=Flash',
                    filebrowserUploadUrl : './assets/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
                    filebrowserImageUploadUrl : './assets/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
                    filebrowserFlashUploadUrl : './assets/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
                }
                );
                CKEDITOR.config.resize_minHeight = 450;
                CKEDITOR.config.height = 450;
                CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;
                CKEDITOR.config.resize_maxWidth = 640;
                CKEDITOR.config.autoGrow_maxWidth = 640;
                CKEDITOR.config.toolbarCanCollapse = false;
                CKEDITOR.config.autoGrow_onStartup = true;
                CKEDITOR.config.toolbar_Basic =
                [
                    { name: 'document',    items : [ 'Bold','Italic','Underline','Strike','Subscript','Superscript','-','RemoveFormat', '-', 'Link','Unlink' ] },
                    { name: 'styles',      items : [ 'Format','Font','FontSize' ] },
                    { name: 'colors',      items : [ 'TextColor','BGColor' ] },
                    { name: 'paragraph',   items : [ 'NumberedList','BulletedList','-','Outdent','Indent','-','Blockquote','-','JustifyLeft', 'JustifyCenter','JustifyRight','JustifyBlock','-','BidiLtr','BidiRtl' ] },    
                    { name: 'insert', items : [ 'Image','Table','HorizontalRule','Smiley','SpecialChar','PageBreak' ] }
                ];
            function changeText(newText) 
            {
                var oldValue = document.changepageform.editor1.innerHTML;
                var title = document.changepageform.name.value;
                document.changepageform.editor1.innerHTML = newText[title];
            }
            </script>";
            echo $i;
        }


en dit is de method die zorgt voor het form
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        public function show_changepageform()
        {
            $arr = $this->objQuery->show_all_pages_in_array();
            echo '<form method="POST" id="changepageform" action="">
            <input type="hidden" name="pagesubmit" value="changepagesubmit" />
            <h1>Pagina aanpassen</h1>
            <div style="margin-top: -65px; height: 80px; margin-left: 327px;">
                Pagina naam: <select onchange="changeText('.$arr.');" style="margin-top: 13px;" id="name" name="pagename">
            '.$this->objQuery->show_pages_in_select().'
                            </select>
                Opslaan: <input type="submit" style="margin-left: 28px; margin-top: -5px; width:219px;" class="btn btn-primary" name="changepagesubmit" value="Opslaan" />
            </div>
            ';
            $this->show_ckeditor_updateform();
            echo '</form>';


Mijn vraag aan jullie: 'Kunnen jullie mij hiermee helpen? Om text uit de database onclick in de ckeditor te laten komen?'

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21:50
Is het niet makkelijker om je pagina gewoon opnieuw te laden met het id van de tekst die je wil aanpassen? En dan met php de tekst in het vak laten zetten?

Wat gaat er nu fout? Krijg je errors in je console? Heb je de html in je array goed escaped? Heb je al ge-debugged?

  • JustMitchie
  • Registratie: Maart 2011
  • Laatst online: 27-04 19:28
Dat is inderdaat makkelijker, ik cind het alleen een smerige oplossing die mijn onkunde maskeert... De error is nu: Notice: Array to string conversion in C:\wamp\www\Schoonderbeek\cms\classes\ClsForms.php on line 183

De array word aangemaakt als:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
        public function show_all_pages_in_array()
        {
            $sql = "SELECT * FROM `pages` WHERE `visible` = 1";
            $result = mysql_query($sql);
            $items = array();
            $result = mysql_query($sql);
            while(($row = mysql_fetch_assoc($result))) 
            {
                $items[$row['name']] = $row['content'];
            }
            return $items;
        }

Als laatste hoop kan ik uiteraard terugvallen op de oplossing van jou...

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21:50
Dat is een php notice dat je een array probeert te laten zien als string. Waarschijnlijk krijg je ook errors in je javascript console..

Heb je in de bron gekeken? Staat daar de html van je pagina? Waarschijnlijk niet, en staat er alleen maar <select onchange="changeText(Array());" oid.
Je kan php arrays niet zomaar in javascript plaatsen, dan kan je bijvoorbeeld beter je array omzetten naar JSON. En ik zou niet je title als index gebruiken, maar gewoon het id van de pagina die je wil aanpassen.

[ Voor 6% gewijzigd door Barryvdh op 26-11-2012 11:05 ]


  • JustMitchie
  • Registratie: Maart 2011
  • Laatst online: 27-04 19:28
Hmm... dit word mij veel te complex voor een simpel scriptje...... ik ga voor optie 1... gewoon aanpassen via een id selectie page... Maar, thanks anyway

[ Voor 6% gewijzigd door JustMitchie op 26-11-2012 11:10 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1