gegevens opslaan
Ik heb nu deze code:
<table border="1" bordercolor="#666666" cellpadding="0" cellspacing="0" width="75%">
<tr>
<td background="images/bg.bmp"><center><b><a href="?p=beheer">Beheer</a> - Nieuws Toevoegen</b></center></td>
</tr>
<tr>
<td>
<form method="POST" action="">
<table border="0" width="100%">
<tr>
<td width="50%">Titel</td><td width="50%"><input type="text" name="naam" size="36"></td>
</tr>
<tr>
<td width="50%">Nieuws</td><td width="50%"><textarea rows="5" name="nieuws" cols="20"></textarea></td>
</tr>
<tr>
<td width="50%">Datum</td><td width="50%"><input type="datum" name="datum" size="36"></td>
</tr>
<tr>
<td width="50%"></td><td width="50%"><input type="submit" value="Verzenden" name="verzenden"><input type="reset" value="Opnieuw" name="reset"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
Maar als ik dan de gevgevens intyp en op verzenden klik dan slaan de gegevens die ik heb ingetypt in een kolom op zoals het moet, maar dan word er ook nog eens een andere kolom toegevoegd zonder gegevens. Ik wil graag dat er dan maar 1 kolom word toegevoegd. Hoe doe ik dat dan?
<table border="1" bordercolor="#666666" cellpadding="0" cellspacing="0" width="75%">
<tr>
<td background="images/bg.bmp"><center><b><a href="?p=beheer">Beheer</a> - Nieuws Toevoegen</b></center></td>
</tr>
<tr>
<td>
<form method="POST" action="">
<table border="0" width="100%">
<tr>
<td width="50%">Titel</td><td width="50%"><input type="text" name="naam" size="36"></td>
</tr>
<tr>
<td width="50%">Nieuws</td><td width="50%"><textarea rows="5" name="nieuws" cols="20"></textarea></td>
</tr>
<tr>
<td width="50%">Datum</td><td width="50%"><input type="datum" name="datum" size="36"></td>
</tr>
<tr>
<td width="50%"></td><td width="50%"><input type="submit" value="Verzenden" name="verzenden"><input type="reset" value="Opnieuw" name="reset"></td>
</tr>
</table>
</form>
Code (php)
1
2
3
4
2
3
4
<?php
$query="INSERT INTO nieuws (naam, nieuws, datum) VALUES ('".$_POST['naam']."', '".$_POST['nieuws']."', '".$_POST['datum']."')";
mysql_query($query) or die (mysql_error());
?>
$query="INSERT INTO nieuws (naam, nieuws, datum) VALUES ('".$_POST['naam']."', '".$_POST['nieuws']."', '".$_POST['datum']."')";
mysql_query($query) or die (mysql_error());
?>
</td>
</tr>
</table>
Maar als ik dan de gevgevens intyp en op verzenden klik dan slaan de gegevens die ik heb ingetypt in een kolom op zoals het moet, maar dan word er ook nog eens een andere kolom toegevoegd zonder gegevens. Ik wil graag dat er dan maar 1 kolom word toegevoegd. Hoe doe ik dat dan?
Bij het openen van de pagina word er al een leeg record ingevoegd, omdat je dan een query uitvoerd maar $_POST['naam'] etc. zijn nog leeg.
Even eerst een controle doen voordat de query word uitgevoerd:
Even eerst een controle doen voordat de query word uitgevoerd:
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
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
<table border="1" bordercolor="#666666" cellpadding="0" cellspacing="0" width="75%">
<tr>
<td background="images/bg.bmp"><center><b><a href="?p=beheer">Beheer</a> - Nieuws Toevoegen</b></center></td>
</tr>
<tr>
<td>
<form method="POST" action="
<? echo $PHP_SELF; ?>
">
<table border="0" width="100%">
<tr>
<td width="50%">Titel</td><td width="50%"><input type="text" name="naam" size="36"></td>
</tr>
<tr>
<td width="50%">Nieuws</td><td width="50%"><textarea rows="5" name="nieuws" cols="20"></textarea></td>
</tr>
<tr>
<td width="50%">Datum</td><td width="50%"><input type="datum" name="datum" size="36"></td>
</tr>
<tr>
<td width="50%"></td><td width="50%"><input type="submit" value="Verzenden" name="verzenden"><input type="reset" value="Opnieuw" name="reset"></td>
</tr>
</table>
</form>
<?php
if (!empty ($_POST['naam']) AND !empty ($_POST['nieuws']) AND !empty ($_POST['datum'])) {
$query="INSERT INTO nieuws (naam, nieuws, datum) VALUES ('".$_POST['naam']."', '".$_POST['nieuws']."', '".$_POST['datum']."')";
mysql_query($query) or die (mysql_error());
}
?>
</td>
</tr>
</table>
<tr>
<td background="images/bg.bmp"><center><b><a href="?p=beheer">Beheer</a> - Nieuws Toevoegen</b></center></td>
</tr>
<tr>
<td>
<form method="POST" action="
<? echo $PHP_SELF; ?>
">
<table border="0" width="100%">
<tr>
<td width="50%">Titel</td><td width="50%"><input type="text" name="naam" size="36"></td>
</tr>
<tr>
<td width="50%">Nieuws</td><td width="50%"><textarea rows="5" name="nieuws" cols="20"></textarea></td>
</tr>
<tr>
<td width="50%">Datum</td><td width="50%"><input type="datum" name="datum" size="36"></td>
</tr>
<tr>
<td width="50%"></td><td width="50%"><input type="submit" value="Verzenden" name="verzenden"><input type="reset" value="Opnieuw" name="reset"></td>
</tr>
</table>
</form>
<?php
if (!empty ($_POST['naam']) AND !empty ($_POST['nieuws']) AND !empty ($_POST['datum'])) {
$query="INSERT INTO nieuws (naam, nieuws, datum) VALUES ('".$_POST['naam']."', '".$_POST['nieuws']."', '".$_POST['datum']."')";
mysql_query($query) or die (mysql_error());
}
?>
</td>
</tr>
</table>
Gewijzigd op 01/01/1970 01:00:00 door ik ben weg
Zet nooit rechtstreeks POST variabelen in een INSERT query. Lees even iets over MySQL injection.
En hoe moet het dan wel?
EDIT: zag de eerste reactie niet
Nu werkt het wel :D
EDIT: zag de eerste reactie niet
Nu werkt het wel :D
Gewijzigd op 01/01/1970 01:00:00 door Wouter
@ Wouter: het eerste voorbeeld zal wel werken ja. Het is alleen uiterst onveilig.
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
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
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL);
$msg = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// hier controleren of je waarden geldig zijn, dus niet empty
// bij datums hier controleren of het een geldige datum is, dus niet 31 feb 2008
$sql = "
INSERT INTO nieuws
(
naam,
post,
datum
)
VALUES
(
" . mysql_real_escape_string ($_POST['naam']) . ",
" . mysql_real_escape_string ($_POST['post']) . ",
" . mysql_real_escape_string ($_POST['datum']) . "
)
";
if (!mysql_query ($sql)) {
$msg = mysql_error ();
}
else {
if (mysql_affected_rows () == 1) {
$msg = 'Record is toegevoegd';
}
else {
$msg = 'De query is gelukt, maar er is niets toegevoegd';
}
}
}
?>
ini_set ('display_errors', 1);
error_reporting (E_ALL);
$msg = '';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// hier controleren of je waarden geldig zijn, dus niet empty
// bij datums hier controleren of het een geldige datum is, dus niet 31 feb 2008
$sql = "
INSERT INTO nieuws
(
naam,
post,
datum
)
VALUES
(
" . mysql_real_escape_string ($_POST['naam']) . ",
" . mysql_real_escape_string ($_POST['post']) . ",
" . mysql_real_escape_string ($_POST['datum']) . "
)
";
if (!mysql_query ($sql)) {
$msg = mysql_error ();
}
else {
if (mysql_affected_rows () == 1) {
$msg = 'Record is toegevoegd';
}
else {
$msg = 'De query is gelukt, maar er is niets toegevoegd';
}
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn




