Update met mysql werkt niet
Ik heb een textarea waarmee je je berichtje kan typen en dan toevoegen en dan wordt het aan de database toegevoegd en in de andere pagina geupdated.
Als je bericht wil verwijderen moet je in een textarea de id typen en met de knop wordt de id verwijderd uit de database.
Alvorens je het bericht wil bijwerken moet je de id in textarea typen en dan wordt het bericht opgehaald. Hier kan je je bericht aanpassen en dan vervolgens op update klikken. Helaas werkt het hier niet goed:
Quote:
$query = "UPDATE tblBlog SET message ='" .$boodschap. "' WHERE id='" .$id. "'";
Uitkomst bij echo is dan: UPDATE tblBlog SET message ='Tekstvoorbeeld!' WHERE id='10'
Ik heb ook geprobeerd, maar zonder succes:
Quote:
$query = "UPDATE tblBlog SET message ='" .$boodschap. "' WHERE id=" .$id.;
Als ik manueel inzet, dan werkt het wel goed:
Quote:
$query = "UPDATE tblBlog SET message ='Tekstvoorbeeld' WHERE id=10";
Message is string, id is integer.
Quote:
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
// inloggegevens om database op te halen
include("inlog.inc");
$global_dbh = mysql_connect($hostname, $username, $password) or die("Failure to communicate with database");;
mysql_select_db($db, $global_dbh);
// Initialiseren anders krijg je Undefined variable-foutmelding
$boodschap = "";
$datum = "";
$success_msg = "";
$id = "";
// Knop Verwijderen
if(isset($_POST['Verwijder'])){
if(!empty($_POST['boodschap'])) {
$id = $_POST['boodschap'];
$sql_query = "SELECT * FROM tblBlog WHERE id=$id";
$res = mysql_query($sql_query) or die (mysql_error());
if(mysql_num_rows($res)) {
$sql_query = "DELETE FROM tblBlog WHERE id=".$_POST['boodschap'];
mysql_query($sql_query) or die (mysql_error());
echo "<div class='succes'>Het bericht is succesvol verwijderd!</div>";
$toegevoegd = True;
}
else {
echo "<div class='errors'>Ingevoerde waarde ID bestaat niet of is al verwijderd!</div>";
$toegevoegd = false;
}
}
else {
echo "<div class='errors'>Ongeldig bericht ID<br /></div>";
$toegevoegd = false;
}
// Indien correct ingevoerd, ga dan naar Blog-pagina
if ($toegevoegd) {
header("location: blog.php");
exit;
}
}
// Knop Toevoegen
if(isset($_POST['Toevoeg'])){
if(!empty($_POST['boodschap'])) {
// Voeg de waarden toe aan de tabel
$boodschap = $_POST['boodschap'];
$datum = gmDate("Y-m-d\TH:i:s\Z");
$query = "INSERT INTO tblBlog (id, message, tijd) VALUES (null, '$boodschap', '$datum')";
$result = mysql_query($query);
// Controleer of de waarden zijn ingevoerd in de tabel
if (mysql_affected_rows() == 1) {
$success_msg .= '<P>Jouw blogbericht is succesvol ingevoerd.</P>';
$toegevoegd = True;
} else {
error_log(mysql_error());
$success_msg = '<P>Er is helaas iets misgegaan. Probeer nog een keer.</P>';
$toegevoegd = false;
}
// Indien correct ingevoerd, ga dan naar Blog-pagina
if ($toegevoegd) {
header("location: blog.php");
exit;
}
}
}
// Knop bijwerken
if(isset($_POST['Update'])){
$boodschap = $_POST['boodschap'];
if (intval($boodschap) > 0) {
$id = $_POST['boodschap'];
$query = "SELECT * FROM tblBlog WHERE id=$id";
$result = mysql_query($query);
$column_count = mysql_num_fields($result); // or die ("display_db_query:" . mysql_error());
while ($row = mysql_fetch_row($result)) {
$boodschap = $row[1];
}
} else {
$id = $_POST['id'];
$datum = gmDate("Y-m-d\TH:i:s\Z");
$query = "UPDATE tblBlog SET message ='" .$boodschap. "' WHERE id='" .$id. "'";
$result = mysql_query($query) or die ("display_db_query:" . mysql_error());
// Controleer of de waarden zijn ingevoerd in de tabel
if (mysql_affected_rows() == 1) {
$success_msg .= '<P>Jouw blogbericht is succesvol ingevoerd.</P>';
$toegevoegd = True;
} else {
error_log(mysql_error());
$success_msg = '<P>Er is helaas iets misgegaan. Probeer nog een keer.</P>';
echo($query);
$toegevoegd = false;
}
}
// Indien correct ingevoerd, ga dan naar Blog-pagina
/*if ($toegevoegd) {
header("location: blog.php");
exit;
}
*/
}
$thispage = $_SERVER['PHP_SELF']; //Dit is nodig voor heredoc
$form_page = <<< EOFORMPAGE
<HTML>
<HEAD>
</HEAD>
<BODY>
<H1>Typ uw blog in:</H1>
$success_msg
<FORM METHOD="post" ACTION="$thispage">
<TABLE BORDER=0 CELLPADDING=10 WIDTH=100%>
<tr><td>Bericht:</td><td><TEXTAREA NAME="boodschap" ROWS=10 COLS=50>$boodschap</TEXTAREA></td></tr>
<tr><td> </td><td><INPUT TYPE="hidden" name="datum" value="$datum"></td></tr>
<tr><td> </td><td><INPUT TYPE="hidden" name="id" value="$id"></td></tr></table>
<table><TR><TD><INPUT type="submit" name="Toevoeg" value="Toevoeg"></TD>
<TD><INPUT type="submit" name="Verwijder" value="Verwijder"></TD>
<TD><INPUT type="submit" name="Update" value="Update"></TD></TR>
</TD></TR></TABLE>
</FORM>
</BODY>
</HTML>
EOFORMPAGE;
echo $form_page;
?>
// inloggegevens om database op te halen
include("inlog.inc");
$global_dbh = mysql_connect($hostname, $username, $password) or die("Failure to communicate with database");;
mysql_select_db($db, $global_dbh);
// Initialiseren anders krijg je Undefined variable-foutmelding
$boodschap = "";
$datum = "";
$success_msg = "";
$id = "";
// Knop Verwijderen
if(isset($_POST['Verwijder'])){
if(!empty($_POST['boodschap'])) {
$id = $_POST['boodschap'];
$sql_query = "SELECT * FROM tblBlog WHERE id=$id";
$res = mysql_query($sql_query) or die (mysql_error());
if(mysql_num_rows($res)) {
$sql_query = "DELETE FROM tblBlog WHERE id=".$_POST['boodschap'];
mysql_query($sql_query) or die (mysql_error());
echo "<div class='succes'>Het bericht is succesvol verwijderd!</div>";
$toegevoegd = True;
}
else {
echo "<div class='errors'>Ingevoerde waarde ID bestaat niet of is al verwijderd!</div>";
$toegevoegd = false;
}
}
else {
echo "<div class='errors'>Ongeldig bericht ID<br /></div>";
$toegevoegd = false;
}
// Indien correct ingevoerd, ga dan naar Blog-pagina
if ($toegevoegd) {
header("location: blog.php");
exit;
}
}
// Knop Toevoegen
if(isset($_POST['Toevoeg'])){
if(!empty($_POST['boodschap'])) {
// Voeg de waarden toe aan de tabel
$boodschap = $_POST['boodschap'];
$datum = gmDate("Y-m-d\TH:i:s\Z");
$query = "INSERT INTO tblBlog (id, message, tijd) VALUES (null, '$boodschap', '$datum')";
$result = mysql_query($query);
// Controleer of de waarden zijn ingevoerd in de tabel
if (mysql_affected_rows() == 1) {
$success_msg .= '<P>Jouw blogbericht is succesvol ingevoerd.</P>';
$toegevoegd = True;
} else {
error_log(mysql_error());
$success_msg = '<P>Er is helaas iets misgegaan. Probeer nog een keer.</P>';
$toegevoegd = false;
}
// Indien correct ingevoerd, ga dan naar Blog-pagina
if ($toegevoegd) {
header("location: blog.php");
exit;
}
}
}
// Knop bijwerken
if(isset($_POST['Update'])){
$boodschap = $_POST['boodschap'];
if (intval($boodschap) > 0) {
$id = $_POST['boodschap'];
$query = "SELECT * FROM tblBlog WHERE id=$id";
$result = mysql_query($query);
$column_count = mysql_num_fields($result); // or die ("display_db_query:" . mysql_error());
while ($row = mysql_fetch_row($result)) {
$boodschap = $row[1];
}
} else {
$id = $_POST['id'];
$datum = gmDate("Y-m-d\TH:i:s\Z");
$query = "UPDATE tblBlog SET message ='" .$boodschap. "' WHERE id='" .$id. "'";
$result = mysql_query($query) or die ("display_db_query:" . mysql_error());
// Controleer of de waarden zijn ingevoerd in de tabel
if (mysql_affected_rows() == 1) {
$success_msg .= '<P>Jouw blogbericht is succesvol ingevoerd.</P>';
$toegevoegd = True;
} else {
error_log(mysql_error());
$success_msg = '<P>Er is helaas iets misgegaan. Probeer nog een keer.</P>';
echo($query);
$toegevoegd = false;
}
}
// Indien correct ingevoerd, ga dan naar Blog-pagina
/*if ($toegevoegd) {
header("location: blog.php");
exit;
}
*/
}
$thispage = $_SERVER['PHP_SELF']; //Dit is nodig voor heredoc
$form_page = <<< EOFORMPAGE
<HTML>
<HEAD>
</HEAD>
<BODY>
<H1>Typ uw blog in:</H1>
$success_msg
<FORM METHOD="post" ACTION="$thispage">
<TABLE BORDER=0 CELLPADDING=10 WIDTH=100%>
<tr><td>Bericht:</td><td><TEXTAREA NAME="boodschap" ROWS=10 COLS=50>$boodschap</TEXTAREA></td></tr>
<tr><td> </td><td><INPUT TYPE="hidden" name="datum" value="$datum"></td></tr>
<tr><td> </td><td><INPUT TYPE="hidden" name="id" value="$id"></td></tr></table>
<table><TR><TD><INPUT type="submit" name="Toevoeg" value="Toevoeg"></TD>
<TD><INPUT type="submit" name="Verwijder" value="Verwijder"></TD>
<TD><INPUT type="submit" name="Update" value="Update"></TD></TR>
</TD></TR></TABLE>
</FORM>
</BODY>
</HTML>
EOFORMPAGE;
echo $form_page;
?>
Nette foutafhandeling ontbreekt.
SanThe, wat bedoel je daarmee?
KJ Da op 23/09/2010 22:35:26:
SanThe, wat bedoel je daarmee?
Dat je database niet veilig is omdat je door de gebruiker ingegeven gegevens direct en dus onbeschermd in de query zet. Verder zal er een melding op het scherm verschijnen als er iets fout gaat als je een nette foutafhandeling zou hebben. Zonder zo'n melding blijft het gissen waar het fout gaat. Zie de vele topics waar dit al vaak is besproken en kijk ook eens op www.phptuts.nl.