PHP include binnen html form?
Ik ben momenteel bezig met het ontwerpen van een CMS. Dit voor mijn profielwerkstuk dat ik aankomend schooljaar ga maken over de ontwikkeling en bouw van een CMS. Ik heb pas een jaar lang PHP en html codering gehad tijdens informatica, en mijn codering is dus nog niet echt van hoog niveau. Momenteel werkt mijn CMS zoals hij zou moeten werken eigenlijk! Behalve één dingetje... De Admins kunnen artikelen plaatsen, en de gebruikers kunnen hierop reageren. Deze artikelen en reacties zijn ook editable door de admins en de 'eigenaar' van de reactie. Om het CMS wat meer dummie-geschikt te maken, heb ik een pagina gemaakt met bbCode:
Code (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
27
28
29
30
31
32
33
34
35
36
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
<?php
$bbreplace = array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[url=',']','[/url]');
$bbreplacements = array ('<b>','</b>','<i>','</i>','<u>','</u>','<a href="','">','</a>');
?>
<html>
<head>
</head>
<body>
<?php if ($bbform == answer){?>
<form>
<INPUT TYPE="button" STYLE="font-weight:bold" NAME="insertbold" VALUE="B" onClick="this.form.answer.value=this.form.answer.value.concat('[b][/b]');">
<INPUT TYPE="button" STYLE="font-style:italic" NAME="insertitalic" VALUE="I" onClick="this.form.answer.value=this.form.answer.value.concat('[i][/i]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertunderline" VALUE="U" onClick="this.form.answer.value=this.form.answer.value.concat('[u][/u]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertlink" VALUE="Url" onClick="this.form.answer.value=this.form.answer.value.concat('[url=uw link hier]uw tekst hier[/url]');">
</FORM>
<?php }
elseif ($bbform == thearticle){?>
<form>
<INPUT TYPE="button" STYLE="font-weight:bold" NAME="insertbold" VALUE="B" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[b][/b]');">
<INPUT TYPE="button" STYLE="font-style:italic" NAME="insertitalic" VALUE="I" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[i][/i]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertunderline" VALUE="U" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[u][/u]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertlink" VALUE="Url" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[url=uw link hier]uw tekst hier[/url]');">
</FORM>
<?php } ?>
<?php
elseif ($bbform == article){?>
<form>
<INPUT TYPE="button" STYLE="font-weight:bold" NAME="insertbold" VALUE="B" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[b][/b]');">
<INPUT TYPE="button" STYLE="font-style:italic" NAME="insertitalic" VALUE="I" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[i][/i]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertunderline" VALUE="U" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[u][/u]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertlink" VALUE="Url" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[url=uw link hier]uw tekst hier[/url]');">
</FORM>
<?php } ?>
</body>
</html>
$bbreplace = array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[url=',']','[/url]');
$bbreplacements = array ('<b>','</b>','<i>','</i>','<u>','</u>','<a href="','">','</a>');
?>
<html>
<head>
</head>
<body>
<?php if ($bbform == answer){?>
<form>
<INPUT TYPE="button" STYLE="font-weight:bold" NAME="insertbold" VALUE="B" onClick="this.form.answer.value=this.form.answer.value.concat('[b][/b]');">
<INPUT TYPE="button" STYLE="font-style:italic" NAME="insertitalic" VALUE="I" onClick="this.form.answer.value=this.form.answer.value.concat('[i][/i]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertunderline" VALUE="U" onClick="this.form.answer.value=this.form.answer.value.concat('[u][/u]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertlink" VALUE="Url" onClick="this.form.answer.value=this.form.answer.value.concat('[url=uw link hier]uw tekst hier[/url]');">
</FORM>
<?php }
elseif ($bbform == thearticle){?>
<form>
<INPUT TYPE="button" STYLE="font-weight:bold" NAME="insertbold" VALUE="B" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[b][/b]');">
<INPUT TYPE="button" STYLE="font-style:italic" NAME="insertitalic" VALUE="I" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[i][/i]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertunderline" VALUE="U" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[u][/u]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertlink" VALUE="Url" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[url=uw link hier]uw tekst hier[/url]');">
</FORM>
<?php } ?>
<?php
elseif ($bbform == article){?>
<form>
<INPUT TYPE="button" STYLE="font-weight:bold" NAME="insertbold" VALUE="B" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[b][/b]');">
<INPUT TYPE="button" STYLE="font-style:italic" NAME="insertitalic" VALUE="I" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[i][/i]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertunderline" VALUE="U" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[u][/u]');">
<INPUT TYPE="button" STYLE="text-decoration:underline" NAME="insertlink" VALUE="Url" onClick="this.form.thearticle.value=this.form.thearticle.value.concat('[url=uw link hier]uw tekst hier[/url]');">
</FORM>
<?php } ?>
</body>
</html>
Deze pagina staat dus op zich, en wordt geïnclude op de pagina's waar gebruikers reacties plaatsen. De volgende stap is dus om dit form te includen op de pagina waar de gebruiker zijn artikel/bericht kan editten. Echter, ik krijg het niet voor elkaar! Ik wil de balk met bbCode knopjes onder de titelbalk hebben, en dit wil niet.. Plaats ik hem achter het form werkt het goed en als ik hem verwijder ook, maar zodra de include () binnen de <form></form> tags komt lijkt de submit-button zijn functie te verliezen.
De code van updateReaction.php is:
Code (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
27
28
29
30
31
32
33
34
35
36
37
38
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
<?php
// Aangehaalde bestanden voor het maken van verbinding met de database.
require_once('../includes/DbConnector.php');
$bbform = answer;
// Nieuw object creeren van de connector en validator
$connector = new DbConnector();
// Vraagt uit de link het id op van het aan te passen artikel
$id = $HTTP_GET_VARS['id'];
// Importeer de gegevens uit de database
$result = $connector->query("SELECT ID,title,answer FROM cmsreactions WHERE ID='$id'");
// Creert een loop voor de items in de array !Onnodig?!
$row = $connector->fetchArray($result);
echo '<form action="updateReaction3.php" name="editreaction" method="post">';
// Verschillende tekstvakken met titel, tagline en het artikel zelf
echo '<br><textarea cols="75" rows="1" name="title" /> '.$row['title'].'</textarea>';
echo '<br><textarea cols="75" rows="3" name="answer" /> '.$row['answer'].'</textarea>';
include("../includes/bbCode.php");
// Verborgen velden die de actie (edit) en het artikelID meegeven aan updateArticle3.php
echo '<input type="hidden" name="action" value="edit" />';
echo '<input type="hidden" name="id" value="'.$row['ID'].'" />';
echo '<br>';
echo '<input type="submit" name="submit" value="Pas aan!" /></form>';
?>
<html>
<head>
<title> update Article</title>
<LINK href="../templates/Alex CMS/style.css" rel="stylesheet" type="text/css">
</head>
<body class="content">
</body>
</html>
// Aangehaalde bestanden voor het maken van verbinding met de database.
require_once('../includes/DbConnector.php');
$bbform = answer;
// Nieuw object creeren van de connector en validator
$connector = new DbConnector();
// Vraagt uit de link het id op van het aan te passen artikel
$id = $HTTP_GET_VARS['id'];
// Importeer de gegevens uit de database
$result = $connector->query("SELECT ID,title,answer FROM cmsreactions WHERE ID='$id'");
// Creert een loop voor de items in de array !Onnodig?!
$row = $connector->fetchArray($result);
echo '<form action="updateReaction3.php" name="editreaction" method="post">';
// Verschillende tekstvakken met titel, tagline en het artikel zelf
echo '<br><textarea cols="75" rows="1" name="title" /> '.$row['title'].'</textarea>';
echo '<br><textarea cols="75" rows="3" name="answer" /> '.$row['answer'].'</textarea>';
include("../includes/bbCode.php");
// Verborgen velden die de actie (edit) en het artikelID meegeven aan updateArticle3.php
echo '<input type="hidden" name="action" value="edit" />';
echo '<input type="hidden" name="id" value="'.$row['ID'].'" />';
echo '<br>';
echo '<input type="submit" name="submit" value="Pas aan!" /></form>';
?>
<html>
<head>
<title> update Article</title>
<LINK href="../templates/Alex CMS/style.css" rel="stylesheet" type="text/css">
</head>
<body class="content">
</body>
</html>
En de code van updateReaction3.php is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// Require the classes
require_once('../includes/DbConnector.php');
// Create an object (instance) of the DbConnector and Validator
$connector = new DbConnector();
// LIST SECTIONS /////////////////////////////////////////////////////////////////////
$result = $connector->query('SELECT ID,title,answer FROM cmsreactions');
if ($_POST['action'] == 'edit'){
// Store the section ID to be deleted in a variable
$reactionID = $_POST['id'];
$title = $_POST['title'];
$answer = $_POST['answer'];
mysql_query("UPDATE cmsreactions SET title='$title', answer='$answer' WHERE ID='$reactionID'") or die (mysql_error());
echo 'Je gegevens zijn succesvol ge-update<br>';
}
?>
// Require the classes
require_once('../includes/DbConnector.php');
// Create an object (instance) of the DbConnector and Validator
$connector = new DbConnector();
// LIST SECTIONS /////////////////////////////////////////////////////////////////////
$result = $connector->query('SELECT ID,title,answer FROM cmsreactions');
if ($_POST['action'] == 'edit'){
// Store the section ID to be deleted in a variable
$reactionID = $_POST['id'];
$title = $_POST['title'];
$answer = $_POST['answer'];
mysql_query("UPDATE cmsreactions SET title='$title', answer='$answer' WHERE ID='$reactionID'") or die (mysql_error());
echo 'Je gegevens zijn succesvol ge-update<br>';
}
?>
Zou iemand mij kunnen helpen met dit probleem? Ik heb Google en de zoekfunctie van deze site al geraadpleegd, maar kan eigenlijk nergens een oplossing vinden die mijn probleem omschrijft. Het gaat er dus om dat ik de bbCode.php file wil includen binnenin het HTML form waarin de gebruiker zijn bestaande post kan aanpassen.
Alvast Bedankt!
Alex :)
De makkelijkste oplossing is waarschijnlijk de <form> tags uit het bestand dat je include verwijderen. Uiteindelijk zijn dat immers geen echte formuliertjes, en gebruik je alleen de <input> elementen met een stukje javascript...
Geweldig, bedankt! Nu ik je antwoord lees schaam ik me eigenlijk wel een beetje, want het is wel een hele slechte fout.. Laten we het er maar op wijten dat ik nog vakantie heb! Dankjewel! :)
Let er overigens op dat je HTML niet meer valid is zodra je het bestand include. Midden in een HTML structuur komt dan namelijk ineens weer de <html> openingstag te staan. Dat kan natuurlijk niet...
Dus ik kan gewoon de <html><head> & <body> tag weghalen uit het bbCode.php document?
Ja, dat is geen op zichzelf staande pagina. De benodigde HTML structuur is al aanwezig in het bestand waarin bbCode.php geinclude wordt...
Is goed, bedankt! :) Ik denk dat ik nu ook op een punt ben aanbeland dat het verstandig is om even alle code na te lopen, voordat ik door de bomen het bos niet meer zie!