Undefined index
Ik zit met het volgende probleem:
Indien ik met radio of checkbox werk krijg ik de volgende melding.
"Undefined index" zodra ik dit verander in "text" werkt het wel, echter wil ik niet werken met een "text"
Op internet kwam ik een aantal dingen tegen, maar ben een newbie en kom maar net om de hoek kijken.
Alvast bedankt voor jullie reacties.
Groet
----------------------------------------
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
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
<?php
mysql_connect('localhost','xxxx','xxxx');
mysql_select_db('xxx') or die (mysql_error());
if(isset($_POST['verzenden']))
{
$sVoornaam = addslashes($_POST['voornaam']);
$sTussenvoegsel = addslashes($_POST['tussenvoegsel']);
$sAchternaam = addslashes($_POST['achternaam']);
$sSleutel1 = addslashes($_POST['sleutel1']);
$sSleutel2 = addslashes($_POST['sleutel2']);
$sSleutel3 = addslashes($_POST['sleutel3']);
$sSleutel4 = addslashes($_POST['sleutel4']);
$sSleutelhs = addslashes($_POST['sleutelhs']);
$sStatus1 = addslashes($_POST['status1']);
$sStatus2 = addslashes($_POST['status2']);
$sVoorraad = addslashes($_POST['voorraad']);
$sOpmerkingen = addslashes($_POST['opmerkingen']);
error_reporting(0);
mysql_query("INSERT INTO xxxx (voornaam, tussenvoegsel, achternaam, sleutel1, sleutel2, sleutel3, sleutel4, sleutelhs, status1, status2, voorraad, opmerkingen) VALUES ('".$sVoornaam."', '".$sTussenvoegsel."', '".$sAchternaam."', '".$sSleutel1."', '".$sSleutel2."', '".$sSleutel3."', '".$sSleutel4."', '".$sSleutelhs."', '".$sStatus1."', '".$sStatus2."', '".$sVoorraad."', '".$sOpmerkingen."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst';
}
else
{
?>
mysql_connect('localhost','xxxx','xxxx');
mysql_select_db('xxx') or die (mysql_error());
if(isset($_POST['verzenden']))
{
$sVoornaam = addslashes($_POST['voornaam']);
$sTussenvoegsel = addslashes($_POST['tussenvoegsel']);
$sAchternaam = addslashes($_POST['achternaam']);
$sSleutel1 = addslashes($_POST['sleutel1']);
$sSleutel2 = addslashes($_POST['sleutel2']);
$sSleutel3 = addslashes($_POST['sleutel3']);
$sSleutel4 = addslashes($_POST['sleutel4']);
$sSleutelhs = addslashes($_POST['sleutelhs']);
$sStatus1 = addslashes($_POST['status1']);
$sStatus2 = addslashes($_POST['status2']);
$sVoorraad = addslashes($_POST['voorraad']);
$sOpmerkingen = addslashes($_POST['opmerkingen']);
error_reporting(0);
mysql_query("INSERT INTO xxxx (voornaam, tussenvoegsel, achternaam, sleutel1, sleutel2, sleutel3, sleutel4, sleutelhs, status1, status2, voorraad, opmerkingen) VALUES ('".$sVoornaam."', '".$sTussenvoegsel."', '".$sAchternaam."', '".$sSleutel1."', '".$sSleutel2."', '".$sSleutel3."', '".$sSleutel4."', '".$sSleutelhs."', '".$sStatus1."', '".$sStatus2."', '".$sVoorraad."', '".$sOpmerkingen."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst';
}
else
{
?>
<form action=" " method="POST">
Voornaam: <input type="text" name="voornaam"><br />
Tussenvoegsel: <input type="text" name="tussenvoegsel"><br />
Achternaam: <input type="text" name="achternaam"><br />
Sleutel1: <input type="checkbox" name="sleutel1" value="1">
Sleutel2: <input type="checkbox" name="sleutel2" value="1"><br />
Sleutel3: <input type="checkbox" name="sleutel3" value="1"><br />
Sleutel4: <input type="checkbox" name="sleutel4" value="1"><br />
Sleutel HS: <input type="checkbox" name="sleutelhs" value="1"><br />
Status1: <input type="checkbox" name="status1" value="1"><br />
Status2: <input type="checkbox" name="status2" value="1"><br />
Voorraad:<input type="text" name="voorraad"><br />
Opmerkingen:<input type="text" name="opmerkingen"><br />
<input type="radio" name="bu" value="xcy">xcy<br />
<br />
<input type="submit" name="verzenden" value="verzenden">
</form>
2, stop met controleren op de naam van de submitbutton, deze komt maar in 1% van de gevallen door
3. stop met addslashes, lees eens iets over sql injectie
4. stop met het onnodig aanmaken van variabalen
5. stop met database tabelvelden te nummeren, gaat normaliseren
6. stop met data in de database te persen zonder controle en validatie
Als je bovenstaande punten toepast ben je af van de fout: undefined index
Note: sla eerst eens wat tutorials open alvorens zomaar bagger - html, php -te produceren
Gebruik if($_SERVER['REQUEST_METHOD'] == "POST")
- Gebruik GEEN addslashes, je wilt je data niet verneuken, gebruik liever mysql_real_escape_string()
- Je databasemodel is niet genormaliseerd. Als je velden gaat nummeren ben je sowieso al fout bezig.
- Waar is je foutafhandeling?
- error_reporting(0); is UIT DEN BOZE tijdens het ontwikkelen-
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
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
<?php
mysql_connect('localhost','xxxx','xxxx');
mysql_select_db('xxx') or die (mysql_error());
if(isset($_POST['verzenden']))
{
$sVoornaam = addslashes($_POST['voornaam']);
$sTussenvoegsel = addslashes($_POST['tussenvoegsel']);
$sAchternaam = addslashes($_POST['achternaam']);
if(!empty($_POST['sleutel1'])){
$sSleutel1 = addslashes($_POST['sleutel1']);
}if(!empty($_POST['sleutel2'])){
$sSleutel2 = addslashes($_POST['sleutel2']);
}if(!empty($_POST['sleutel3'])){
$sSleutel3 = addslashes($_POST['sleutel3']);
}if(!empty($_POST['sleutel4'])){
$sSleutel4 = addslashes($_POST['sleutel4']);
}if(!empty($_POST['sleutelhs'])){
$sSleutelhs = addslashes($_POST['sleutelhs']);
}if(!empty($_POST['status1'])){
$sStatus1 = addslashes($_POST['status1']);
}if(!empty($_POST['status1'])){
$sStatus2 = addslashes($_POST['status2']);
}
$sVoorraad = addslashes($_POST['voorraad']);
$sOpmerkingen = addslashes($_POST['opmerkingen']);
error_reporting(0);
mysql_query("INSERT INTO xxxx (voornaam, tussenvoegsel, achternaam, sleutel1, sleutel2, sleutel3, sleutel4, sleutelhs, status1, status2, voorraad, opmerkingen) VALUES ('".$sVoornaam."', '".$sTussenvoegsel."', '".$sAchternaam."', '".$sSleutel1."', '".$sSleutel2."', '".$sSleutel3."', '".$sSleutel4."', '".$sSleutelhs."', '".$sStatus1."', '".$sStatus2."', '".$sVoorraad."', '".$sOpmerkingen."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst';
}
else
{
?>
<form action="
Code (php)
1
<?=$_SERVER['PHP_SELF']?>
" method="POST">
Voornaam: <input type="text" name="voornaam"><br />
Tussenvoegsel: <input type="text" name="tussenvoegsel"><br />
Achternaam: <input type="text" name="achternaam"><br />
Sleutel1: <input type="checkbox" name="sleutel1" value="1">
Sleutel2: <input type="checkbox" name="sleutel2" value="1"><br />
Sleutel3: <input type="checkbox" name="sleutel3" value="1"><br />
Sleutel4: <input type="checkbox" name="sleutel4" value="1"><br />
Sleutel HS: <input type="checkbox" name="sleutelhs" value="1"><br />
Status1: <input type="checkbox" name="status1" value="1"><br />
Status2: <input type="checkbox" name="status2" value="1"><br />
Voorraad:<input type="text" name="voorraad"><br />
Opmerkingen:<input type="text" name="opmerkingen"><br />
<input type="radio" name="bu" value="xcy">xcy<br />
<br />
<input type="submit" name="verzenden" value="verzenden">
</form>
Code (php)
1
2
3
<?
}
?>
[size=xsmall][i]Toevoeging op 25/06/2011 22:56:33:[/i][/size]
Neem gelijk de tip mee van Aar
[size=xsmall][i]Toevoeging op 25/06/2011 22:56:52:[/i][/size]
Neem gelijk de tip mee van Aar
mysql_connect('localhost','xxxx','xxxx');
mysql_select_db('xxx') or die (mysql_error());
if(isset($_POST['verzenden']))
{
$sVoornaam = addslashes($_POST['voornaam']);
$sTussenvoegsel = addslashes($_POST['tussenvoegsel']);
$sAchternaam = addslashes($_POST['achternaam']);
if(!empty($_POST['sleutel1'])){
$sSleutel1 = addslashes($_POST['sleutel1']);
}if(!empty($_POST['sleutel2'])){
$sSleutel2 = addslashes($_POST['sleutel2']);
}if(!empty($_POST['sleutel3'])){
$sSleutel3 = addslashes($_POST['sleutel3']);
}if(!empty($_POST['sleutel4'])){
$sSleutel4 = addslashes($_POST['sleutel4']);
}if(!empty($_POST['sleutelhs'])){
$sSleutelhs = addslashes($_POST['sleutelhs']);
}if(!empty($_POST['status1'])){
$sStatus1 = addslashes($_POST['status1']);
}if(!empty($_POST['status1'])){
$sStatus2 = addslashes($_POST['status2']);
}
$sVoorraad = addslashes($_POST['voorraad']);
$sOpmerkingen = addslashes($_POST['opmerkingen']);
error_reporting(0);
mysql_query("INSERT INTO xxxx (voornaam, tussenvoegsel, achternaam, sleutel1, sleutel2, sleutel3, sleutel4, sleutelhs, status1, status2, voorraad, opmerkingen) VALUES ('".$sVoornaam."', '".$sTussenvoegsel."', '".$sAchternaam."', '".$sSleutel1."', '".$sSleutel2."', '".$sSleutel3."', '".$sSleutel4."', '".$sSleutelhs."', '".$sStatus1."', '".$sStatus2."', '".$sVoorraad."', '".$sOpmerkingen."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst';
}
else
{
?>
<form action="
Code (php)
1
<?=$_SERVER['PHP_SELF']?>
" method="POST">
Voornaam: <input type="text" name="voornaam"><br />
Tussenvoegsel: <input type="text" name="tussenvoegsel"><br />
Achternaam: <input type="text" name="achternaam"><br />
Sleutel1: <input type="checkbox" name="sleutel1" value="1">
Sleutel2: <input type="checkbox" name="sleutel2" value="1"><br />
Sleutel3: <input type="checkbox" name="sleutel3" value="1"><br />
Sleutel4: <input type="checkbox" name="sleutel4" value="1"><br />
Sleutel HS: <input type="checkbox" name="sleutelhs" value="1"><br />
Status1: <input type="checkbox" name="status1" value="1"><br />
Status2: <input type="checkbox" name="status2" value="1"><br />
Voorraad:<input type="text" name="voorraad"><br />
Opmerkingen:<input type="text" name="opmerkingen"><br />
<input type="radio" name="bu" value="xcy">xcy<br />
<br />
<input type="submit" name="verzenden" value="verzenden">
</form>
Code (php)
1
2
3
<?
}
?>
[size=xsmall][i]Toevoeging op 25/06/2011 22:56:33:[/i][/size]
Neem gelijk de tip mee van Aar
[size=xsmall][i]Toevoeging op 25/06/2011 22:56:52:[/i][/size]
Neem gelijk de tip mee van Aar
Stop met het gebruik van empty, dit is echt een nutteloze functie, gebruik gewoon de normale comparions operator, dat is 100% betrouwbaar om te kijken of er wel iets is ingevuld.
@Bob van der Valk
Oh en als je iemands code oppakt, probeer dan gelijk alle fouten eruit te fietsen, want op deze manier maak je van z'n script een nog grotere bagger dan dat het al was.
En volg mijn tips ook even op om het goed AF te maken. ;-)
Toevoeging op 25/06/2011 23:05:36:
ja dat had ik erin gezet maar dat ging nog ergens mis
Noppes Homeland op 25/06/2011 23:00:53:
Stop met het gebruik van empty, dit is echt een nutteloze functie
Waarom is empty een nutteloze functie?
heb zelf het nut van deze functie ook nog nooit gevonden. Liever isset() of een vergelijking.