Hallo,

Ik ben momenteel bezig met een vacaturedatabase. In het beheerdergedeelte wil ik de beheerder de mogelijkheid geven om bv. docenten toe te voegen, te bewerken en te verwijderen. Dit laatste werkt, echter het toevoegen en bewerken wilt maar niet lukken. Ik heb een code overgenomen van een oefenopdracht maar ik denk dat ik iets in de volgorde verkeerd doe.

Vanaf regel 126 gaat het dus helemaal goed, dit is het verwijder gedeelte. Echter als ik wil bewerken dan haalt het de juiste record aan, echter als ik het wil wijzigen worden de velden leeg en geeft het steeds aan, dat ik een naam moet invullen, terwijl ik een naam invul. Het toevoegen lukt me al helemaal niet.

Dit is de code:
<?php

// STANDAARD LINK DIE IN DEZE MODULE GEBRUIKT WORDT
$link = 'admin.php?page=docentenbeheer';

// IS ER EEN EDIT VAN EEN RECORD GAANDE?
if($_GET['edit']){

// WIJS AAN $edit HET ID VAN HET BEWERKTE RECORD TOE
$query = "SELECT * FROM Docenten WHERE DocentID = '".mysql_real_escape_string($_GET['edit'])."'";
$result = mysql_query($query);

// IS ER EEN RESULTAAT? DAN PAS DINGEN GAAN BEWERKEN
if(mysql_num_rows($result) == 1){

// $currentRecord BEVAT RECORD VAN BEWERKTE ITEM
$currentRecord = mysql_fetch_array($result);

// ZET HET ID VAN HET HUIDIGE ITEM IN #edit
$edit = $currentRecord['DocentID'];

// IS ER GEEN FOUTMELDING OP EEN VORIGE POST? DAN LAADT DE DATA VAN HET HUIDITE RECORD IN DE SESSION VARIABELEN
// ALS ER EEN FOUTMELDING GETOOND MOET WORDEN, MOET HET FORMULIER GEVULD WORDEN MET DE DATA DIE DE BEZOEKER HEEFT INGEVULD
if(!$_SESSION['post']['errors']){
$_SESSION['post'] = array();
$_SESSION['post']['data'] = array();
$_SESSION['post']['data']['Naam'] = $currentRecord['Naam'];
$_SESSION['post']['data']['Email'] = $currentRecord['Email'];
}

// ZET DE GET VARIABELE OOK IN DE STANDAARD LINK
$link .= '&edit='.$edit;
}

// IS HET FORMULIER GESUBMIT
if($_SERVER['REQUEST_METHOD'] === 'POST'){

// LEGE SESSION VARIABELE AANMAKEN OM BEPAALDE INFO TE ONTHOUDEN VOOR TERUGKOPPELING
$_SESSION['post'] = array();
$_SESSION['post']['data'] = $_POST;

// CONTROLEER OP FOUTEN
if(strlen($_POST['Naam']) == 0){
$_SESSION['post']['errors'][] = 'Vul een naam in!';
}elseif(strlen($_POST['Naam']) > 50){
$_SESSION['post']['errors'][] = 'Vul een kortere naam in!';
}

// GEEN FOUTEN GEMAAKT?
if(count($_SESSION['post']['errors']) == 0){

if($edit){
// UPDATE DOCENT
$query = "
UPDATE
Docenten
SET
Naam = '".mysql_real_escape_string($_POST['Naam'])."',
Email = '".mysql_real_escape_string($_POST['Email'])."',

WHERE
DocentID = '".mysql_real_escape_string($edit)."'

";
}else{
// VOEG DOCENT TOE
$query = "INSERT INTO Docenten (Naam, Email)
VALUES ('".mysql_real_escape_string($_POST['Naam'])."',
'".mysql_real_escape_string($_POST['Email'])."',')";

}
mysql_query($query);

// SESSION DATA NIET MEER NODIG WANT DATA IS JUIST INGEVULD
unset($_SESSION['post']);

// REDIRECT BEZOEKER NAAR LIJST
header("location: admin.php?page=docentenbeheer");
exit();
}else{
// REDIRECT BEZOEKER TERUG NAAR FORMULIER OMDAT ER EEN FOUT GEMAAKT IS
header("location: " . $link);
exit();
}

}else{

// IS ER EEN FOUTMELDING? TOON DEZE!
if($_SESSION['post']['errors']){
$html .= '<div id="error">'.implode('<br />', $_SESSION['post']['errors']).'</div>';
}

// PAS HET LABEL VAN DE KNOP AAN OM AAN TE GEVEN OF HET EEN EDIT OF NIEUWE RECORD BETREFT
if($edit){
$knopLabel = 'Docent Bewerken';
}else{
$knopLabel = 'Docent Toevoegen';

}

// MAAK HET FORMULIER OP
$html .= '
<h2>Formulier:</h2>

<form method="POST" action="'.$link.'">

Naam: <input type="text" name="naam" value="'.html($_SESSION['post']['data']['Naam']).'" /><br />

Email: <input type="text" name="naam" value="'.html($_SESSION['post']['data']['Email']).'" /><br />

<input type="submit" value="'.$knopLabel.'" />

</form>';

// ALS JE IN EEN STRING EEN IF CONDITIE WILT UITVOEREN, KUN JE EEN VERKORTE NOTITIE GEBRUIKEN
/*
$html = '<input type="submit" value="'.($edit ? 'Vak Bewerken' : 'Vak Toevoegen').'" />';
*/

// VERWIJDER (EVENTUELE) SESSION VARIABELE
unset($_SESSION['post']);

}
}

else{
// SELECTEER ALLE DOCENTEN
$query = "SELECT
Docenten.DocentID,
Docenten.Naam,
Docenten.Email
FROM
Docenten";

$result = mysql_query($query) or die(mysql_error());

// GENEREER EEN HTML TABEL MET DE GEWENSTE KOLOMMEN UIT DE QUERY
$html = '<div id="opdrachten_lijst">
<h2>Docentenbeheer</h2>
<table border="1" cellpadding="2" cellspacing="2"><tr class="red">
<td>#</td>
<td>Naam</td>
<td>Email</td>
<td>Edit</td>
<td>Delete</td>
</tr>';
while($record = mysql_fetch_assoc($result)){
$html .= '
<tr>
<td>'.$record['DocentID'].'</td>
<td>'.$record['Naam'].'</td>
<td>'.$record['Email'].'</td>
<td><a href="admin.php?page=docentenbeheer&edit='.$record['DocentID'].'">edit</a></td>
<td><a class="confirm" href="admin.php?delete='.$record['DocentID'].'">delete</a></td>
</tr>';
}
$html .= '</table>
<a href="admin.php?page=docentenbeheer&add=1">Docent toevoegen</a></div>
';
}

// IS ER EEN DELETE?
if($_GET['delete']){

// IS ER AKKOORD GEGEVEN?
if($_GET['akkoord']){

// VERWIJDER HET RECORD
$query = "DELETE FROM Docenten WHERE DocentID='".mysql_real_escape_string($_GET['delete'])."'";
$result = mysql_query($query);

// REDIRECT BEZOEKER
header("location: admin.php?page=docentenbeheer");
exit();
}else{
// NOG GEEN AKKOORD, GEEF PHP BEVESTIGINGSLINK IN HTML
$html .= '<a href="admin.php?delete='.$_GET['delete'].'&akkoord=1">Weet u het zeker?</a>';
}
}

?>
Ik zie zo even niet wat er mis is. Krijg je een foutmelding?
Nee, alleen als ik regel 153 uitvoer dan voert het succesvol regel 19 uit, alleen daarna als ik op bewerk klik (regel 94), gaat het mis, dan laat het lege velden zien en geeft het aan dat ik een naam moet invullen.

[size=xsmall]Toevoeging op 24/04/2013 11:55:06:[/size]

Mijn admin.php ziet er zo uit, misschien helpt dat iets meer:

<?
php>// Zonder session_start() geen session
session_start();
// Include het functie bestand
include_once('../includes/functions.inc.php');
// Include de config met de database array
include_once('../includes/config.inc.php');

// Controleren of de bezoeker ingelogd is
if(!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] == false)
{
header('Location: ../index.php');
exit();
}

// Navigatiemenu met de active class
if($_GET['page'] == 'opdrachtenbeheer' ){
include_once("pages/admin_opdrachtenbeheer.php");
$classOpdrachtenbeheer = 'class="active"';
}elseif($_GET['page'] == 'bedrijvenbeheer' ){
include_once("pages/admin_bedrijvenbeheer.php");
$classBedrijvenbeheer = 'class="active"';
}else{
include_once("pages/admin_docentenbeheer.php");
$classDocentenbeheer = 'class="active"';
}
?>
bestaat de functie html ergens?
In admin.php heb ik dit:

<div id="main">

<?php
print $html;
?>

</div>
De grootste fout die ik kan vinden is deze:

Naam: <input type="text" name="naam" value="'.html($_SESSION['post']['data']['Naam']).'" /><br />
Email: <input type="text" name="naam" value="'.html($_SESSION['post']['data']['Email']).'" /><br 

Het naam en email input hebben dezelfde 'name' attribuut. Dat gaat niet goedkomen....
Probeer het eens zo:

<?php
$html .= '
    <h2>Formulier:</h2>
    
    <form method="POST" action="'.$link.'">
            
        Naam: <input type="text" name="Naam" value="'.htmlentities($_SESSION['post']['data']['Naam']).'" /><br />
        
        Email: <input type="text" name="Email" value="'.htmlentities($_SESSION['post']['data']['Email']).'" /><br />        
        
        <input type="submit" value="'.$knopLabel.'" />
    
    </form>';
?>
Aangepast, nu linkt het goed door!

Echter past hij het veld niet aan?

Bedankt alvast voor het vinden van de fout mannen, dit had ik moeten weten.

[size=xsmall]Toevoeging op 24/04/2013 15:38:09:[/size]

Regel 59 moest de komma weg, het bewerken doet het nu! (hele middag heeft mij een komma dwars gelegen.

Nu vraag ik me alleen nog af hoe ik het toevoegen werkend krijg. Als ik op toevoegen docent klik, gebeurt er niks. Het verwijst wel naar de pagina xxxxxx.page=docentenbeheer&add=1 maar het blijft gewoon het overzichttabel houden.

Reageren