Tekst van Ckeditor opslaan in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Bert Van den Brande

Bert Van den Brande

19/05/2013 17:51:58
Quote Anchor link
Voor een toepassing die ik probeer te maken gebruik in CKeditor om zo, indien nodig, pagina's aan te passen en op te slaan

Ik heb dit in m'n template staan

<textarea id="inhoud" name="inhoud">

</textarea>
<script type="text/javascript">
CKEDITOR.replace( 'inhoud' );
</script>

Hierdoor verschijnt wel het formulier maar hoe kan ik dit laten opslaan in een tabel in een mysql database.
Het zou ik de kolom t_pagina moeten komen
Deze kolom bestaat uit d_id, d_paginaaam en d_inhoud (waar dus de tekst moet komen)

Kan iemand me helpen?
 
PHP hulp

PHP hulp

03/05/2024 15:35:42
 
- Ariën  -
Beheerder

- Ariën -

19/05/2013 18:10:45
Quote Anchor link
$_POST['inhoud'] bevat als het goed is de inhoud van je textarea. Vervolgens kan je deze (voorzien van mysql_real_escape_string ter beveiliging) in de database plaatsen met een INSERT-query.
Gewijzigd op 19/05/2013 18:11:44 door - Ariën -
 
Bert Van den Brande

Bert Van den Brande

19/05/2013 20:18:42
Quote Anchor link
Mijne site bestaat uit templates
In home.tpl die bestaat uit volgende code
{include file="header.tpl"}

<sectionhome>
<script type="text/javascript">
CKEDITOR.replace( 'inhoud' );
</script>
<form action="../result.php" method="post">
<textarea class="editor" id="editor" name="editor"></textarea>
<div id="messages"></div>
</form>
{$inhoud}
</sectionhome>

{include file="footer.tpl"}

is het de bedoeling dat ik volgende code integreer
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
$_srv
= $_SERVER['PHP_SELF'];

include("./connections/pdo.inc.php");

if (! isset($_POST['submit'])){
$_output = "
<script    type='text/javascript' src='../ckeditor/ckeditor.js'></script>    
<form  method='post' action='$_srv'>
<table>
    <tr>
        <td>
            <label>Titel nieuwsbrief:</label>
            <input type='text' name='titel'>
        </td>
    </tr>
    <tr>
        <td>
            <textarea id='inhoud' name='inhoud'>    
            </textarea>
        </td>
    </tr>
    <tr>
        <td>
            <input type='submit' value='Verzend' name='submit'>
        </td>
    </tr>    
</table>
</form>    

<script    type='text/javascript'>    
    CKEDITOR.replace('inhoud');        
</script>"
;
}

else
{
$_inhoud = $_POST['inhoud'];
$_titel = $_POST['titel'];
$_datum = date("jdY");
$_time = date("His");

$_result2 = $_PDO -> query("INSERT INTO t_nb_nieuwsbrief(d_naam, d_datum,d_verstuurd) VALUES ('$_titel','$_datum','$_time');");

ini_set('SMTP','mail.sna-webo.be');

$_result = $_PDO -> query("select * from t_nb_abonnees;");

        if ($_result -> rowCount() > 0)
        {

            while ($_row = $_result -> fetch(PDO::        FETCH_ASSOC))
            {

            $_to = $_row['d_email'];
            $_onderwerp = $_titel;
            $_bericht= $_inhoud . "<br><a href='http://fauve.sna-webo.be/fauve/NB_uitschrijven.php?AB_token=" . $_row['d_token']. "'>Uitschrijven</a>";
            $_headers = "From:[email protected]\n".
            "Content-type: text/html";
    
            mail($_to, $_onderwerp, $_bericht, $_headers);
            }
        }

$_output = "Mail verzonden!";

}

echo $_output;
?>


Hoe doe ik dit?
 
- Ariën  -
Beheerder

- Ariën -

19/05/2013 20:33:52
Quote Anchor link
Ik zie dat je Smarty gebruikt als templateparser.
Je weet wel hoe je een formulier op correcte wijze kan afhandelen?
Gewijzigd op 19/05/2013 20:45:43 door - Ariën -
 
Bert Van den Brande

Bert Van den Brande

19/05/2013 20:47:02
Quote Anchor link
Ik heb geen idee hoe ik het formulier in m'n template moet krijgen.
 
- Ariën  -
Beheerder

- Ariën -

19/05/2013 21:17:17
Quote Anchor link
Dat heb je toch al?
Je moet alleen lijn 7 t/m 33 vervangen door $smarty->display("home.tpl");
Om ervoor te zorgen dat het formulier wordt getoond.

Persoonlijk zou ik eerder ipv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if (! isset($_POST['submit'])){


dit gebruiken (lees gele comments):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
  // hier je afhandeling
} else {
  // hier je formulier outputten met: $smarty->display("home.tpl");
}
?>
Gewijzigd op 19/05/2013 21:17:37 door - Ariën -
 
Bert Van den Brande

Bert Van den Brande

19/05/2013 21:25:44
Quote Anchor link
ik heb wel de code van m'n formulier maar hoe zet ik dit in home.tpl
code van home.tpl is
{include file="header.tpl"}

<sectionhome>
<script type="text/javascript">
CKEDITOR.replace( 'inhoud' );
</script>
<form action="../result.php" method="post">
<textarea class="editor" id="editor" name="editor"></textarea>
<div id="messages"></div>
</form>
{$inhoud}
</sectionhome>

{include file="footer.tpl"}

Dus mijn vraag is waar moet ik de code van het formulier zetten?
De pagina waar m'n templates samengevoegd worden is bo_index.php en die code ziet er zo uit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
42
<?php

/******************
*Initialisatie
*******************/

 $_srv = $_SERVER['PHP_SELF'];
 
/******************
*        autoload
******************/

function __autoload($className) {
    require_once "../klassen/$className.class.php";
}


 include("../connections/pdo.inc.php");
 include("../php_lib/inlezen.inc.php");
 include("../php_lib/menu.inc.php");
try
{

    $_inhoud = inlezen('../content/welkom.txt');


// Object instantieren
    $_smarty = new My_smarty();

// We kennen de variabelen toe

    $_smarty->assign('menuh',menu('H'));
    $_smarty->assign('inhoud', $_inhoud);
// display it
    $_smarty->display('home.tpl');

}

 
 catch (myException $e)
{

    log("../log/logfile.csv");
    errorMessage();
}
  

?>


Alvast bedankt.
 
- Ariën  -
Beheerder

- Ariën -

19/05/2013 21:29:31
Quote Anchor link
Je code van het formulier staat toch al in de template?
 
Bert Van den Brande

Bert Van den Brande

19/05/2013 21:30:28
Quote Anchor link
Hmm nee dat is net het probleem die staat nog niet in het template en ik weet niet hoe ik zonder foutmeldingen (in dreamweaver) die code netjes in m'n template krijg.
 
- Ariën  -
Beheerder

- Ariën -

19/05/2013 21:34:27
Quote Anchor link
ik zeg: copy en paste, opslaan als home.tpl, uploaden en gaan met die banaan ;-)

maar ik dit lees:
Quote:
In home.tpl die bestaat uit volgende code.... [knip]

Dan heb je die code toch al?
Gewijzigd op 19/05/2013 21:35:39 door - Ariën -
 
Bert Van den Brande

Bert Van den Brande

19/05/2013 21:38:22
Quote Anchor link
Ik krijg een leeg gedeelte
home.tpl ziet er nu zo uit
{include file="header.tpl"}

<sectionhome>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
       $_srv
= $_SERVER['PHP_SELF'];

include("../connections/pdo.inc.php");

if (! isset($_POST['submit'])){
$_output = "
<script    type='text/javascript' src='../ckeditor/ckeditor.js'></script>    
<form  method='post' action='$_srv'>
<table>
    <tr>
        <td>
            <label>Titel nieuwsbrief:</label>
            <input type='text' name='titel'>
        </td>
    </tr>
    <tr>
        <td>
            <textarea id='inhoud' name='inhoud'>    
            </textarea>
        </td>
    </tr>
    <tr>
        <td>
            <input type='submit' value='Verzend' name='submit'>
        </td>
    </tr>    
</table>
</form>    

<script    type='text/javascript'>    
    CKEDITOR.replace('inhoud');        
</script>"
;
}

else
{
$_inhoud = $_POST['inhoud'];
$_titel = $_POST['titel'];
$_datum = date("jdY");
$_time = date("His");

$_result2 = $_PDO -> query("INSERT INTO t_nb_nieuwsbrief(d_naam, d_datum,d_verstuurd) VALUES ('$_titel','$_datum','$_time');");

ini_set('SMTP','mail.sna-webo.be');

$_result = $_PDO -> query("select * from t_nb_abonnees;");

        if ($_result -> rowCount() > 0)
        {

            while ($_row = $_result -> fetch(PDO::        FETCH_ASSOC))
            {

            $_to = $_row['d_email'];
            $_onderwerp = $_titel;
            $_bericht= $_inhoud . "<br><a href='http://bert.sna-webo.be/nieuwsbrief/NB_uitschrijven.php?AB_token=" . $_row['d_token']. "'>Uitschrijven</a>";
            $_headers = "From:[email protected]\n".
            "Content-type: text/html";
    
            mail($_to, $_onderwerp, $_bericht, $_headers);
            }
        }

$_output = "Mail verzonden!";

}

echo $_output;

            ?>

</sectionhome>

{include file="footer.tpl"}
 
- Ariën  -
Beheerder

- Ariën -

19/05/2013 21:39:41
Quote Anchor link
PHP hoort niet in een template-file. Alleen de HTML moet erin.
Dus wat je in deze post meldde, aan inhoud van home.tpl, is correct.

Het gaat puur om de afhandeling, en dat gebeurt in PHP.
Lees ook eens dit, interessante uitleg over de algemene werking van een Templateparser.
Gewijzigd op 19/05/2013 21:43:38 door - Ariën -
 
Bert Van den Brande

Bert Van den Brande

19/05/2013 21:43:54
Quote Anchor link
ok da heb ik gedaan en de ckeditor komt nu tevoorschijn maar waar moet ik nu m'n php code gaan zetten zodat de tekst die ik invul in de editor ook bewaard wordt?
 
- Ariën  -
Beheerder

- Ariën -

19/05/2013 21:49:01
Quote Anchor link
Binnen je try-blok van je code kan je mijn structuur dan plaatsen.
Als je logisch kijkt naar de commentaarregels die erin staan weet je wat waar moet komen.

De vraag is alleen of het wel netjes zal zijn, gezien je hele script gebruik maakt van classes. Maar voor een beginner is het handig om classes maar te vermijden ;-)
Gewijzigd op 19/05/2013 21:49:41 door - Ariën -
 
Bert Van den Brande

Bert Van den Brande

19/05/2013 21:57:14
Quote Anchor link
Sorry ik snap het echt ni :-(
 
- Ariën  -
Beheerder

- Ariën -

19/05/2013 21:59:23
Quote Anchor link
Wat heb je al geprobeerd, wat wat lukt er niet, en waar loop je op vast?
Gewijzigd op 19/05/2013 21:59:57 door - Ariën -
 
Bert Van den Brande

Bert Van den Brande

19/05/2013 22:00:40
Quote Anchor link
Ik weet niet wat ik waar moet zetten in
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
42
<?php

/******************
*Initialisatie
*******************/

 $_srv = $_SERVER['PHP_SELF'];
 
/******************
*        autoload
******************/

function __autoload($className) {
    require_once "../klassen/$className.class.php";
}


 include("../connections/pdo.inc.php");
 include("../php_lib/inlezen.inc.php");
 include("../php_lib/menu.inc.php");
try
{

    $_inhoud = inlezen('../content/auto.txt');


// Object instantieren
    $_smarty = new My_smarty();

// We kennen de variabelen toe

    $_smarty->assign('menuh',menu('H'));
    $_smarty->assign('inhoud', $_inhoud);
// display it
    $_smarty->display('home.tpl');

}

 
 catch (myException $e)
{

    log("../log/logfile.csv");
    errorMessage();
}
  

?>
 
- Ariën  -
Beheerder

- Ariën -

19/05/2013 22:05:37
Quote Anchor link
je ziet het try-gedeelte? Daar moet je mijn code-voorbeeld plaatsen, en even de commentaarregels goed lezen.
 
Bert Van den Brande

Bert Van den Brande

20/05/2013 09:24:08
Quote Anchor link
Dus als ik het goed voorheb zet ik in mijn home.tpl enkel HTML code?
En in bo_index.php zet ik achter den try de php code?
 
- Ariën  -
Beheerder

- Ariën -

20/05/2013 10:54:40
Quote Anchor link
Klopt, helemaal.
In dit topic heb ik nog een link gegeven verwijzend naar uitleg over de werking van een templateparser.
 
Bert Van den Brande

Bert Van den Brande

20/05/2013 11:49:03
Quote Anchor link
In mijn bo_index.php heb ik nu dit staan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php

/******************
*Initialisatie
*******************/

 $_srv = $_SERVER['PHP_SELF'];
 
/******************
*        autoload
******************/

function __autoload($className) {
    require_once "../klassen/$className.class.php";
}


 include("../connections/pdo.inc.php");
 include("../php_lib/inlezen.inc.php");
 include("../php_lib/menu.inc.php");
try
{
if($_SERVER['REQUEST_METHOD']=="POST") {
 {

$_inhoud = $_POST['inhoud'];

$_result = $_PDO -> query("INSERT INTO t_pagina(d_inhoud) VALUES ('$_inhoud');");

$_output = $_inhoud;

}

echo $_output;
}
else {
  // hier je formulier outputten met: $smarty->display("home.tpl");
}
    $_inhoud = inlezen('../content/auto.txt');


// Object instantieren
    $_smarty = new My_smarty();

// We kennen de variabelen toe

    $_smarty->assign('menuh',menu('H'));
    $_smarty->assign('inhoud', $_inhoud);
// display it
    $_smarty->display('home.tpl');

}

 
 catch (myException $e)
{

    log("../log/logfile.csv");
    errorMessage();
}
  

?>

en in mijn home.tpl dit
{include file="header.tpl"}

<sectionhome>
<script type='text/javascript' src='../ckeditor/ckeditor.js'></script>
<form method='post' action='$_srv'>
<table>
<tr>
<td>
<label>Titel nieuwsbrief:</label>
<input type='text' name='titel'>
</td>
</tr>
<tr>
<td>
<textarea id='inhoud' name='inhoud'>
</textarea>
</td>
</tr>
<tr>
<td>
<input type='submit' value='Verzend' name='submit'>
</td>
</tr>
</table>
</form>

<script type='text/javascript'>
CKEDITOR.replace('inhoud');
</script>
</sectionhome>

{include file="footer.tpl"}

Wat moet ik nu doen om de inhoud op te slaan in mijn tabel?
Ik doe volgens mij iets verkeerd in home.tpl bij de action van m'n form.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.