Update werkt niet
Hallo, ik heb een pagina gemaakt welke een record in mijn mysql database moet aanpassen.
Probleem is dat ik het niet werkend krijg. de fout heb ik na enkele uren nog niet gevonden.
Dit is de case:
van op een overzicht pagina selecteer ik een record (met id) en stuur dit naar mijn update pagina.
op de update pagina worden de juiste gegevens getoond.
na aanpassen van de gegevens druk ik op de submit knop en dan gaat mijn scherm leeg.
het record werd eveneens niet aangepast als ik terug naar de tabellen kijk.
kan iemand mij verder op weg helpen?
alvast bedankt!!
Dit is de code:
Probleem is dat ik het niet werkend krijg. de fout heb ik na enkele uren nog niet gevonden.
Dit is de case:
van op een overzicht pagina selecteer ik een record (met id) en stuur dit naar mijn update pagina.
op de update pagina worden de juiste gegevens getoond.
na aanpassen van de gegevens druk ik op de submit knop en dan gaat mijn scherm leeg.
het record werd eveneens niet aangepast als ik terug naar de tabellen kijk.
kan iemand mij verder op weg helpen?
alvast bedankt!!
Dit is de code:
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<meta http-equiv="Refresh" content="300">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<?php
// START PHP CODES. THIS PART MUST ON THE TOP OF THIS PAGE.
// Connect database.
include("connect.php");
// ***** This part will process when you Click on "Submit" button *****
// Check, if you clicked "Submit" button
if($_POST['Submit']){
// Get parameters from form.
$id=$_POST['id'];
$Catnr=$_POST['Catnr'];
$geleider=$_POST['geleider'];
$naamhond=$_POST['naamhond'];
$land=$_POST['land'];
$A=$_POST['A'];
$B=$_POST['B'];
$C=$_POST['C'];
$Tot=$_POST['Tot'];
$DK=$_POST['DK'];
$Hurt=$_POST['Hurt'];
// Do update statement.
mysql_query("update Registrations_IPO set A='$A', B='$B', C='$C',Tot='$Tot', DK='$DK' Hurt='$Hurt' where id='$id'");
// Re-direct this page to ipo_voor_update.php.
header("location:ipo_voor_update.php");
exit;
}
// ************* End update part *************
// *** Select data to show on text fields in form. ***
// Get id parameter (GET method) from ipo_voor_update.php
$id=$_GET['id'];
// Get records in all columns from table where column id equal in $id and put it in $result.
$result=mysql_query("select * from Registrations_IPO where id='$id'");
// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);
// Close database connection.
mysql_close();
?>
<!-- END OF PHP CODES AND START HTML TAGS -->
<html>
<body>
<!-- set this form to POST method and target this form to itself ($PHP_SELF;)-->
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<p>Catnr.
<!-- name of this text field is "Catnr" -->
<input name="Catnr" type="text" id="Catnr" value="<? echo $row['Catnr']; ?>"/>
<br /><br />
Geleider:
<!-- name of this text field is "geleider" -->
<input name="geleider" type="text" id="geleider" value="<? echo $row['geleider']; ?>"/>
<br /><br />
Naam hond:
<!-- name of this text field is "naamhond" -->
<input name="naamhond" type="text" id="naamhond" value="<? echo $row['naamhond']; ?>"/>
<br /><br />
Land:
<!-- name of this text field is "lad" -->
<input name="land" type="text" id="land" value="<? echo $row['land']; ?>"/>
<br /><br />
A:
<!-- name of this text field is "A" -->
<input name="A" type="text" id="A" value="<? echo $row['A']; ?>"/>
<br /><br />
B:
<!-- name of this text field is "B" -->
<input name="B" type="text" id="B" value="<? echo $row['B']; ?>"/>
<br /><br />
C:
<!-- name of this text field is "C" -->
<input name="C" type="text" id="C" value="<? echo $row['C']; ?>"/>
<br /><br />
Tot:
<!-- name of this text field is "Tot" -->
<input name="Tot" type="text" id="Tot" value="<? echo $row['Tot']; ?>"/>
<br /><br />
DK:
<!-- name of this text field is "DK" -->
<input name="DK" type="text" id="DK" value="<? echo $row['DK']; ?>"/>
<br /><br />
Hurt:
<!-- name of this text field is "Hurt" -->
<input name="Hurt" type="text" id="Hurt" value="<? echo $row['Hurt']; ?>"/>
<br /><br />
<input type="submit" name="Submit" value="Submit" />
<br />
</form>
</body>
</html>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<?php
// START PHP CODES. THIS PART MUST ON THE TOP OF THIS PAGE.
// Connect database.
include("connect.php");
// ***** This part will process when you Click on "Submit" button *****
// Check, if you clicked "Submit" button
if($_POST['Submit']){
// Get parameters from form.
$id=$_POST['id'];
$Catnr=$_POST['Catnr'];
$geleider=$_POST['geleider'];
$naamhond=$_POST['naamhond'];
$land=$_POST['land'];
$A=$_POST['A'];
$B=$_POST['B'];
$C=$_POST['C'];
$Tot=$_POST['Tot'];
$DK=$_POST['DK'];
$Hurt=$_POST['Hurt'];
// Do update statement.
mysql_query("update Registrations_IPO set A='$A', B='$B', C='$C',Tot='$Tot', DK='$DK' Hurt='$Hurt' where id='$id'");
// Re-direct this page to ipo_voor_update.php.
header("location:ipo_voor_update.php");
exit;
}
// ************* End update part *************
// *** Select data to show on text fields in form. ***
// Get id parameter (GET method) from ipo_voor_update.php
$id=$_GET['id'];
// Get records in all columns from table where column id equal in $id and put it in $result.
$result=mysql_query("select * from Registrations_IPO where id='$id'");
// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);
// Close database connection.
mysql_close();
?>
<!-- END OF PHP CODES AND START HTML TAGS -->
<html>
<body>
<!-- set this form to POST method and target this form to itself ($PHP_SELF;)-->
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<p>Catnr.
<!-- name of this text field is "Catnr" -->
<input name="Catnr" type="text" id="Catnr" value="<? echo $row['Catnr']; ?>"/>
<br /><br />
Geleider:
<!-- name of this text field is "geleider" -->
<input name="geleider" type="text" id="geleider" value="<? echo $row['geleider']; ?>"/>
<br /><br />
Naam hond:
<!-- name of this text field is "naamhond" -->
<input name="naamhond" type="text" id="naamhond" value="<? echo $row['naamhond']; ?>"/>
<br /><br />
Land:
<!-- name of this text field is "lad" -->
<input name="land" type="text" id="land" value="<? echo $row['land']; ?>"/>
<br /><br />
A:
<!-- name of this text field is "A" -->
<input name="A" type="text" id="A" value="<? echo $row['A']; ?>"/>
<br /><br />
B:
<!-- name of this text field is "B" -->
<input name="B" type="text" id="B" value="<? echo $row['B']; ?>"/>
<br /><br />
C:
<!-- name of this text field is "C" -->
<input name="C" type="text" id="C" value="<? echo $row['C']; ?>"/>
<br /><br />
Tot:
<!-- name of this text field is "Tot" -->
<input name="Tot" type="text" id="Tot" value="<? echo $row['Tot']; ?>"/>
<br /><br />
DK:
<!-- name of this text field is "DK" -->
<input name="DK" type="text" id="DK" value="<? echo $row['DK']; ?>"/>
<br /><br />
Hurt:
<!-- name of this text field is "Hurt" -->
<input name="Hurt" type="text" id="Hurt" value="<? echo $row['Hurt']; ?>"/>
<br /><br />
<input type="submit" name="Submit" value="Submit" />
<br />
</form>
</body>
</html>
Gewijzigd op 28/04/2013 20:40:31 door - Ariën -
Dat komt omdat het id continu uit de lucht moet komen vallen. Het staat nergens in je form en gaat dus niet mee in je post waardes. Het id kan je dus niet uitlezen uit je $_POST array en dus kan je ook geen record updaten. Vervolgens redirect je weer naar de update pagina, maar vergeet je wederom het id mee te geven in de url, zodat als je het form wilt opmaken, het id niet uitgelezen kan worden uit $_GET en je dus een lege resultset uit je database krijgt.
Wat Erwin zegt, is ook de strekking van wat ik had willen zeggen. ;-)
Ik heb echter nog een aanvulling: als ik in een database een veld met de naam 'id' heb, associeer ik dat met een getal (INT, BIGINT, of wat dan ook), en niet met een string. Het kan zijn dat het in dit geval inderdaad een string is (dan vind ik de term 'id' niet handig gekozen), maar als het een getal is, moet je dat in je query niet tussen quotes zetten.
Ik heb echter nog een aanvulling: als ik in een database een veld met de naam 'id' heb, associeer ik dat met een getal (INT, BIGINT, of wat dan ook), en niet met een string. Het kan zijn dat het in dit geval inderdaad een string is (dan vind ik de term 'id' niet handig gekozen), maar als het een getal is, moet je dat in je query niet tussen quotes zetten.
Bedankt voor de reactie's, ik zal de code aanpassen.
Geert.
Toevoeging op 28/04/2013 12:00:56:
Erwin of Willem, zou het heel veel gevraagd zijn om de aanpassing te doen?
ik geraak er niet direct uit en zou het morgenvroeg al nodig hebben...
de refresh heb ik er al uitgehaald.
Geert.
Geert.
Toevoeging op 28/04/2013 12:00:56:
Erwin of Willem, zou het heel veel gevraagd zijn om de aanpassing te doen?
ik geraak er niet direct uit en zou het morgenvroeg al nodig hebben...
de refresh heb ik er al uitgehaald.
Geert.
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<?php
// START PHP CODES. THIS PART MUST ON THE TOP OF THIS PAGE.
// Connect database.
include("connect.php");
// ***** This part will process when you Click on "Submit" button *****
// Check, if you clicked "Submit" button
if($_POST['Submit']){
// Get parameters from form.
$id=$_POST['id'];
$Catnr=$_POST['Catnr'];
$geleider=$_POST['geleider'];
$naamhond=$_POST['naamhond'];
$land=$_POST['land'];
$A=$_POST['A'];
$B=$_POST['B'];
$C=$_POST['C'];
$Tot=$_POST['Tot'];
$DK=$_POST['DK'];
$Hurt=$_POST['Hurt'];
// Do update statement.
mysql_query("update Registrations_IPO set A='$A', B='$B', C='$C',Tot='$Tot', DK='$DK' Hurt='$Hurt' where id=$id'");
// Re-direct this page to ipo_voor_update.php.
header("location:ipo_voor_update.php");
exit;
}
// ************* End update part *************
// *** Select data to show on text fields in form. ***
// Get id parameter (GET method) from ipo_voor_update.php
$id=$_GET['id'];
// Get records in all columns from table where column id equal in $id and put it in $result.
$result=mysql_query("select * from Registrations_IPO where id='$id'");
// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);
// Close database connection.
mysql_close();
?>
<!-- END OF PHP CODES AND START HTML TAGS -->
<html>
<body>
<!-- set this form to POST method and target this form to itself ($PHP_SELF;)-->
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<p>ID:
<!-- name of this text field is "Catnr" -->
<input name="id" type="text" id="id" value="<? echo $row['id']; ?>"/>
<br /><br />
<p>Catnr.
<!-- name of this text field is "Catnr" -->
<input name="Catnr" type="text" id="Catnr" value="<? echo $row['Catnr']; ?>"/>
<br /><br />
Geleider:
<!-- name of this text field is "geleider" -->
<input name="geleider" type="text" id="geleider" value="<? echo $row['geleider']; ?>"/>
<br /><br />
Naam hond:
<!-- name of this text field is "naamhond" -->
<input name="naamhond" type="text" id="naamhond" value="<? echo $row['naamhond']; ?>"/>
<br /><br />
Land:
<!-- name of this text field is "lad" -->
<input name="land" type="text" id="land" value="<? echo $row['land']; ?>"/>
<br /><br />
A:
<!-- name of this text field is "A" -->
<input name="A" type="text" id="A" value="<? echo $row['A']; ?>"/>
<br /><br />
B:
<!-- name of this text field is "B" -->
<input name="B" type="text" id="B" value="<? echo $row['B']; ?>"/>
<br /><br />
C:
<!-- name of this text field is "C" -->
<input name="C" type="text" id="C" value="<? echo $row['C']; ?>"/>
<br /><br />
Tot:
<!-- name of this text field is "Tot" -->
<input name="Tot" type="text" id="Tot" value="<? echo $row['Tot']; ?>"/>
<br /><br />
DK:
<!-- name of this text field is "DK" -->
<input name="DK" type="text" id="DK" value="<? echo $row['DK']; ?>"/>
<br /><br />
Hurt:
<!-- name of this text field is "Hurt" -->
<input name="Hurt" type="text" id="Hurt" value="<? echo $row['Hurt']; ?>"/>
<br /><br />
<input type="submit" name="Submit" value="Submit" />
<br />
</form>
</body>
</html>
<?php
// START PHP CODES. THIS PART MUST ON THE TOP OF THIS PAGE.
// Connect database.
include("connect.php");
// ***** This part will process when you Click on "Submit" button *****
// Check, if you clicked "Submit" button
if($_POST['Submit']){
// Get parameters from form.
$id=$_POST['id'];
$Catnr=$_POST['Catnr'];
$geleider=$_POST['geleider'];
$naamhond=$_POST['naamhond'];
$land=$_POST['land'];
$A=$_POST['A'];
$B=$_POST['B'];
$C=$_POST['C'];
$Tot=$_POST['Tot'];
$DK=$_POST['DK'];
$Hurt=$_POST['Hurt'];
// Do update statement.
mysql_query("update Registrations_IPO set A='$A', B='$B', C='$C',Tot='$Tot', DK='$DK' Hurt='$Hurt' where id=$id'");
// Re-direct this page to ipo_voor_update.php.
header("location:ipo_voor_update.php");
exit;
}
// ************* End update part *************
// *** Select data to show on text fields in form. ***
// Get id parameter (GET method) from ipo_voor_update.php
$id=$_GET['id'];
// Get records in all columns from table where column id equal in $id and put it in $result.
$result=mysql_query("select * from Registrations_IPO where id='$id'");
// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);
// Close database connection.
mysql_close();
?>
<!-- END OF PHP CODES AND START HTML TAGS -->
<html>
<body>
<!-- set this form to POST method and target this form to itself ($PHP_SELF;)-->
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<p>ID:
<!-- name of this text field is "Catnr" -->
<input name="id" type="text" id="id" value="<? echo $row['id']; ?>"/>
<br /><br />
<p>Catnr.
<!-- name of this text field is "Catnr" -->
<input name="Catnr" type="text" id="Catnr" value="<? echo $row['Catnr']; ?>"/>
<br /><br />
Geleider:
<!-- name of this text field is "geleider" -->
<input name="geleider" type="text" id="geleider" value="<? echo $row['geleider']; ?>"/>
<br /><br />
Naam hond:
<!-- name of this text field is "naamhond" -->
<input name="naamhond" type="text" id="naamhond" value="<? echo $row['naamhond']; ?>"/>
<br /><br />
Land:
<!-- name of this text field is "lad" -->
<input name="land" type="text" id="land" value="<? echo $row['land']; ?>"/>
<br /><br />
A:
<!-- name of this text field is "A" -->
<input name="A" type="text" id="A" value="<? echo $row['A']; ?>"/>
<br /><br />
B:
<!-- name of this text field is "B" -->
<input name="B" type="text" id="B" value="<? echo $row['B']; ?>"/>
<br /><br />
C:
<!-- name of this text field is "C" -->
<input name="C" type="text" id="C" value="<? echo $row['C']; ?>"/>
<br /><br />
Tot:
<!-- name of this text field is "Tot" -->
<input name="Tot" type="text" id="Tot" value="<? echo $row['Tot']; ?>"/>
<br /><br />
DK:
<!-- name of this text field is "DK" -->
<input name="DK" type="text" id="DK" value="<? echo $row['DK']; ?>"/>
<br /><br />
Hurt:
<!-- name of this text field is "Hurt" -->
<input name="Hurt" type="text" id="Hurt" value="<? echo $row['Hurt']; ?>"/>
<br /><br />
<input type="submit" name="Submit" value="Submit" />
<br />
</form>
</body>
</html>
Bewerkt:
Scripts tussen [code]-tags gezet.
Gewijzigd op 28/04/2013 20:39:47 door - Ariën -
Eerste probleem heb je al opgelost, het id staat nu in het form, je update zou dus al moeten werken. Enige wat ik zou veranderen is er een hidden input van maken, in plaats van een text input. De gebruiker moet dit niet kunnen aanpassen.
Tweede probleem kan je eenvoudig oplossen door in je redirect het id mee te geven:
Tweede probleem kan je eenvoudig oplossen door in je redirect het id mee te geven:
Denk ook aan beveiliging want nu ben je lek.
Toevoeging op 28/04/2013 12:17:52:
Zie mysql_real_escape_string().
Toevoeging op 28/04/2013 12:17:52:
Zie mysql_real_escape_string().
San The, bedankt voor de tip.
Maar ik geraak er momenteel niet uit, dus zal ik het scriptje verwijderen tot ik de tijd vind om het op de goede manier te doen.
Tenzij er iemand bereid is om me verder te helpen.
Na de aanpassingen werkt het nog niet...
Geert.
Maar ik geraak er momenteel niet uit, dus zal ik het scriptje verwijderen tot ik de tijd vind om het op de goede manier te doen.
Tenzij er iemand bereid is om me verder te helpen.
Na de aanpassingen werkt het nog niet...
Geert.
In je update-query zie ik nu staan: where id=$id'
Dat quote'je klopt niet. Aangezien je select-query wél lijkt te werken, en daarin $id tussen quotes staat, lijkt het me dat dat bij je update-query ook moet. In ieder geval: óf 2 quotes, óf geen een, maar een oneven aantal quotes geeft garantie op problemen. ;-)
Tip: voeg foutafhandeling toe aan je queries, dan zie je het wat sneller als er iets niet klopt. Je krijgt dan iets als:
Dat quote'je klopt niet. Aangezien je select-query wél lijkt te werken, en daarin $id tussen quotes staat, lijkt het me dat dat bij je update-query ook moet. In ieder geval: óf 2 quotes, óf geen een, maar een oneven aantal quotes geeft garantie op problemen. ;-)
Tip: voeg foutafhandeling toe aan je queries, dan zie je het wat sneller als er iets niet klopt. Je krijgt dan iets als:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$result = mysql_query("update [etc]");
if (!$result)
{
printf ("Query mislukt op regel %d: %s\n", __LINE__, mysql_error());
exit;
}
?>
$result = mysql_query("update [etc]");
if (!$result)
{
printf ("Query mislukt op regel %d: %s\n", __LINE__, mysql_error());
exit;
}
?>
Gewijzigd op 28/04/2013 17:17:11 door Willem vp
Willem, bedankt voor de tip, ik probeer toch nog verder deze avond tot het werkt!
Geert.
Toevoeging op 28/04/2013 17:54:31:
Het werkt! toch gedeeltelijk dan.
de update gaat door, maar ik moet de redirect nog veder aanpassen zodat de wijzigingen direct op het scherm komen.
Geert.
Toevoeging op 28/04/2013 17:54:31:
Het werkt! toch gedeeltelijk dan.
de update gaat door, maar ik moet de redirect nog veder aanpassen zodat de wijzigingen direct op het scherm komen.




