PHP include binnen html form?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Alex Zijlstra

Alex Zijlstra

15/08/2010 14:41:27
Quote Anchor link
Goedemiddag!

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)
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
<?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>


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)
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
<?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>


En de code van updateReaction3.php is:

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
<?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>';
}


?>


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 :)
 
PHP hulp

PHP hulp

28/11/2024 11:11:48
 
Joren de Wit

Joren de Wit

15/08/2010 14:58:26
Quote Anchor link
Dat komt omdat in het bestand dat je include 3 verschillende forms geopend en afgesloten worden. Als je dit dus binnen een bestaande <form></form> construct include wordt die betreffende constructie afgesloten waardoor de submit button er geen onderdeel meer van is.

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...
 
Alex Zijlstra

Alex Zijlstra

15/08/2010 15:21:29
Quote Anchor link
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! :)
 
Joren de Wit

Joren de Wit

15/08/2010 15:23:50
Quote Anchor link
Van fouten kun/moet je leren :-)

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...
 
Alex Zijlstra

Alex Zijlstra

15/08/2010 15:28:05
Quote Anchor link
Dus ik kan gewoon de <html><head> & <body> tag weghalen uit het bbCode.php document?
 
Joren de Wit

Joren de Wit

15/08/2010 15:33:20
Quote Anchor link
Ja, dat is geen op zichzelf staande pagina. De benodigde HTML structuur is al aanwezig in het bestand waarin bbCode.php geinclude wordt...
 
Alex Zijlstra

Alex Zijlstra

15/08/2010 15:35:22
Quote Anchor link
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!
 



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.