Hoe kan ik berichten bewerken?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Cas wolters

cas wolters

03/02/2015 15:36:48
Quote Anchor link
Hallo,

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)
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
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>
            
            
Gewijzigd op 03/02/2015 15:37:34 door Cas wolters
 
PHP hulp

PHP hulp

24/12/2024 17:04:39
 
- SanThe -

- SanThe -

03/02/2015 15:41:49
Quote Anchor link
addslashes($_POST['....']) is geen beveiliging.
Gebruik mysql_real_escape_string($_POST['....']).

Alle mysql_* functions zijn verouderd.
Stap over op mysqli_* of pdo().
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/02/2015 15:58:08
Quote Anchor link
Stel je hebt een pagina waar je alle titels van berichten toont met achter iedere titel een snelkoppeling:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="edit.php?id=326">Bewerken</a>


Dan krijg je iets als dit in edit.php:
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

// 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
 
Thomas van den Heuvel

Thomas van den Heuvel

03/02/2015 16:25:45
Quote Anchor link
De eerste stap... :)

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


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


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)
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
<?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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    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?
 
Cas wolters

cas wolters

03/02/2015 16:39:39
Quote Anchor link
Bedankt Thomas,

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
 
Thomas van den Heuvel

Thomas van den Heuvel

03/02/2015 16:50:37
Quote Anchor link
Nee, dit is een standalone (op zichzelf staand) script. Deze sla je bijvoorbeeld op als news.php. Vervolgens kun je middels deze acties alles doen (weergeven en beheren). Het beheergedeelte moet natuurlijk op een of andere manier afgeschermd worden, anders kan iedereen je nieuwsberichten wijzigen of weggooien, wat je natuurlijk niet wilt.

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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/02/2015 17:16:50
Quote Anchor link
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 oefenen in OOP
Gewijzigd op 03/02/2015 17:17:15 door Frank Nietbelangrijk
 
Thomas van den Heuvel

Thomas van den Heuvel

03/02/2015 17:25:22
Quote Anchor link
True, maar het lijkt mij sowieso verstandig om ook MySQLi te gebruiken, en die maakt ook (voornamelijk) gebruik van objecten.

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.
 
Bart V B

Bart V B

03/02/2015 17:27:28
Quote Anchor link
Daar ben ik het mee eens Frank.
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
 
Thomas van den Heuvel

Thomas van den Heuvel

03/02/2015 17:45:40
Quote Anchor link
Hij is al met een database bezig, dan ga ik er (naief als ik ben, wellicht) vanuit dat 'ie daar al enige ervaring mee heeft.

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.
 
Cas wolters

cas wolters

03/02/2015 20:18:50
Quote Anchor link
Thomas, ik kom niet echt verder :S, ik snap niet waar ik de forms tussen moet zetten en de sql gegevens(delete, insert enz..)
En hoe ik dan de pagina's moet oproepen.
 
- Ariën  -
Beheerder

- Ariën -

03/02/2015 20:35:11
Quote Anchor link
Vergeet het hele OOP gedoe van Thomas. Het is goed bedoeld, maar behoorlijk een flinke pak voor een beginner.

Ikzelf werkte met switch() in mijn beheerpaneel. Elke switch is een actie binnen een module (nieuws, gebruikers, reviews etc..)

review.php
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
<?php
if(isset($_GET['action'])){
     switch($_GET['action']) {
        case
"add":
            echo "Wijzig hier je reviews";
            break;
        case
"edit":
            echo "Edit hier je review";
           break;
        case
"delete":
            echo "Delete hier je review";
            break;
    }
}
else {
    echo "Er is geen actie bekend.";
}

?>
Gewijzigd op 03/02/2015 20:35:29 door - Ariën -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/02/2015 20:52:45
Quote Anchor link
De methode van Aar is een mogelijkheid maar je kunt het ook bij losse pagina's houden. Op een aantal kleine nadeeltjes na is er echt helemaal niets mis mee.

Zo kun je deze php bestanden in het leven roepen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
news_index.php
news_edit.php
news_show.php
news_new.php


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
 
Thomas van den Heuvel

Thomas van den Heuvel

03/02/2015 21:55:23
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

03/02/2015 22:13:45
Quote Anchor link
Gezien het om een beginner gaat, kan de uitleg van OOP wel interessant zijn, maar wel erg hoog gegrepen.
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 -
 
Cas wolters

cas wolters

04/02/2015 14:49:18
Quote Anchor link
Zucht, het is me te moeilijk :S!

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

?>


nieuws-add.php
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
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>
            
            


nieuws-overzicht.php
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
<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>


Nu weet ik t ff niet meer :S,
Vanuit dit bestand moet ik de berichten kunnen bewerken..

nieuws-edit.php

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


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 -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/02/2015 15:18:46
Quote Anchor link
Voorzetje, pakt enkel nog $id=1. Probeer hier met mijn eerste post eens te kijken of je het $_GET['id'] verhaal er zelf in kunt verwerken. Maar eerst even testen of dit goed werkt, zo niet nog even aanpassen en zorgen dat je dit zover begrijpt.

suc6.

php gedeelte van nieuws-edit.php:
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
<?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));
    }
}

?>
Gewijzigd op 04/02/2015 15:19:42 door Frank Nietbelangrijk
 
- SanThe -

- SanThe -

04/02/2015 15:30:42
Quote Anchor link
Zet dit bovenin je script;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// rest
?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/02/2015 15:31:30
Quote Anchor link
Nog even een heel simpel werkend voorbeeldje met $_GET omdat ik het gevoel heb dat het nog totaal onbekend is bij jou. Gewoon even opslaan als test.php:
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
<?php

$name
= 'onbekend';
$age = 'onbekend';

if(isset($_GET['name']))
    $name = $_GET['name'];

if(isset($_GET['age']))
    $age = $_GET['age'];

echo 'Naam: ' . $name . '<br>';
echo 'Leeftijd: ' . $age . '<br>';

?>

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
 



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.