Wijzigen van een record
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
Code (php)
1
2
3
4
2
3
4
<?php
// Configuratiebestand beschikbaar maken zodat we toegang hebben tot onze database
require_once('sources/includes/config.inc.php')
?>
// Configuratiebestand beschikbaar maken zodat we toegang hebben tot onze database
require_once('sources/includes/config.inc.php')
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
open_html();
open_head();
load_metatags('','','');
load_frameworks();
load_plugins();
load_stylesheets(array(''));
close_head();
open_body();
?>
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′72 - Mierlose tafeltennis vereniging ′72</h1>
</div>
<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>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?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);
?>
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> </th>
<th>in database</th>
<th>veranderingen</th>
</thead>
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
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
<?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>';
?>
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>
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
<?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
?>
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 -->
</div><!-- EIND CONTAINER DIV -->
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 zie m al, regel 2 in het laatste codeblok zou moeten zijn:
Code (php)
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 :(
Gewijzigd op 22/12/2011 10:44:04 door Ger van Steenderen
Code (php)
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..
Toevoeging op 22/12/2011 10:50:08:
Ik vergeet telkens dat PHP alees wat niet false is als true beschouwd, beetje dirty maar goed (niet in de zin vam oké)
Gewijzigd op 22/12/2011 10:51:16 door Ger van Steenderen
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().