[php] Wijzigt gegevens in de database niet
Ik heb de onderstaande code geschreven om gegevens in mijn database te kunnen wijzigen.
Helaas werkt deze niet.
Als ik zo de code bekijk snap ik ook niet wat ik heb fout gedaan.
Hopelijk kan iemand mij helpen.
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
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
<?php
mysql_query("
INSERT INTO tbl_log VALUE ('','".$_SESSION['username']."',NOW(),'Menu volgorde aan het wijzigen')
");
$submit = $_POST['submit'];
$order = $_POST['order'];
if($submit){
if($order){
mysql_query("
UPDATE tbl_menu SET volgorde='".$order."' WHERE id='".$MenuInfo['id']."'
") or die(mysql_error());
mysql_query("
INSERT INTO tbl_log VALUE ('','".$_SESSION['username']."',NOW(),'Heeft de gegevens van ".$titel." gewijzigd')
");
echo "<script> window.location='index.php?pagina=menu&msg=18' </script>";
}
else
echo "<script> window.location='index.php?pagina=menu-wijzigen&err=4&id=".$id."' </script>";
}
?>
<h1>Volgorde wijzigen</h1><br />
<form action ="index.php?pagina=menu-volgorde" method="POST">
<table border="0" width="100%">
<?php
$MenuId = mysql_query("SELECT * FROM tbl_menu ORDER BY volgorde") or die(mysql_error());
while($MenuInfo = mysql_fetch_assoc($MenuId)){
echo "
<tr>
<td width='20%'><input type='text' name='order' value='".$MenuInfo['volgorde']."' style='width:100%;' /></td>
<td width='80%'>".$MenuInfo['titel']."</td>
</tr>
";
}
?>
</table>
<table border="0" width="100%">
<tr>
<td></td>
<td><input type="submit" name="submit" value="Wijzig" /></td>
</tr>
</table>
</form>
mysql_query("
INSERT INTO tbl_log VALUE ('','".$_SESSION['username']."',NOW(),'Menu volgorde aan het wijzigen')
");
$submit = $_POST['submit'];
$order = $_POST['order'];
if($submit){
if($order){
mysql_query("
UPDATE tbl_menu SET volgorde='".$order."' WHERE id='".$MenuInfo['id']."'
") or die(mysql_error());
mysql_query("
INSERT INTO tbl_log VALUE ('','".$_SESSION['username']."',NOW(),'Heeft de gegevens van ".$titel." gewijzigd')
");
echo "<script> window.location='index.php?pagina=menu&msg=18' </script>";
}
else
echo "<script> window.location='index.php?pagina=menu-wijzigen&err=4&id=".$id."' </script>";
}
?>
<h1>Volgorde wijzigen</h1><br />
<form action ="index.php?pagina=menu-volgorde" method="POST">
<table border="0" width="100%">
<?php
$MenuId = mysql_query("SELECT * FROM tbl_menu ORDER BY volgorde") or die(mysql_error());
while($MenuInfo = mysql_fetch_assoc($MenuId)){
echo "
<tr>
<td width='20%'><input type='text' name='order' value='".$MenuInfo['volgorde']."' style='width:100%;' /></td>
<td width='80%'>".$MenuInfo['titel']."</td>
</tr>
";
}
?>
</table>
<table border="0" width="100%">
<tr>
<td></td>
<td><input type="submit" name="submit" value="Wijzig" /></td>
</tr>
</table>
</form>
- Variabelen overschrijven op lijn 9 en 11 is onnodig. Je kan deze $_POST variabelen ook direct in je query gebruiken.
- Gebruik bij voorkeur de mysqli-functies, omdat de mysql()-functies gedateerd zijn
- Beveilig je $_POST ($_GET en $_COOKIE) met mysqli_real_escape_string() tegen SQL-Injection
- Zorg voor goede foutafhandeling op je mysqli_query(), en controleer of deze FALSE is, en toon dan een error met mysqli_error(). (liefst niet zichtbaar voor jan en alleman)
Gewijzigd op 15/06/2014 23:49:40 door - Ariën -
Waar komt de variabele $MenuInfo['id'] vandaan op regel 19?
En $titel en $id een paar regels na de update query?