geeft standaard de foutmelding velden invullen
Ben bezig om een script te schrijven maar wil niet echt lukken..
Bij toevoegen heb probeer ik checks in te bouwen. maar als ik dan erna toe ga zonder ik nog iets heb ingevuld komt die al met de melding dat ik niets heb ingevuld..
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
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
<?php
include('variabelen.php');
{
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
$aErrors = array();
if(empty($_POST['titel'])){
$aErrors[] ='- U bent vergeten om titel in te vullen';
}
if(empty($_POST['door'])){
$aErrors[] ='- U bent vergeten om doorin te vullen';
}
if(count($aErrors) == 0){
// geen fouten, verwerk het formulier, plaats hier je code
addslashes(htmlspecialchars($_POST['titel']));
addslashes(htmlspecialchars($_POST['artiest']));
addslashes(htmlspecialchars($_POST['sleevenr']));
addslashes(htmlspecialchars($_POST['trefwoorden']));
addslashes(htmlspecialchars($_POST['door']));
$query="INSERT INTO multimedia (titel, artiest, genre, datum, trefwoorden, minuten, sleevenr , jaar, door) VALUES (
'" . $_POST['titel'] . "',
'" . $_POST['artiest'] . "',
'" . $_POST['genre'] . "',
'" . date("Y-m-d H:i:s") . "',
'" . $_POST['trefwoorden'] . "',
'" . $_POST['minuten'] . "',
'" . $_POST['sleevenr'] . "',
'" . $_POST['jaar'] . "',
'" . $_POST['door'] . "')";
mysql_query($query) or die (mysql_error());
?>
<SCRIPT language="JavaScript">alert("De DVD is Succesvol toegevoegd")</SCRIPT>
<?php
}
else {
echo '<ul class="errors">'.PHP_EOL;
foreach ($aErrors as $sError) {
echo '<li>'.$sError.'</li>'.PHP_EOL;
}
echo '</ul>'.PHP_EOL;
}
}
?>
include('variabelen.php');
{
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
$aErrors = array();
if(empty($_POST['titel'])){
$aErrors[] ='- U bent vergeten om titel in te vullen';
}
if(empty($_POST['door'])){
$aErrors[] ='- U bent vergeten om doorin te vullen';
}
if(count($aErrors) == 0){
// geen fouten, verwerk het formulier, plaats hier je code
addslashes(htmlspecialchars($_POST['titel']));
addslashes(htmlspecialchars($_POST['artiest']));
addslashes(htmlspecialchars($_POST['sleevenr']));
addslashes(htmlspecialchars($_POST['trefwoorden']));
addslashes(htmlspecialchars($_POST['door']));
$query="INSERT INTO multimedia (titel, artiest, genre, datum, trefwoorden, minuten, sleevenr , jaar, door) VALUES (
'" . $_POST['titel'] . "',
'" . $_POST['artiest'] . "',
'" . $_POST['genre'] . "',
'" . date("Y-m-d H:i:s") . "',
'" . $_POST['trefwoorden'] . "',
'" . $_POST['minuten'] . "',
'" . $_POST['sleevenr'] . "',
'" . $_POST['jaar'] . "',
'" . $_POST['door'] . "')";
mysql_query($query) or die (mysql_error());
?>
<SCRIPT language="JavaScript">alert("De DVD is Succesvol toegevoegd")</SCRIPT>
<?php
}
else {
echo '<ul class="errors">'.PHP_EOL;
foreach ($aErrors as $sError) {
echo '<li>'.$sError.'</li>'.PHP_EOL;
}
echo '</ul>'.PHP_EOL;
}
}
?>
iemand een oplossing?
Aan het einde van regel 4 moet sowieso een accolade openen staan. Er is nog meer fout, maar dat is de eerste.
Een { na je include.
Geen { na de controle of er een formulier gepost is.
Geen foutcontrole op je query.
gebruik voor het inserten van gebruikersdata mysql_real_escape_string.
Erik Rijk schreef op 25.02.2008 09:17:
Er klopt weinig van je script :/
Geen { na de controle of er een formulier gepost is.
Geen { na de controle of er een formulier gepost is.
waar moet ik die zetten..
en heb de post in:
veranderd..
en regel 4 { toegevoegd
en in regel 3 wegehaald
maar werkt nog steeds niet
Gewijzigd op 01/01/1970 01:00:00 door Hugo L
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// hier je formuliercontrole
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<!--
HIER JE FORMULIER
-->
</body>
</html>
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// hier je formuliercontrole
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<!--
HIER JE FORMULIER
-->
</body>
</html>
Mag ik je hartelijk bedanken!
het werkt! :)
kan ik weer verder gaan stoeien ermee :)
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
$aErrors = array();
$aRequired = array ('titel', 'door');
if($_SERVER['REQUEST_METHOD'] == 'POST') {
foreach ($aRequired as $val) {
if (empty ($_POST[$val])) {
array_push ($aErrors, 'U bent vergeten ' . $val . ' in te vullen');
}
}
}
if (empty ($aErrors)) {
$sql = "
INSERT INTO multimedia
(
titel,
artiest,
genre,
datum,
trefwoorden,
minuten,
sleevenr,
jaar,
door
)
VALUES
(
'" . mysql_real_escape_string ($_POST['titel']) . "',
'" . mysql_real_escape_string ($_POST['artiest']) . "',
'" . mysql_real_escape_string ($_POST['genre']) . "',
NOW(),
'" . mysql_real_escape_string ($_POST['trefwoorden']) . "',
'" . mysql_real_escape_string ($_POST['minuten']) . "',
'" . mysql_real_escape_string ($_POST['sleevenr']) . "',
'" . mysql_real_escape_string ($_POST['jaar']) . "',
'" . mysql_real_escape_string ($_POST['door']) . "'
)
";
}
else {
// error laten zien
}
?>
$aErrors = array();
$aRequired = array ('titel', 'door');
if($_SERVER['REQUEST_METHOD'] == 'POST') {
foreach ($aRequired as $val) {
if (empty ($_POST[$val])) {
array_push ($aErrors, 'U bent vergeten ' . $val . ' in te vullen');
}
}
}
if (empty ($aErrors)) {
$sql = "
INSERT INTO multimedia
(
titel,
artiest,
genre,
datum,
trefwoorden,
minuten,
sleevenr,
jaar,
door
)
VALUES
(
'" . mysql_real_escape_string ($_POST['titel']) . "',
'" . mysql_real_escape_string ($_POST['artiest']) . "',
'" . mysql_real_escape_string ($_POST['genre']) . "',
NOW(),
'" . mysql_real_escape_string ($_POST['trefwoorden']) . "',
'" . mysql_real_escape_string ($_POST['minuten']) . "',
'" . mysql_real_escape_string ($_POST['sleevenr']) . "',
'" . mysql_real_escape_string ($_POST['jaar']) . "',
'" . mysql_real_escape_string ($_POST['door']) . "'
)
";
}
else {
// error laten zien
}
?>
Nog een vraag: wat wil je met minuten en jaren als je al een datum hebt?
de bedoeling van de datum is:
het kunnen zien wanneer ik een dvd aan mijn collectie heb toegevoegd.
als ik je script gebruik krijg ik de volgende notice:
Notice: Undefined index: titel in C:\xampp\htdocs\dvd\toevoegen.php on line 29 (volgens voorbeeld dus 27)
en dat t/m 35..
Klopt, hij hoort zo:
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
$aErrors = array();
$aRequired = array ('titel', 'door');
if($_SERVER['REQUEST_METHOD'] == 'POST') {
foreach ($aRequired as $val) {
if (empty ($_POST[$val])) {
array_push ($aErrors, 'U bent vergeten ' . $val . ' in te vullen');
}
}
if (empty ($aErrors)) {
$sql = "
INSERT INTO multimedia
(
titel,
artiest,
genre,
datum,
trefwoorden,
minuten,
sleevenr,
jaar,
door
)
VALUES
(
'" . mysql_real_escape_string ($_POST['titel']) . "',
'" . mysql_real_escape_string ($_POST['artiest']) . "',
'" . mysql_real_escape_string ($_POST['genre']) . "',
NOW(),
'" . mysql_real_escape_string ($_POST['trefwoorden']) . "',
'" . mysql_real_escape_string ($_POST['minuten']) . "',
'" . mysql_real_escape_string ($_POST['sleevenr']) . "',
'" . mysql_real_escape_string ($_POST['jaar']) . "',
'" . mysql_real_escape_string ($_POST['door']) . "'
)
";
}
else {
// error laten zien
}
}
?>
$aErrors = array();
$aRequired = array ('titel', 'door');
if($_SERVER['REQUEST_METHOD'] == 'POST') {
foreach ($aRequired as $val) {
if (empty ($_POST[$val])) {
array_push ($aErrors, 'U bent vergeten ' . $val . ' in te vullen');
}
}
if (empty ($aErrors)) {
$sql = "
INSERT INTO multimedia
(
titel,
artiest,
genre,
datum,
trefwoorden,
minuten,
sleevenr,
jaar,
door
)
VALUES
(
'" . mysql_real_escape_string ($_POST['titel']) . "',
'" . mysql_real_escape_string ($_POST['artiest']) . "',
'" . mysql_real_escape_string ($_POST['genre']) . "',
NOW(),
'" . mysql_real_escape_string ($_POST['trefwoorden']) . "',
'" . mysql_real_escape_string ($_POST['minuten']) . "',
'" . mysql_real_escape_string ($_POST['sleevenr']) . "',
'" . mysql_real_escape_string ($_POST['jaar']) . "',
'" . mysql_real_escape_string ($_POST['door']) . "'
)
";
}
else {
// error laten zien
}
}
?>
Geen foutmeldingen..
maar hij voegt hem niet toe aan de database..
als ik de sql echo en dna in mysql gooi pakt die hem wel..
Minuten is voor het aan minuten hoelang de dvd duurt.
Jaar is voor welk jaar de dvd is uitgekomen...
De code van Jan voert dan ook nergens een query uit en controleert ook nergens of de query is gelukt. Er ontbreekt dus nog een stuk code, dat mag je zelf even bouwen.
Dan is het logisch dat er niks in de DB komt.
Edit:
pgFrank was me weer eens voor :).
Gewijzigd op 01/01/1970 01:00:00 door Jelle Posthuma
hij werkt nou iig perfect..
mag ik jullie wederom hartelijk bedanken!