Probleempje. Ik heb een form gemaakt die dit volgende script op gang brengt, waarbij ik een bestandsnaam in een mysql database toevoeg:
Dit script werkt perfect en het bestandsnaam wordt keurig netjes toegevoegd in een tabel in mijn mysql database.
Nu heb ik dus nog een andere database, waarbij ik een bestand wil uploaden én de bestandsnaam van het geploade bestand in een tabel van mijn database wil toevoegen. Ik heb deze getracht te maken, maar ik heb een probleem:
Het bestand dat ik selecteer wordt keurig netjes ge-resized en geupload naar de gekozen map, maar de naam wordt niet toegevoegd aan de database.
Hier het formulier voor de bestandsupload:
En hier het script dat wordt opgeroepen door het formulier. Nogmaals: het uploaden werkt wel perfect, maar het toevoegen van de bestandsnaam werkt niet.
Het tabel waarin de bestandsnaam moet komen te staan heet newsarchive, met daarin 3 velden: id, userfilevoor, userfileachter. id is een auto_increment integer en de primary key. De andere 2 velden zijn varchar(1000).
Als ik 2 bestanden upload, dan worden ze dus echt geupload, en in de database komt er wel steeds een rij bij, waarvan id een hoger nummer krijgt, maar de 2 andere velden blijven dan leeg. (in die 2 andere velden moeten de 2 bestandsnamen komen, maar dat gebeurt dus niet).
Ik heb er al uren op zitten staren en kom er niet uit en alles draait nu.
Misschien dat iemand hier iets ziet?
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
| <?php session_start(); ?> <?php include ("inc_connect.php"); if (empty($_POST)){ //eerst controleren of pagina wel is aangeroepen vanuit het formulier echo("<a href=\"bestandupload.php\">Upload eerst een bestand</a>"); exit(); }else{ //OK, query opbouwen met variabelen in $_POST $query="INSERT INTO bestanden (bestandsnaam, sim_id)"; $query .= "VALUES ('"; //let hier op de positie van de enkele aanhalingstekens $query .= $_POST["bestandsnaam"] . "', '" ; $query .= $_POST["sim_id"] . "');"; $result = mysql_query($query) or die ("Fout: " . mysql_error()); } ?> <html> <head> <title>Bestand succesvol toegevoegd</title> </head> <link rel="stylesheet" type="text/css" href="cms.css"> <body> <?php if (!isset($_SESSION["username"])){ $tekst = "<h1>U bent nog niet aangemeld als Kodos Admin.</h1> U kunt <a href=\"login.php\">hier inloggen</a>"; echo($tekst); }else{?> <META HTTP-EQUIV="refresh" CONTENT="2; url=beveiligd.php"> <br><br><br> <?php echo("<b>Je " . $_POST["username"] . " hebt succesvol iets in de database gezet </b><br><br> Je zal automatisch terugkeren achter de schermen"); ?> <?php } ?> </body> </html> |
Dit script werkt perfect en het bestandsnaam wordt keurig netjes toegevoegd in een tabel in mijn mysql database.
Nu heb ik dus nog een andere database, waarbij ik een bestand wil uploaden én de bestandsnaam van het geploade bestand in een tabel van mijn database wil toevoegen. Ik heb deze getracht te maken, maar ik heb een probleem:
Het bestand dat ik selecteer wordt keurig netjes ge-resized en geupload naar de gekozen map, maar de naam wordt niet toegevoegd aan de database.
Hier het formulier voor de bestandsupload:
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
| <?php session_start(); ?> <html> <head> <title>Voeg een nieuwe screenshot toe</title> </head> <link rel="stylesheet" type="text/css" href="noggeen.css"> <body> <?php if (!isset($_SESSION["username"])){ $tekst = "<h1>U bent nog niet aangemeld als Admin.<h1> U kunt <a href=\"login.php\">hier inloggen</a>"; echo($tekst); }else{ ?> <b>Hallo <?php echo($_SESSION["username"]);?>, </b> <form enctype="multipart/form-data" action="screenshottoegevoegd.php" method="post"> <!-- MAX_FILE_SIZE must precede the file input field --> <input type="hidden" name="MAX_FILE_SIZE" value="1000000" /> <!-- Name of input element determines name in $_FILES array --> <table border="0"> <tr><td align="right" ><font>Voorkant: </font></td><td><input name="userfilevoor" type="file" class="inputfields" size="30"></td></tr> <tr><td align="right" ><font>Achterkant: </font></td><td><input name="userfileachter" type="file" class="inputfields" size="30"></td></tr> </table> <hr> <input type="submit" value="Voeg bestand toe"> <input type="Reset" value="Reset"><br> </form> <?php } ?> </body> </html> |
En hier het script dat wordt opgeroepen door het formulier. Nogmaals: het uploaden werkt wel perfect, maar het toevoegen van de bestandsnaam werkt niet.
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
| <?php session_start(); ?> <?php include ("inc_connect.php"); if (empty($_POST)){ //eerst controleren of pagina wel is aangeroepen vanuit het formulier echo("<a href=\"screenshotupload.php\">Upload eerst een screenshot</a>"); exit(); }else{ ?> <html> <head> <title>Screenshot succesvol toegevoegd</title> </head> <link rel="stylesheet" type="text/css" href="cms.css"> <body> <?php if (!isset($_SESSION["username"])){ $tekst = "<h1>U bent nog niet aangemeld als Kodos Admin.</h1> U kunt <a href=\"login.php\">hier inloggen</a>"; echo($tekst); }else{?> <?php //OK, query opbouwen met variabelen in $_POST $query="INSERT INTO newsarchive (userfilevoor,userfileachter)"; $query .= "VALUES ('"; //let hier op de positie van de enkele aanhalingstekens $query .= $_POST["userfilevoor"] . "', '" ; $query .= $_POST["userfileachter"] . "');"; $result = mysql_query($query) or die ("Fout: " . mysql_error()); // BEGIN file upload gedeelte. $uploaddir = 'plaatje/'; $tmpdir = 'temp/'; // BEGIN UPLOAD EERSTE PLAATJE $uploadfilevoor = $tmpdir . basename($_FILES['userfilevoor']['name']); echo '<pre>'; if (move_uploaded_file($_FILES['userfilevoor']['tmp_name'], $uploadfilevoor)) { echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"2; url=screenshotupload.php\"> File is valid, and was successfully uploaded.\n "; $filenamevoor = $_FILES['userfilevoor']['name']; $up_file = $tmpdir.'/'.$filenamevoor; $srcimage = imagecreatefromjpeg($up_file); $width = imageSX($srcimage); $height = imageSY($srcimage); if($width <= 250 && $height <= 250){ $t_width=$width; } else { if ($height < $width){ $t_width = 400; } else { $t_width = 300; } } $newh1= $height / $width; $newh2= $newh1 * $t_width; $destimage = imagecreatetruecolor($t_width,$newh2); imagecopyresampled($destimage,$srcimage,0,0,0,0,$t_width,$newh2,$width,$height); ob_start(); ImageJPEG($destimage,'',100); $buffer = ob_get_contents(); ob_end_clean(); $file=$uploaddir.'/'.$filenamevoor; $handle = fopen($file, 'ab'); fwrite($handle, $buffer); fclose($handle); $delete=$tmpdir.'/'.$filenamevoor; @unlink($delete); } else { echo "Possible file upload attack!\n"; } print "</pre>"; // EINDE UPLOAD EERSTE PLAATJE // BEGIN UPLOAD TWEEDE PLAATJE $uploadfileachter = $tmpdir . basename($_FILES['userfileachter']['name']); echo '<pre>'; if (move_uploaded_file($_FILES['userfileachter']['tmp_name'], $uploadfileachter)) { echo "File is valid, and was successfully uploaded.\n"; $filenameachter = $_FILES['userfileachter']['name']; $up_file = $tmpdir.'/'.$filenameachter; $srcimage = imagecreatefromjpeg($up_file); $width = imageSX($srcimage); $height = imageSY($srcimage); if($width <= 250 && $height <= 250){ $t_width=$width; } else { if ($height < $width){ $t_width = 400; } else { $t_width = 300; } } $newh1= $height / $width; $newh2= $newh1 * $t_width; $destimage = imagecreatetruecolor($t_width,$newh2); imagecopyresampled($destimage,$srcimage,0,0,0,0,$t_width,$newh2,$width,$height); ob_start(); ImageJPEG($destimage,'',100); $buffer = ob_get_contents(); ob_end_clean(); $file=$uploaddir.'/'.$filenameachter; $handle = fopen($file, 'ab'); fwrite($handle, $buffer); fclose($handle); $delete=$tmpdir.'/'.$filenameachter; @unlink($delete); } else { echo "Possible file upload attack!\n"; } print "</pre>"; // EINDE UPLOAD TWEEDE PLAATJE // EINDE file upload gedeelte ?> <?php //echo("<b> Je " . $_POST["username"] . " hebt succesvol iets in de database gezet </b><br><br> Je zal automatisch // terugkeren achter de schermen"); ?> <?php } } ?> </body> </html> |
Het tabel waarin de bestandsnaam moet komen te staan heet newsarchive, met daarin 3 velden: id, userfilevoor, userfileachter. id is een auto_increment integer en de primary key. De andere 2 velden zijn varchar(1000).
Als ik 2 bestanden upload, dan worden ze dus echt geupload, en in de database komt er wel steeds een rij bij, waarvan id een hoger nummer krijgt, maar de 2 andere velden blijven dan leeg. (in die 2 andere velden moeten de 2 bestandsnamen komen, maar dat gebeurt dus niet).
Ik heb er al uren op zitten staren en kom er niet uit en alles draait nu.
[ Voor 16% gewijzigd door guillaumemay op 14-12-2005 16:53 ]