Hoe kan ik berichten bewerken?
Ik heb een form. gemaakt die (nieuws) berichten naar de database stuurt.
Nu is mijn vraag hoe kan ik een nieuwsbericht bewerken met behulp van het bericht ID? Ik heb op verschillende forums gelezen dat ik dan moet werken met "get id" nog wat...
Wie kan mij helpen? Of een start maken?
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
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
$pagetitle = "Maak nieuw artikel";
include ("../config.php");
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
{
$aFouten = array();
if($_POST['title'] == '')
{
$aFouten[] = 'Je hebt geen titel ingevuld!';
}
if($_POST['category'] == '')
{
$aFouten[] = 'Je hebt geen categorie gekozen!';
}
if($_POST['story'] == '')
{
$aFouten[] = 'Je hebt geen bericht ingevuld';
}
if(count($aFouten) != 0)
{
echo 'De volgende fouten zijn opgetreden: <br /><br />';
for($Fi = 0; $Fi < count($aFouten); $Fi++)
{
echo $aFouten[$Fi].'<br />';
}
echo '<br />Klik <a href="javascript:history.go(-1);">hier</a> om terug te keren';
}
else
{
mysql_query("INSERT INTO cms_news (title,category,topstory,short_story,story,author,date) VALUES ('".addslashes($_POST['title'])."','".addslashes($_POST['category'])."','".addslashes($_POST['story'])."','".addslashes($_POST['author'])."','".$_POST['date']."')") or die (mysql_error());
echo '<h2 class="title">Jou bericht is gepubliceerd!</h2>';
}
}
else
{
?>
<h2 class="title">Schrijf een e-mail bericht</h2>
<form method="post" action="index.php?page=add-nieuws">
<p><label for="titel">Titel:</label><br>
<input type="text" name="title" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Jou naam':this.value;" value="titel" /></p>
<p><label for="author">Categorie:</label><br>
<label>
<input type="checkbox" name="category" value="Onderwijs" id="category_1">
Onderwijs</label>
<br>
<label>
<input type="checkbox" name="category" value="Nieuws" id="category_2">
Nieuws</label>
<br>
</p>
<p><label for="bericht">Bericht:</label><br>
<textarea name="story" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Typ hier jou bericht....':this.value;" class="your-message">Typ hier jou bericht...</textarea></p>
<p><label for="author">Schrijver:</label><br>
<input type="text" name="author" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Onderwerp':this.value;" value="author" /></p>
<p><label for="date">Date:</label><br>
<input type="date" name="date" value="
" id="date"></p>
<input type="submit" value="Verstuur e-mail" class="send-message">
</form>
<?
}
?>
</div>
$pagetitle = "Maak nieuw artikel";
include ("../config.php");
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
{
$aFouten = array();
if($_POST['title'] == '')
{
$aFouten[] = 'Je hebt geen titel ingevuld!';
}
if($_POST['category'] == '')
{
$aFouten[] = 'Je hebt geen categorie gekozen!';
}
if($_POST['story'] == '')
{
$aFouten[] = 'Je hebt geen bericht ingevuld';
}
if(count($aFouten) != 0)
{
echo 'De volgende fouten zijn opgetreden: <br /><br />';
for($Fi = 0; $Fi < count($aFouten); $Fi++)
{
echo $aFouten[$Fi].'<br />';
}
echo '<br />Klik <a href="javascript:history.go(-1);">hier</a> om terug te keren';
}
else
{
mysql_query("INSERT INTO cms_news (title,category,topstory,short_story,story,author,date) VALUES ('".addslashes($_POST['title'])."','".addslashes($_POST['category'])."','".addslashes($_POST['story'])."','".addslashes($_POST['author'])."','".$_POST['date']."')") or die (mysql_error());
echo '<h2 class="title">Jou bericht is gepubliceerd!</h2>';
}
}
else
{
?>
<h2 class="title">Schrijf een e-mail bericht</h2>
<form method="post" action="index.php?page=add-nieuws">
<p><label for="titel">Titel:</label><br>
<input type="text" name="title" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Jou naam':this.value;" value="titel" /></p>
<p><label for="author">Categorie:</label><br>
<label>
<input type="checkbox" name="category" value="Onderwijs" id="category_1">
Onderwijs</label>
<br>
<label>
<input type="checkbox" name="category" value="Nieuws" id="category_2">
Nieuws</label>
<br>
</p>
<p><label for="bericht">Bericht:</label><br>
<textarea name="story" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Typ hier jou bericht....':this.value;" class="your-message">Typ hier jou bericht...</textarea></p>
<p><label for="author">Schrijver:</label><br>
<input type="text" name="author" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Onderwerp':this.value;" value="author" /></p>
<p><label for="date">Date:</label><br>
<input type="date" name="date" value="
" id="date"></p>
<input type="submit" value="Verstuur e-mail" class="send-message">
</form>
<?
}
?>
</div>
Gewijzigd op 03/02/2015 15:37:34 door Cas wolters
Gebruik mysql_real_escape_string($_POST['....']).
Alle mysql_* functions zijn verouderd.
Stap over op mysqli_* of pdo().
Dan krijg je iets als dit in edit.php:
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
// checken of er een GET[id] variabele bestaat
if(!isset($_GET['id'])) {
echo 'geen id opgegeven.';
exit;
}
// checken of GET[id] een positief getal is groter dan nul
if(intval($_GET['id']) <= 0) {
echo 'Ongeldig id.';
exit;
}
// maak connectie met de database
// maak query
$query = "SELECT * FROM tablename WHERE id=" . intval($_GET['id']);
//query uitvoeren en inhoud op scherm tonen
?>
// checken of er een GET[id] variabele bestaat
if(!isset($_GET['id'])) {
echo 'geen id opgegeven.';
exit;
}
// checken of GET[id] een positief getal is groter dan nul
if(intval($_GET['id']) <= 0) {
echo 'Ongeldig id.';
exit;
}
// maak connectie met de database
// maak query
$query = "SELECT * FROM tablename WHERE id=" . intval($_GET['id']);
//query uitvoeren en inhoud op scherm tonen
?>
intval() beveiligt hier je query tegen sql injectie
Gewijzigd op 03/02/2015 16:02:17 door Frank Nietbelangrijk
Ik zou beginnen met het structureren van je PHP-code. Je hebt in principe de volgende acties:
- bericht(en) weergeven *
- nieuw bericht invoeren *
- nieuw bericht wegschrijven
- bestaand bericht wijzigen *
- wijzigingen bestaand bericht wegschrijven
- bericht verwijderen
De acties met een * betreffen acties waarbij je het e.e.a. weergeeft op je scherm. Hierbij is het zaak dat je output zet in een volledig (en kloppend) HTML document.
Als je in eerste instantie een simpel standalone script wilt maken (nog even zonder authenticatie van gebruikers), dan kun je overwegen om hiervoor de object georienteerde aanpak te kiezen en een class opstellen, waarbij je van de acties methoden maakt met het vaste voorvoegsel "action":
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
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
<?php
class MyNews
{
public function __construct() {
}
// voor het weergeven van een of meer berichten
protected function actionDefault() {
}
// voor het weergeven van een formulier voor het toevoegen van een nieuwsbericht
protected function actionAddNews() {
}
// voor het verwerken van het toevoegen van een nieuwsbericht
protected function actionAddNewsProcess() {
}
// voor het wijzigen van een bestaand nieuwsbericht
protected function actionEditNews() {
}
// voor het verwerken van het wijzigen van een nieuwsbericht
protected function actionEditNewsProcess() {
}
// voor het verwijderen van een nieuwsbericht
protected function actionDeleteNews() {
}
} // class
?>
class MyNews
{
public function __construct() {
}
// voor het weergeven van een of meer berichten
protected function actionDefault() {
}
// voor het weergeven van een formulier voor het toevoegen van een nieuwsbericht
protected function actionAddNews() {
}
// voor het verwerken van het toevoegen van een nieuwsbericht
protected function actionAddNewsProcess() {
}
// voor het wijzigen van een bestaand nieuwsbericht
protected function actionEditNews() {
}
// voor het verwerken van het wijzigen van een nieuwsbericht
protected function actionEditNewsProcess() {
}
// voor het verwijderen van een nieuwsbericht
protected function actionDeleteNews() {
}
} // class
?>
Deze code doet nog niets. Ook zijn de acties niet rechtstreeks benaderbaar omdat deze protected zijn - ze zijn enkel aanroepbaar binnen de klasse zelf. Vervolgens gaan we de volgende zaken regelen:
- het aanmaken van een object van deze klasse
- het bepalen van de uit te voeren actie
- het uitvoeren van deze actie
Het eerste punt kunnen we na afloop van de class rechtstreeks doen, of we zouden ervoor kunnen kiezen de class in een apart bestand te zetten en deze te includen / te autoloaden op de plek waar we deze gaan gebruiken. De tweede methode zou netter zijn, maar om het voorbeeld simpel te houden doen we dit voor nu in hetzelfde bestand als de class.
Het tweede punt regelen we in de __construct methode, we slaan hier op welke (geldige) actie we uit willen gaan voeren. Dit bepalen we aan de hand van de GET variabele "action". Hierbij controleren we op de methode bestaat.
Het derde punt regelen we in de (enige andere publieke) methode execute().
We drukken in de methodes ook meteen wat output af om te kijken of het aanroepen van een action slaagt.
De code wordt aldus:
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
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
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
<?php
class MyNews
{
protected $action;
// creeer object en bepaal uit te voeren actie
public function __construct() {
$this->action = 'default'; // default action
if (isset($_GET['action']) ) {
$method = 'action'.ucfirst($_GET['action']);
if (method_exists($this, $method)) {
$this->action = $_GET['action'];
}
}
}
// voer de actie uit
public function execute() {
$action = 'action'.ucfirst($this->action);
$this->$action();
}
// voor het weergeven van een of meer berichten
protected function actionDefault() {
// debugging
echo 'actionDefault called';
}
// voor het weergeven van een formulier voor het toevoegen van een nieuwsbericht
protected function actionAddNews() {
// debugging
echo 'actionAddNews called';
}
// voor het verwerken van het toevoegen van een nieuwsbericht
protected function actionAddNewsProcess() {
// debugging
echo 'actionAddNewsProcess called';
}
// voor het wijzigen van een bestaand nieuwsbericht
protected function actionEditNews() {
// debugging
echo 'actionEditNews called';
}
// voor het verwerken van het wijzigen van een nieuwsbericht
protected function actionEditNewsProcess() {
// debugging
echo 'actionEditNewsProcess called';
}
// voor het verwijderen van een nieuwsbericht
protected function actionDeleteNews() {
// debugging
echo 'actionDeleteNews called';
}
} // class
// maak object aan
$myNews = new MyNews();
// voer actie uit
$myNews->execute();
?>
class MyNews
{
protected $action;
// creeer object en bepaal uit te voeren actie
public function __construct() {
$this->action = 'default'; // default action
if (isset($_GET['action']) ) {
$method = 'action'.ucfirst($_GET['action']);
if (method_exists($this, $method)) {
$this->action = $_GET['action'];
}
}
}
// voer de actie uit
public function execute() {
$action = 'action'.ucfirst($this->action);
$this->$action();
}
// voor het weergeven van een of meer berichten
protected function actionDefault() {
// debugging
echo 'actionDefault called';
}
// voor het weergeven van een formulier voor het toevoegen van een nieuwsbericht
protected function actionAddNews() {
// debugging
echo 'actionAddNews called';
}
// voor het verwerken van het toevoegen van een nieuwsbericht
protected function actionAddNewsProcess() {
// debugging
echo 'actionAddNewsProcess called';
}
// voor het wijzigen van een bestaand nieuwsbericht
protected function actionEditNews() {
// debugging
echo 'actionEditNews called';
}
// voor het verwerken van het wijzigen van een nieuwsbericht
protected function actionEditNewsProcess() {
// debugging
echo 'actionEditNewsProcess called';
}
// voor het verwijderen van een nieuwsbericht
protected function actionDeleteNews() {
// debugging
echo 'actionDeleteNews called';
}
} // class
// maak object aan
$myNews = new MyNews();
// voer actie uit
$myNews->execute();
?>
Dan waren er enkele acties die output hadden in de vorm van een HTML-document. Hiervoor introduceren we twee hulpmethoden: __header() en __footer().
Nu moeten er een aantal beslissingen worden genomen waarvan de belangrijkste is: welke character encoding gebruik ik. Ik ga er even vanuit dat je UTF-8 gebruikt.
De header en footer methoden worden aldus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
protected function __header($title='') {
header('Content-Type: text/html; charset=UTF-8');
?><!DOCTYPE html>
<html>
<head>
<title><?php echo $title ?></title>
<!-- en wat je hier nog wilt includen: JavaScript, CSS et cetera -->
</head>
<body><?php
}
protected function __footer() {
?></body>
</html><?php
}
?>
protected function __header($title='') {
header('Content-Type: text/html; charset=UTF-8');
?><!DOCTYPE html>
<html>
<head>
<title><?php echo $title ?></title>
<!-- en wat je hier nog wilt includen: JavaScript, CSS et cetera -->
</head>
<body><?php
}
protected function __footer() {
?></body>
</html><?php
}
?>
Vervolgens zou je je default action kunnen aanpassen naar het volgende:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
protected function actionDefault() {
$this->__header('Hello World');
?><p>actionDefault called</p><?php
$this->__footer();
}
?>
protected function actionDefault() {
$this->__header('Hello World');
?><p>actionDefault called</p><?php
$this->__footer();
}
?>
Gefeliciteerd, je hebt de opzet voor een kloppend HTML document.
Vervolg: escaping van output, database-acties, formulieren en verwerking.
Wil je meer zien, of ga je het eerst zelf proberen?
Hiermee ga ik vanavond eens mee aan de slag, zal dan even alles opnieuw schrijven.
Ik moet dus als ik t goed heb dus pagina's maken met de forms. Zoals bv nieuws-overzicht.php, nieuws-add.php enz. En daar laat ik de class includen?
Gewijzigd op 03/02/2015 16:42:03 door cas wolters
Uit oogpunt van overzichtelijkheid heb ik dat hele authenticatie-gedeelte achterwege gelaten. Je zou dit nog op duizend en een andere manieren kunnen indelen en voor allerlei zaken aparte classes kunnen maken (database, formuliersysteem, authenticatielaag, URL rewriting) maar dat zou de vraag een beetje voorbij schieten... dan ben je onderhand bezig met het bouwen van een framework / content management systeem.
Jouw vraag is (min of meer) "hoe beheer ik nieuwsberichten", ik geef je een opzet voor een gestructureerde aanpak die ook toegepast kan worden op andere stukken functionaliteit.
EDIT: in deze class regel je dus "alles" omtrent nieuws, je hoeft geen aparte bestanden aan te maken voor het toevoegen/wijzigen van nieuws, dat doe je in de afzonderlijke acties van deze ene class.
Gewijzigd op 03/02/2015 16:53:45 door Thomas van den Heuvel
oefenen in OOP
Oef wel een zware opstap om direct op OOP over te stappen. Mocht Cas van een uitdaging houden dan zou ik willen aanraden om eerst wat te Gewijzigd op 03/02/2015 17:17:15 door Frank Nietbelangrijk
Het grote voordeel van het gebruik van OOP bij dit soort zaken ten opzichte van een procedurele aanpak is dat je niet verzandt in een if-elseif-else hel om al je acties te scheiden, wat je code gewoon onleesbaar maakt (en waarbij ook vaak allerlei output wordt gegenereerd die toch nooit getoond wordt omdat je meteen redirect).
In een object georienteerde aanpak scheid je elk onderdeel in een overzichtelijk, afgebakend gebied en doe je enkel dat wat nodig is.
Overigens hoef je het bovenstaande sjabloon niet helemaal te doorgronden om het te kunnen gebruiken / uit te breiden. Daarnaast kun je binnen je methoden ook procedureel losgaan als je dat leuk vindt.
Dat is een bazooka afschieten op een luis.
Op zich niets mis mee, als de TS dat tempo kan bijhouden.
(dat bedoel ik niet verkeerd richting ts uiteraard)
Is het niet praktischer om gewoon basic te beginnen, met een romig stukje nette code qua database en uit te leggen en hoe een update query in elkaar zit? Zodat de TS eerst doorkrijgt hoe het werkt?
Want feitelijk is dat de vraag van de TS.
EDIT
Mijn k*t enter blijft hangen..
was nog niet klaar.
Gewijzigd op 03/02/2015 17:29:29 door Bart V B
Overigens is een systeempje om nieuws te beheren nou niet bepaald een luis. Hierbij moet je toch wel enigszins gestructureerd te werk gaan.
De vraag van de TS kan op meerdere manieren geinterpreteerd worden:
- het (veilig) terugplaatsen van een bestaand bericht in een formulier middels een id in de URL om vervolgens
- het bijgewerkte bericht op te slaan
Dit gaat hand in hand, lijkt mij. Daarbij schets ik een wat volledigere oplossing. Die herbruikbaar is.
En hoe ik dan de pagina's moet oproepen.
Ikzelf werkte met switch() in mijn beheerpaneel. Elke switch is een actie binnen een module (nieuws, gebruikers, reviews etc..)
review.php
Code (php)
Gewijzigd op 03/02/2015 20:35:29 door - Ariën -
Zo kun je deze php bestanden in het leven roepen:
De news_new.php heb je al en is bedoeld om een nieuw nieuws artikel aan de database toe te voegen.
Begin nu gewoon met news_index.php waarbij je de titels ziet staan van alle nieuwsberichten. Dan moet je daarna op een titel kunnen klikken om deze te bewerken en wordt je dus doorgestuurd naar news_edit.php (zie mijn vorige post)
Gewijzigd op 03/02/2015 20:53:10 door Frank Nietbelangrijk
Quote:
Vergeet het hele OOP gedoe van Thomas. Het is goed bedoeld, maar behoorlijk een flinke pak voor een beginner.
Om te weten hoe je een auto moet besturen hoef je toch ook niet de volledige werking van een verbrandingsmotor uiteen te kunnen zetten? Ik bied een raamwerk en leg stap voor stap uit hoe dit in grote lijnen werkt. Je hoeft verder niet te begrijpen hoe dit werkt, je kunt binnen je methoden je eigen ding doen (dit heb ik al uitgelegd in mijn reactie...).
Als je deze mate van abstractie niet eigen bent... dan kun je beter helemaal bij het begin beginnen (en probeer dan ook meteen dingen structureel aan te pakken).
Switch statement. Kan. Maar niet erg overzichtelijk wel? Verzandt snel in spaghetti-code (de if-elseif-else hel waar ik eerder op wees)
Losse bestanden. Kan. Maar maak dan op zijn minst een directory "news" aan om dingen enigszins te groeperen. Je wilt straks toch niet 550975235823592 bestanden in je webroot hebben staan? Daarnaast heb je dan evenveel "ingangen" in je applicatie als je bestanden hebt, ook niet erg handig uit oogpunt van veiligheid.
Maar goed, doe het maar zoals Aar en Frank beschrijven. Dan loop je misschien op een gegeven moment vanzelf tegen beperkingen aan en ga je je afvragen of het wellicht handiger of beter kan.
En als je dan "full circle" bent, lees dan mijn reacties nog een keer.
Verder is switch() daarentegen wel overzichtelijk. Als je tab's gebruikt dan valt het reuze mee.
Je kan je later, als je bekender bent in PHP, je meer verdiepen in OOP, en desnoods op een MVC-framework richten.
Gewijzigd op 03/02/2015 22:14:06 door - Ariën -
Ik heb nu t volgende:
- Index.php (includes paginas uit de map inc)
- nieuws-add.php / index.php?page=nieuws-add
- nieuws-overzicht.php / index.php?page=nieuws-overzicht <-- Hier staat een hele overzicht met al mn posts.
- nieuws-edit.php Hier blijf ik dus haken...
Index.php
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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
<?php include('../config.php'); ?>
<link href="../Styles/box.css" rel="stylesheet" type="text/css">
<link href="../Styles/style.css" rel="stylesheet" type="text/css">
<?php
$body_id = "news";
$body_class = "anymodus";
include('../layout/head.php');
?>
<div id="container">
<div id="content">
<div id="column1" class="column">
<?php include('menu.php'); ?>
</div>
<div id="column2" class="column">
<div class="toppie <?php $aTeksten = array( "blauw", "oranje", "groen", "rood"); echo $aTeksten[array_rand($aTeksten)]; ?>" style="padding-top:0px; width:530px; margin-left:10px;">
<?php
if (!isset($_GET['page'])) {
//url-variabele bestaat niet, geef beginpagina
include('inc/home.php');
}
else {
//url-variabele bestaat wel, definieer bestand
$page = 'inc/'.$_GET['page'].'.php';
if (file_exists($page)) {
//pagina bestaat, laat zien
include($page);
}
else {
//pagina bestaat niet
echo 'De opgevraagde pagina bestaat niet.';
}
}
?>
</div></div>
<div id="column3" class="column">
</div>
<?php
include('../layout/footer.php');
?>
<link href="../Styles/box.css" rel="stylesheet" type="text/css">
<link href="../Styles/style.css" rel="stylesheet" type="text/css">
<?php
$body_id = "news";
$body_class = "anymodus";
include('../layout/head.php');
?>
<div id="container">
<div id="content">
<div id="column1" class="column">
<?php include('menu.php'); ?>
</div>
<div id="column2" class="column">
<div class="toppie <?php $aTeksten = array( "blauw", "oranje", "groen", "rood"); echo $aTeksten[array_rand($aTeksten)]; ?>" style="padding-top:0px; width:530px; margin-left:10px;">
<?php
if (!isset($_GET['page'])) {
//url-variabele bestaat niet, geef beginpagina
include('inc/home.php');
}
else {
//url-variabele bestaat wel, definieer bestand
$page = 'inc/'.$_GET['page'].'.php';
if (file_exists($page)) {
//pagina bestaat, laat zien
include($page);
}
else {
//pagina bestaat niet
echo 'De opgevraagde pagina bestaat niet.';
}
}
?>
</div></div>
<div id="column3" class="column">
</div>
<?php
include('../layout/footer.php');
?>
nieuws-add.php
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
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
$pagetitle = "Maak nieuw artikel";
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
{
$aFouten = array();
if($_POST['title'] == '')
{
$aFouten[] = 'Je hebt geen titel ingevuld!';
}
if($_POST['category'] == '')
{
$aFouten[] = 'Je hebt geen categorie gekozen!';
}
if($_POST['story'] == '')
{
$aFouten[] = 'Je hebt geen bericht ingevuld';
}
if(count($aFouten) != 0)
{
echo 'De volgende fouten zijn opgetreden: <br /><br />';
for($Fi = 0; $Fi < count($aFouten); $Fi++)
{
echo $aFouten[$Fi].'<br />';
}
echo '<br />Klik <a href="javascript:history.go(-1);">hier</a> om terug te keren';
}
else
{
mysql_query("INSERT INTO cms_news (title,category,topstory,short_story,story,author,date) VALUES ('".addslashes($_POST['title'])."','".addslashes($_POST['category'])."','".addslashes($_POST['topstory'])."','".addslashes($_POST['short_story'])."','".addslashes($_POST['story'])."','".addslashes($_POST['author'])."','".$_POST['date']."')") or die (mysql_error());
echo '<h2 class="title">Jou bericht is gepubliceerd!</h2>';
}
}
else
{
?>
<h2 class="title">Schrijf een e-mail bericht</h2>
<form method="post" action="index.php?page=add-nieuws">
<p><label for="titel">Titel:</label><br>
<input type="text" name="title" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Jou naam':this.value;" value="titel" /></p>
<p><label for="titel">Topstory:</label><br>
<input type="text" name="topstory" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Jou naam':this.value;" value="topstory" /></p>
<p><label for="author">Categorie:</label><br>
<label>
<input type="checkbox" name="category" value="Onderwijs" id="category_1">
Onderwijs</label>
<br>
<label>
<input type="checkbox" name="category" value="Nieuws" id="category_2">
Nieuws</label>
<br>
</p>
<p><label for="bericht">K Bericht:</label><br>
<textarea name="short_story" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Typ hier jou bericht....':this.value;" class="your-message">Typ hier jou bericht...</textarea></p>
<p><label for="bericht">Bericht:</label><br>
<textarea name="story" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Typ hier jou bericht....':this.value;" class="your-message">Typ hier jou bericht...</textarea></p>
<p><label for="author">Schrijver:</label><br>
<input type="text" name="author" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Onderwerp':this.value;" value="author" /></p>
<p><label for="date">Date:</label><br>
<input type="date" name="date" value="
" id="date"></p>
<input type="submit" value="Verstuur e-mail" class="send-message">
</form>
<?
}
?>
</div>
$pagetitle = "Maak nieuw artikel";
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
{
$aFouten = array();
if($_POST['title'] == '')
{
$aFouten[] = 'Je hebt geen titel ingevuld!';
}
if($_POST['category'] == '')
{
$aFouten[] = 'Je hebt geen categorie gekozen!';
}
if($_POST['story'] == '')
{
$aFouten[] = 'Je hebt geen bericht ingevuld';
}
if(count($aFouten) != 0)
{
echo 'De volgende fouten zijn opgetreden: <br /><br />';
for($Fi = 0; $Fi < count($aFouten); $Fi++)
{
echo $aFouten[$Fi].'<br />';
}
echo '<br />Klik <a href="javascript:history.go(-1);">hier</a> om terug te keren';
}
else
{
mysql_query("INSERT INTO cms_news (title,category,topstory,short_story,story,author,date) VALUES ('".addslashes($_POST['title'])."','".addslashes($_POST['category'])."','".addslashes($_POST['topstory'])."','".addslashes($_POST['short_story'])."','".addslashes($_POST['story'])."','".addslashes($_POST['author'])."','".$_POST['date']."')") or die (mysql_error());
echo '<h2 class="title">Jou bericht is gepubliceerd!</h2>';
}
}
else
{
?>
<h2 class="title">Schrijf een e-mail bericht</h2>
<form method="post" action="index.php?page=add-nieuws">
<p><label for="titel">Titel:</label><br>
<input type="text" name="title" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Jou naam':this.value;" value="titel" /></p>
<p><label for="titel">Topstory:</label><br>
<input type="text" name="topstory" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Jou naam':this.value;" value="topstory" /></p>
<p><label for="author">Categorie:</label><br>
<label>
<input type="checkbox" name="category" value="Onderwijs" id="category_1">
Onderwijs</label>
<br>
<label>
<input type="checkbox" name="category" value="Nieuws" id="category_2">
Nieuws</label>
<br>
</p>
<p><label for="bericht">K Bericht:</label><br>
<textarea name="short_story" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Typ hier jou bericht....':this.value;" class="your-message">Typ hier jou bericht...</textarea></p>
<p><label for="bericht">Bericht:</label><br>
<textarea name="story" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Typ hier jou bericht....':this.value;" class="your-message">Typ hier jou bericht...</textarea></p>
<p><label for="author">Schrijver:</label><br>
<input type="text" name="author" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Onderwerp':this.value;" value="author" /></p>
<p><label for="date">Date:</label><br>
<input type="date" name="date" value="
" id="date"></p>
<input type="submit" value="Verstuur e-mail" class="send-message">
</form>
<?
}
?>
</div>
nieuws-overzicht.php
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<table cellpadding='4' cellspacing='0' width='100%'>
<tr>
<td class='tablesubheader' width='1%' align='center'>ID</td>
<td class='tablesubheader' width='28%'>Title</td>
<td class='tablesubheader' width='10%' align='center'>Date</td>
<td class='tablesubheader' width='10%' align='center'>Author</td>
<td class='tablesubheader' width='10%' align='center'>Edit</td>
<td class='tablesubheader' width='12%' align='center'>Delete</td>
</tr>
<?php
$get_articles = mysql_query("SELECT num,title,short_story,date,author FROM cms_news ORDER BY num DESC") or die(mysql_error());
while($row = mysql_fetch_assoc($get_articles)){
printf(" <tr>
<td class='tablerow1' align='center'>%s</td>
<td class='tablerow2'><strong>%s</strong><div class='desctext'>%s</div></td>
<td class='tablerow2' align='center'>%s</td>
<td class='tablerow2' align='center'>%s</td>
<td class='tablerow2' align='center'><a href='link met id %s'>bewerk</a></td>
<td class='tablerow2' align='center'><a href='link met id %s'>delete</a></td>
</tr>", $row['num'], $row['title'], $row['short_story'], $row['date'], $row['author'], $row['num'], $row['num']);
}
?>
</table>
<tr>
<td class='tablesubheader' width='1%' align='center'>ID</td>
<td class='tablesubheader' width='28%'>Title</td>
<td class='tablesubheader' width='10%' align='center'>Date</td>
<td class='tablesubheader' width='10%' align='center'>Author</td>
<td class='tablesubheader' width='10%' align='center'>Edit</td>
<td class='tablesubheader' width='12%' align='center'>Delete</td>
</tr>
<?php
$get_articles = mysql_query("SELECT num,title,short_story,date,author FROM cms_news ORDER BY num DESC") or die(mysql_error());
while($row = mysql_fetch_assoc($get_articles)){
printf(" <tr>
<td class='tablerow1' align='center'>%s</td>
<td class='tablerow2'><strong>%s</strong><div class='desctext'>%s</div></td>
<td class='tablerow2' align='center'>%s</td>
<td class='tablerow2' align='center'>%s</td>
<td class='tablerow2' align='center'><a href='link met id %s'>bewerk</a></td>
<td class='tablerow2' align='center'><a href='link met id %s'>delete</a></td>
</tr>", $row['num'], $row['title'], $row['short_story'], $row['date'], $row['author'], $row['num'], $row['num']);
}
?>
</table>
Nu weet ik t ff niet meer :S,
Vanuit dit bestand moet ik de berichten kunnen bewerken..
nieuws-edit.php
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
39
40
41
42
43
44
45
46
47
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
<?php
$num = $key;
$title = $_POST['title'];
$category = $_POST['category'];
$topstory = $_POST['topstory'];
$short_story = $_POST['short_story'];
$story = $_POST['story'];
$num = $_POST['id'];
mysql_query("UPDATE cms_news SET title = '".$title."', category = '".$category."', topstory = '".$topstory."', short_story = '".$short_story."', story = '".$story."' WHERE num = '".$num."' LIMIT 1") or die(mysql_error());
?>
<form action='index.php?page=nieuws-edit' method='post'>
<div class='tableborder'>
<div class='tableheaderalt'>Bewerk: (<?php echo $article['title']; ?>)</div>
<table width='100%' cellspacing='0' cellpadding='5' align='center' border='0'>
<tr>
<td class='tablerow1' width='40%' valign='middle'><b>Title</b><div class='graytext'>The full title of your article.</div></td>
<td class='tablerow2' width='60%' valign='middle'><input type='text' name='title' value="<?php echo $article['title']; ?>" size='30' class='textinput'></td>
</tr>
<tr>
<td class='tablerow1' width='40%' valign='middle'><b>News Category</b></td>
<td class='tablerow2' width='60%' valign='middle'><select name='category' class='dropdown'><option value='Onderwijs' <?php if($article['category'] == "Onderwijs"){ echo 'selected'; } ?>>Onderwijs</option> </select>
</td>
</tr>
<tr>
<td class='tablerow1' width='40%' valign='middle'><b>Topstory</b><div class='gray text'>topstory.</div></td>
<td class='tablerow2' width='60%' valign='middle'><input type='text' name='topstory' value="<?php echo $article['topstory']; ?>" size='30' class='textinput'></td>
</tr>
<tr>
<td class='tablerow1' width='40%' valign='middle'><b>Short Story</b><div class='graytext'>A small introduction to the article.<br />HTML is not allowed here.</div></td>
<td class='tablerow2' width='60%' valign='middle'><textarea name='short_story' cols='60' rows='5' wrap='soft' id='sub_desc' class='multitext'><?php echo $article['short_story']; ?></textarea></td>
</tr>
<tr>
<td class='tablerow1' width='40%' valign='middle'><b>Story</b><div class='graytext'>The actual news message.<br />HTML is allowed here.</div></td>
<td class='tablerow2' width='60%' valign='middle'><textarea name='story' cols='60' rows='5' wrap='soft' id='sub_desc' class='multitext'><?php echo $article['story']; ?></textarea></td>
</tr>
<tr>
<tr><td align='center' class='tablesubheader' colspan='2' ><input type='submit' value='Update Article' class='realbutton' accesskey='s'></td></tr>
</form></table>
$num = $key;
$title = $_POST['title'];
$category = $_POST['category'];
$topstory = $_POST['topstory'];
$short_story = $_POST['short_story'];
$story = $_POST['story'];
$num = $_POST['id'];
mysql_query("UPDATE cms_news SET title = '".$title."', category = '".$category."', topstory = '".$topstory."', short_story = '".$short_story."', story = '".$story."' WHERE num = '".$num."' LIMIT 1") or die(mysql_error());
?>
<form action='index.php?page=nieuws-edit' method='post'>
<div class='tableborder'>
<div class='tableheaderalt'>Bewerk: (<?php echo $article['title']; ?>)</div>
<table width='100%' cellspacing='0' cellpadding='5' align='center' border='0'>
<tr>
<td class='tablerow1' width='40%' valign='middle'><b>Title</b><div class='graytext'>The full title of your article.</div></td>
<td class='tablerow2' width='60%' valign='middle'><input type='text' name='title' value="<?php echo $article['title']; ?>" size='30' class='textinput'></td>
</tr>
<tr>
<td class='tablerow1' width='40%' valign='middle'><b>News Category</b></td>
<td class='tablerow2' width='60%' valign='middle'><select name='category' class='dropdown'><option value='Onderwijs' <?php if($article['category'] == "Onderwijs"){ echo 'selected'; } ?>>Onderwijs</option> </select>
</td>
</tr>
<tr>
<td class='tablerow1' width='40%' valign='middle'><b>Topstory</b><div class='gray text'>topstory.</div></td>
<td class='tablerow2' width='60%' valign='middle'><input type='text' name='topstory' value="<?php echo $article['topstory']; ?>" size='30' class='textinput'></td>
</tr>
<tr>
<td class='tablerow1' width='40%' valign='middle'><b>Short Story</b><div class='graytext'>A small introduction to the article.<br />HTML is not allowed here.</div></td>
<td class='tablerow2' width='60%' valign='middle'><textarea name='short_story' cols='60' rows='5' wrap='soft' id='sub_desc' class='multitext'><?php echo $article['short_story']; ?></textarea></td>
</tr>
<tr>
<td class='tablerow1' width='40%' valign='middle'><b>Story</b><div class='graytext'>The actual news message.<br />HTML is allowed here.</div></td>
<td class='tablerow2' width='60%' valign='middle'><textarea name='story' cols='60' rows='5' wrap='soft' id='sub_desc' class='multitext'><?php echo $article['story']; ?></textarea></td>
</tr>
<tr>
<tr><td align='center' class='tablesubheader' colspan='2' ><input type='submit' value='Update Article' class='realbutton' accesskey='s'></td></tr>
</form></table>
Op een of andere manier krijg ik mn berichten niet te zien, en ik weet niet hoe ik kan aangeven welk bericht id hij moet gaan bewerken.
Gewijzigd op 04/02/2015 15:28:11 door - Ariën -
suc6.
php gedeelte van nieuws-edit.php:
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
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
<?php
// als de pagina in de post methode is aangeroepen is het edit-formulier dus verzonden en moeten we de nieuwe velden wegschrijven naar de database
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$num = $key;
$title = $_POST['title'];
$category = $_POST['category'];
$topstory = $_POST['topstory'];
$short_story = $_POST['short_story'];
$story = $_POST['story'];
$num = $_POST['id'];
mysql_query("UPDATE cms_news SET title = '".$title."', category = '".$category."', topstory = '".$topstory."', short_story = '".$short_story."', story = '".$story."' WHERE num = '".$num."' LIMIT 1") or die(mysql_error());
header('Location: index.php');
// anders gaan we het nieuwsartikel uit de database halen zodat we die kunnen gaan bewerken
} else {
$id = 1; // Dit moet later nog veranderen
$result = mysql_query('SELECT * FROM cms_news WHERE id=' . intval($id));
if(!result)
die('error: ' . mysql_error());
$article = mysql_fetch_assoc($result);
if(!$article) {
die('error: Geen rij gevonden voor id=' . intval($id));
}
}
?>
// als de pagina in de post methode is aangeroepen is het edit-formulier dus verzonden en moeten we de nieuwe velden wegschrijven naar de database
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$num = $key;
$title = $_POST['title'];
$category = $_POST['category'];
$topstory = $_POST['topstory'];
$short_story = $_POST['short_story'];
$story = $_POST['story'];
$num = $_POST['id'];
mysql_query("UPDATE cms_news SET title = '".$title."', category = '".$category."', topstory = '".$topstory."', short_story = '".$short_story."', story = '".$story."' WHERE num = '".$num."' LIMIT 1") or die(mysql_error());
header('Location: index.php');
// anders gaan we het nieuwsartikel uit de database halen zodat we die kunnen gaan bewerken
} else {
$id = 1; // Dit moet later nog veranderen
$result = mysql_query('SELECT * FROM cms_news WHERE id=' . intval($id));
if(!result)
die('error: ' . mysql_error());
$article = mysql_fetch_assoc($result);
if(!$article) {
die('error: Geen rij gevonden voor id=' . intval($id));
}
}
?>
Gewijzigd op 04/02/2015 15:19:42 door Frank Nietbelangrijk
Code (php)
Dan in de browser het volgende proberen:
http://localhost/test.php?name=frank
http://localhost/test.php?age=99
http://localhost/test.php?name=Cas&age=88
http://localhost/test.php?name=Cas&age=88&city=Leiden
Lekker spelen er mee :-)
Gewijzigd op 04/02/2015 15:33:13 door Frank Nietbelangrijk