Het wijzigen van een bestaand record hoe doe je dat?

Ik heb een tabel
Tbl_Evenementen met de velden
EvenementID int(11),
Evenement text COMMENT 'Naam van het evenement',
Begin timestamp COMMENT 'Begindatum en tijd',
Eind timestamp COMMENT 'Einddatum en tijd',
Locatie text COMMENT 'Locatie van het evenement',
Max smallint(6) COMMENT 'Maximaal aantal deelnemers',
PRIMARY KEY (`EvenementID`),

Deze tabel is gevuld.
Nu wil ik de gegevens van een record wijzigen.
Mijn gedachten gang is als volgt;
1. Zoek het record wat je wilt wijzigen
2. Presenteer de huidige gegevens d.m.v. een form
3. Geef de gebruiker de gelegenheid om deze gegevens te wijzigen
4. Schrijf deze gegevens in hetzelfde record weg

Het script
<?php
// Configuratiebestand beschikbaar maken zodat we toegang hebben tot onze database
require_once('sources/includes/config.inc.php')
?>

<?php
open_html();
open_head();
load_metatags('','','');
load_frameworks();
load_plugins();
load_stylesheets(array(''));
close_head();
open_body();
?>

<div id="container">
<div id="header">
<h1>MTTV&prime;72 - Mierlose tafeltennis vereniging &prime;72</h1>
</div>
<?php
include_once('sources/includes/nav.php')
?>
<div id="content">
<div id="leftCol">
<table width="100%" border="1" >
<tr>
<td><h1>Mijn MTTV</h1></td>
<td><h1>Wijzig evenement</h1></td>
</tr>
</table>

<!-- Zoek het evenement -->
<form action="?pid=WijzigenEvenement" method="post">
Wat is het EvenementID van het evenement dat je wilt wijzigen? <input type="text" name="EvenementID" size="10" /> <input name="zoek" type="submit" value="zoek">
</form>
<?php
if ($_POST['zoek']) {
$sql = "SELECT * FROM Tbl_Evenementen WHERE EvenementID='".$_POST['EvenementID']."'";
$qry = mysql_query($sql)or die(mysql_error());
$row = mysql_fetch_array($qry);
?>
<form action="?pid=WijzigenEvenement" method="post">
<table class="fancy">
<thead>
<th>&nbsp;</th>
<th>in database</th>
<th>veranderingen</th>
</thead>
<?php
echo '<tr>';
echo '<td nowrap>Naam evenement:</td>';
echo "<td>".$row['Evenement']."</td>";
echo '<td><input type="text" name="Evenement" size="40" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td nowrap>Begin:</td>';
echo "<td>".$row['Begin']."</td>";
echo '<td><input type="text" name="Begin" size="40" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td nowrap>Eind:</td>';
echo "<td>".$row['Eind']."</td>";
echo '<td><input type="text" name="Eind" size="40" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td nowrap>Locatie:</td>';
echo "<td>".$row['Locatie']."</td>";
echo '<td><input name="Locatie" type="text" size="40" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td nowrap>Maximaal aantal deelnemers:</td>';
echo "<td>".$row['Max']."</td>";
echo '<td><input type="text" name="Max" size="20" /></td>';
echo '</tr>';
echo '<tr>';
echo '<td nowrap>Opmerkingen:</td>';
echo "<td>".$row['Opmerkingen']."</td>";
echo '<td><textarea name="Opmerkingen" cols="40" rows="3"></textarea></td>';
echo '</tr>';
echo '<tr>';
echo '<td nowrap>Krant:</td>';
echo "<td>".$row['Krant']."</td>";
echo '<td><textarea name="Krant" cols="40" rows="3"></textarea></td>';
echo '</tr>';
echo '<tr>';
echo '<td valign="top" nowrap><p></p><input name="wijzigen" type="submit" value="wijzigen"></td>';
echo '<td></td>';
echo '<td></td>';
echo '</tr>';
?>
</table>
</form>

<p>Schrijf de gegevens weg na accoord</p>
<?php
if ($_POST['wijzigen']) {
$sql="UPDATE Tbl_Evenementen SET ";
$sql=$sql."Evenement = ".addslashes(htmlspecialchars($_POST['Evenement'])).",";
$sql=$sql."Begin = ".addslashes(htmlspecialchars($_POST['Begin'])).",";
$sql=$sql."Eind = ".addslashes(htmlspecialchars($_POST['Eind'])).",";
$sql=$sql."Locatie = ".addslashes(htmlspecialchars($_POST['Locatie'])).",";
$sql=$sql."Max = ".addslashes(htmlspecialchars($_POST['Max'])).",";
$sql=$sql."Opmerkingen = ".addslashes(htmlspecialchars($_POST['Opmerkingen'])).",";
$sql=$sql."Krant = ".addslashes(htmlspecialchars($_POST['Krant'])).",";

$sql=substr ( $sql , 0, -1 ).'WHERE Tbl_Evenementen.EvenementID = '.$_POST['EvenementID'].' LIMIT 1';

// Alle ingevulde data wegschrijven naar de database
$result = mysql_query($sql);

if (!$result) {
die('Invalid query: ' . mysql_error());
} else {
// ... als alles goed verlopen is
echo '<p>EvenementID: '.$_POST['EvenementID'].' gewijzigd.</p>';
} // if result
} // if wijzigen
} // if zoek
?>
<a href="index.php?pid=MijnMTTV">Terug</a>; </p>
</div><!-- EIND LEFTCOL DIV -->
</div><!-- EIND CONTENT DIV -->

<?php
include_once('sources/includes/footer.php')
?>
</div><!-- EIND CONTAINER DIV -->

<?php
close_body();
close_html();
?>

Nu heb ik twee vragen;
1. Is er een slimmere manier om het formulier -waar ik de gegevens toon- te presenteren?
2. Waarom worden mijn wijzigingen niet opgeslagen?

Toine
Je krijgt geen SQL error? Echo anders $sql eens.
Ik heb geprobeerd om de $sql te echo-en, maar die info komt niet op mijn scherm helaas
Ik mis de single quotes in de query, dus je zou sowieso een sql error moeten krijgen.
Ik zie m al, regel 2 in het laatste codeblok zou moeten zijn:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['wijzigen'])) {
	//rest van de code
}
?>

vergeet de quotes niet!
Op regel 10 voeg je aan het eind een comma toe, die je op regel 12 weer weghaalt, beetje overbodig
$sql = sql . "iets" kan korter $sql .= "iets"

Edit: ik zeg dat de quotes niet moet vergeten en ik vergeet er zelf 1 :(
Volgens mij zit je if structuur je in de weg. Als ik de code goed heb uitgeplozen staat er eigenlijk dit:
<?php
        if ($_POST['zoek']) {
            if ($_POST['wijzigen']) {
                if (!$result) {
                }    // if result
            }    // if wijzigen
        }    // if zoek
?>

En daar dan natuurlijk al je code tussen. Maar volgens mij gaat dit dus nooit lukken.
- De eerste keer dat je je scherm toont wordt een leeg vorm getoond. Dat vult de gebruiker in en klikt op 'zoek'
- de tweede keer dat je je scherm toont is 'zoek' dus geklikt en gaat het eerste level van de ifs lopen en toont data aan de gebruiker, die wijzigt het en klikt op 'wijzigen'
- de derde keer dat je je scherm toont is 'wijzigen' dus geklikt, maar 'zoek' niet meer (was al een keertje terug) dus het eerste level van je ifs is false en dus kom je ook nooit in het tweede level.

hint: dus geen geneste ifs gebruiken, maar een if..elseif..
Inderdaad Erwin, daar heb ik overheen gekeken

[size=xsmall]Toevoeging op 22/12/2011 10:50:08:[/size]

Ik vergeet telkens dat PHP alees wat niet false is als true beschouwd, beetje dirty maar goed (niet in de zin vam oké)
$sql="UPDATE ......";
Maar waar voer je de quert ook daadwerkelijk uit?

Denk aan de veiligheid. Hetgeen jij nu gebruikt is niet goed, zelfs af te raden. Zie mysql_real_escape_string().

Reageren