Update query loopt fout ??
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
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
<?php
include 'connect.php';
function add($string) {
$string=mysql_real_escape_string($string);
return $string;
}
function strip($string) {
$string=stripslashes($string);
$string=htmlspecialchars($string);
return $string;
}
$qry="SELECT * FROM ".$_GET["tabel"];
if ( !($result = mysql_query($qry)) ) {
echo "Error: ".mysql_error();
}
else {
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$error=0;
$goed=0;
while (list($key, $val) = each($_POST)) {
if ($key != "submit_edit") {
if (!mysql_query("UPDATE ".$_GET['tabel']." SET ".$key." = ".add($val)." WHERE id = ".$_GET['id'])) {
echo "Error: ".trigger_error(mysql_error());
$error++;
}
else {
$goed++;
}
}
}
if ($error==0) {
echo 'Succesvol ge-update!!';
echo '<meta http-equiv="refresh" content="2; URL=edit.php?tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" />';
}
else {
echo 'Er is een error opgetreden.';
echo '<br />Er zijn '.$goed.' Query\'s gelukt.';
}
}
else {
echo '<form action="edit.php?tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" method="POST">';
$i=0;
$a=0;
$fields=mysql_num_fields($result);
while ($i != mysql_num_fields($result)) {
$field_names = array();
$field_type = array();
while ($i != mysql_num_fields($result)) {
$field_names[] = mysql_field_name($result, $i);
$field_types[] = mysql_field_type($result, $i);
$i++;
}
echo '<table style="width: auto; margin: 0px auto; margin-top: 40px;">';
foreach ($field_names as $field_name) {
$Qry=mysql_query("SELECT ".$field_name." FROM ".$_GET["tabel"]." WHERE id = ".$_GET["id"]) or die (mysql_error());
while ($row=mysql_fetch_assoc($Qry)) {
echo '<tr>';
echo '<th align="left" valign="top">'.$field_name.'</th>';
if ($field_name == "album") {
echo '<td>';
$qrY=mysql_query("SELECT * FROM album") or die (mysql_error());
echo '<select name="'.$field_name.'">';
while ($rijtje=mysql_fetch_assoc($qrY)) {
if ($rijtje["id"] == $row[$field_name]) {
echo '<option value="'.$rijtje["id"].'" selected="selected">'.$rijtje["naam"].'</option>';
}
else {
echo '<option value="'.$rijtje["id"].'">'.$rijtje["naam"].'</option>';
}
}
echo '</select>';
echo '</td>';
}
elseif (mysql_field_type($result, $a) != "blob") {
echo '<td><input type="text" name="'.$field_name.'" value="'.strip($row[$field_name]).'"></td>';
}
else {
$row[$field_name]=str_replace("<br />", "\n\r", $row[$field_name]);
echo '<td><textarea name="'.$field_name.'" cols="70" rows="10">'.strip($row[$field_name]).'</textarea></td>';
}
echo '</tr>';
}
$a++;
}
echo '<tr>';
echo '<td><a href="index.php?page=edit&delete=ja&tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" onclick="javascript: return confirm(\'Weet je zeker dat je deze waarde wilt wissen?\')"><input type="button" class="submit" name="wissen" value="wissen"></a></td>';
echo "<td><input type='submit' class='submit' name='submit_edit' value='opslaan'></td>";
echo '</tr>';
echo '</table>';
}
echo '</form>';
}
}
?>
include 'connect.php';
function add($string) {
$string=mysql_real_escape_string($string);
return $string;
}
function strip($string) {
$string=stripslashes($string);
$string=htmlspecialchars($string);
return $string;
}
$qry="SELECT * FROM ".$_GET["tabel"];
if ( !($result = mysql_query($qry)) ) {
echo "Error: ".mysql_error();
}
else {
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$error=0;
$goed=0;
while (list($key, $val) = each($_POST)) {
if ($key != "submit_edit") {
if (!mysql_query("UPDATE ".$_GET['tabel']." SET ".$key." = ".add($val)." WHERE id = ".$_GET['id'])) {
echo "Error: ".trigger_error(mysql_error());
$error++;
}
else {
$goed++;
}
}
}
if ($error==0) {
echo 'Succesvol ge-update!!';
echo '<meta http-equiv="refresh" content="2; URL=edit.php?tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" />';
}
else {
echo 'Er is een error opgetreden.';
echo '<br />Er zijn '.$goed.' Query\'s gelukt.';
}
}
else {
echo '<form action="edit.php?tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" method="POST">';
$i=0;
$a=0;
$fields=mysql_num_fields($result);
while ($i != mysql_num_fields($result)) {
$field_names = array();
$field_type = array();
while ($i != mysql_num_fields($result)) {
$field_names[] = mysql_field_name($result, $i);
$field_types[] = mysql_field_type($result, $i);
$i++;
}
echo '<table style="width: auto; margin: 0px auto; margin-top: 40px;">';
foreach ($field_names as $field_name) {
$Qry=mysql_query("SELECT ".$field_name." FROM ".$_GET["tabel"]." WHERE id = ".$_GET["id"]) or die (mysql_error());
while ($row=mysql_fetch_assoc($Qry)) {
echo '<tr>';
echo '<th align="left" valign="top">'.$field_name.'</th>';
if ($field_name == "album") {
echo '<td>';
$qrY=mysql_query("SELECT * FROM album") or die (mysql_error());
echo '<select name="'.$field_name.'">';
while ($rijtje=mysql_fetch_assoc($qrY)) {
if ($rijtje["id"] == $row[$field_name]) {
echo '<option value="'.$rijtje["id"].'" selected="selected">'.$rijtje["naam"].'</option>';
}
else {
echo '<option value="'.$rijtje["id"].'">'.$rijtje["naam"].'</option>';
}
}
echo '</select>';
echo '</td>';
}
elseif (mysql_field_type($result, $a) != "blob") {
echo '<td><input type="text" name="'.$field_name.'" value="'.strip($row[$field_name]).'"></td>';
}
else {
$row[$field_name]=str_replace("<br />", "\n\r", $row[$field_name]);
echo '<td><textarea name="'.$field_name.'" cols="70" rows="10">'.strip($row[$field_name]).'</textarea></td>';
}
echo '</tr>';
}
$a++;
}
echo '<tr>';
echo '<td><a href="index.php?page=edit&delete=ja&tabel='.$_GET["tabel"].'&id='.$_GET["id"].'" onclick="javascript: return confirm(\'Weet je zeker dat je deze waarde wilt wissen?\')"><input type="button" class="submit" name="wissen" value="wissen"></a></td>';
echo "<td><input type='submit' class='submit' name='submit_edit' value='opslaan'></td>";
echo '</tr>';
echo '</table>';
}
echo '</form>';
}
}
?>
En de volgende errors:
Notice: Unknown column 'Test' in 'field list' in /*knip*/edit.php on line 22
Error: 1
Notice: Unknown table '1248025619IMG_4611' in field list in /*knip*/edit.php on line 22
Error: 1
Notice: Unknown column 'Test' in 'field list' in /*knip*/edit.php on line 22
Error: 1Er is een error opgetreden.
Hoe kan het dat hij verkeerd loopt na een aantal goed te hebben gedaan ??
Notice: Unknown column 'Test' in 'field list' in /*knip*/edit.php on line 23
Error: 1
Notice: Unknown table '1248025619IMG_4611' in field list in /*knip*/edit.php on line 23
Error: 1Er is een error opgetreden.
Er zijn 4 Query's gelukt
Uiteraard is 1248025619IMG_4611 geen tabel en is column 'Test' in 'field list' geen kolom, maar zijn dit waarden...
ergens zit er dus een "lek" in het script...
Gewijzigd op 01/01/1970 01:00:00 door /home/joost
Edit: Tekst hoort tussen enkele quotes te staan. Verder moet je userinput altijd beveiligen met mysql_real_escape_string().
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Edit::
Het is geen user input, het is input wat ik zelf gebruik om dingen te wijzigen (als admin dus).
Gewijzigd op 01/01/1970 01:00:00 door /home/joost
Volgens mij sluit jij hier de Query niet goed af.
Ik zie GET en POST staan, dat is userinput.
@SanThe: Dat is input die ik zelf verstuur... via inderdaad GET en POST
Gewijzigd op 01/01/1970 01:00:00 door /home/joost
Ja, dan heb je geen beveiliging nodig.
Tuurlijk maak ik ook fouten, ik ben namelijk ook een mens, maar ik zal het beveiligen... en nu graag weer ontopic aub....
Maar wat werkt er nu nog niet?
CREATE TABLE `foto` (
`id` int(11) NOT NULL auto_increment,
`album` int(11) NOT NULL default '0',
`titel` varchar(150) collate utf8_unicode_ci NOT NULL default '',
`naam` varchar(150) collate utf8_unicode_ci NOT NULL default '',
`beschrijving` text collate utf8_unicode_ci NOT NULL,
`volg_nr` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2
Nu heb ik dus geen tabel met de naam 1248025619IMG_4611 en geen kolom met de naam Test...
Als ik de query uit voer krijg ik dus te horen dat die tabel, nog de kolom niet bestaan...
Het vage is dus dat hij er 4 goed uitvoert, en dat de vijfde hij de waarde die in het <input> field zitten gebruikt als tabel of als naam van de kolom ??
Als ik de pagina open heb ik de volgende broncode:
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
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
<form action="edit.php?tabel=foto&id=1" method="POST">
<table style="width: auto; margin: 0px auto; margin-top: 40px;">
<tr>
<th align="left" valign="top">id</th>
<td><input type="text" name="id" value="1"></td>
</tr>
<tr>
<th align="left" valign="top">album</th>
<td>
<select name="album">
<option value="1" selected="selected">Marille</option>
</select>
</td>
</tr>
<tr>
<th align="left" valign="top">titel</th>
<td><input type="text" name="titel" value="Test"></td>
</tr>
<tr>
<th align="left" valign="top">naam</th>
<td><input type="text" name="naam" value="1248025619IMG_4611.JPG"></td>
</tr>
<tr>
<th align="left" valign="top">beschrijving</th>
<td><textarea name="beschrijving" cols="70" rows="10"></textarea></td>
</tr>
<tr>
<th align="left" valign="top">volg_nr</th>
<td><input type="text" name="volg_nr" value="0"></td>
</tr>
<tr>
<td><a href="index.php?page=edit&delete=ja&tabel=foto&id=1" onclick="javascript: return confirm('Weet je zeker dat je deze waarde wilt wissen?')"><input type="button" class="submit" name="wissen" value="wissen"></a></td>
<td><input type='submit' class='submit' name='submit_edit' value='opslaan'></td>
</tr>
</table>
</form>
<table style="width: auto; margin: 0px auto; margin-top: 40px;">
<tr>
<th align="left" valign="top">id</th>
<td><input type="text" name="id" value="1"></td>
</tr>
<tr>
<th align="left" valign="top">album</th>
<td>
<select name="album">
<option value="1" selected="selected">Marille</option>
</select>
</td>
</tr>
<tr>
<th align="left" valign="top">titel</th>
<td><input type="text" name="titel" value="Test"></td>
</tr>
<tr>
<th align="left" valign="top">naam</th>
<td><input type="text" name="naam" value="1248025619IMG_4611.JPG"></td>
</tr>
<tr>
<th align="left" valign="top">beschrijving</th>
<td><textarea name="beschrijving" cols="70" rows="10"></textarea></td>
</tr>
<tr>
<th align="left" valign="top">volg_nr</th>
<td><input type="text" name="volg_nr" value="0"></td>
</tr>
<tr>
<td><a href="index.php?page=edit&delete=ja&tabel=foto&id=1" onclick="javascript: return confirm('Weet je zeker dat je deze waarde wilt wissen?')"><input type="button" class="submit" name="wissen" value="wissen"></a></td>
<td><input type='submit' class='submit' name='submit_edit' value='opslaan'></td>
</tr>
</table>
</form>
De broncode klopt, alleen het updaten klopt niet....
Het vreemde is dus dat hij naam, waarde en tabel door elkaar haalt maar dit pas doet na 4 update query's...
Gewijzigd op 01/01/1970 01:00:00 door /home/joost
SanThe schreef op 19.07.2009 21:21:
Edit: Tekst hoort tussen enkele quotes te staan.
Die missen nog steeds in de query.
Bedankt voor jullie tijd ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
function add($string) {
$string=mysql_real_escape_string($string);
return $string;
}
function strip($string) {
$string=stripslashes($string);
$string=htmlspecialchars($string);
return $string;
}
?>
function add($string) {
$string=mysql_real_escape_string($string);
return $string;
}
function strip($string) {
$string=stripslashes($string);
$string=htmlspecialchars($string);
return $string;
}
?>
Kan wat korter :
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
function add($string){
return mysql_real_escape_string($string);
}
function strip($string){
return htmlspecialchars(stripslashes($string));
}
?>
function add($string){
return mysql_real_escape_string($string);
}
function strip($string){
return htmlspecialchars(stripslashes($string));
}
?>