Archiv verlassen und diese Seite im Standarddesign anzeigen : Upload+Urlencode in Datenbank
Sandra
03.05.2006, 12:10:34
Hallo,
habe ein Formular mit upload entwickelt-uploadfile geht in einen Ordner und der Textdateiname wird in die Datenbank geschrieben. Bis dahin gut- nur jetzt funktioniert das mit den Urlencode nicht mehr
hier der code:
<?php
//$uploaddir = '/home/www/username/dokumente/';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name']));
?>
<?php
{
$filename = urlencode($_FILES['userfile']['name']);
echo $filename;
if (file_exists($uploaddir .$filename));
// durch echo sehe ich das der Name umgeformt ist
}
?>
// Datenbank-Eintrag+upload funktioniert wenn kein ä,ü,ö im namen ist
//da muß irgentwo der Fehler sein, too few arguments ist die fehlermeldung
mysql_select_db($database_itc, $itc);
$query_upload = sprintf("INSERT INTO itc_aktionen (datum,id_markt,datum_bis,doku) VALUES('$_POST[datum]','$_POST[id_markt]','$_POST[datum_bis]','$filename')");
$upl_insert = mysql_query($query_upload, $itc) or die(mysql_error());
echo "$filename ist in der DB";
?>
DANKE FÜR HILFE
Sandra
xabbuh
03.05.2006, 16:12:40
Hallo!
Schau mal genau hin:
<?php
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name']));
?>
Hier speicherst du die Datei auf deinem Server zunächst unter dem Originaldateinamen und nimmst die Kodierung erst danach vor:
<?php
$filename = urlencode($_FILES['userfile']['name']);
echo $filename;
?>
Eine entsprechende Datei kann natürlich nicht existieren, da du beim Speichern nicht den entsprechend kodierten Dateinamen genutzt hast.
Sandra
04.05.2006, 11:29:12
Hallo,
ja da hattest du recht mit der falschen reihenfolge, Danke, leider besteht das Problem immer noch
der Dateiname wird geändert- und dann nicht in die Datenbank geschrieben, zur gleichen Zeit wird die Datei mit den ursprünglichen Namen in den Folder geschoben
die Fehlermeldung sagt : "too few arguments" und bezieht sich auf den Eintrag in die Datenbank
vielleicht ist das Problem, das der Dateiname nicht geändert wird, wenn die Datei in den Folder kommt?
Also was mache ich da falsch??
// Datenbank-Eintrag
mysql_select_db($database_itc, $itc);
$query_upload = sprintf("INSERT INTO itc_aktionen (datum,id_markt,datum_bis,doku) VALUES('$_POST[datum]','$_POST[id_markt]','$_POST[datum_bis]','$filename')");
$upl_insert = mysql_query($query_upload, $itc) or die(mysql_error());
echo "$filename ist in der DB";
?>
//vorher hab ich doch $filename mit urlencode bestimmt??
Toll, wenn jemand eine Lösung hat
Danke
Sandra
xabbuh
04.05.2006, 11:41:07
die Fehlermeldung sagt : "too few arguments" und bezieht sich auf den Eintrag in die Datenbank
Wie lautet die vollständige Fehlermeldung?
Sandra
04.05.2006, 16:08:10
Hallo, die Fehlermeldung ist :
Warning: sprintf(): Too few arguments in /home/www/user/html/maskeitc/aktionen/aktion_n/neu.php on line 138
Query was empty
und bezieht sich auf diese Zeile 138:
mysql_select_db($database_itc, $itc);
$query_upload = sprintf("INSERT INTO itc_aktionen (datum,id_markt,datum_bis,doku) VALUES('$_POST[datum]','$_POST[id_markt]','$_POST[datum_bis]','$filename')");
doku ist der zeilenname in der Datenbank, wo der name hingespeichert wird
für mich scheint da alles ok zu sein..
Danke
Sandra
xabbuh
04.05.2006, 19:54:28
Was für eine Ausgabe erhälst du mit print_r($_POST)?
Sandra
08.05.2006, 02:37:11
Hallo,
glaube das geht garnicht, weil der urlencode ein % aus dem ä macht und somit nicht in die db geht und auch wenn ich das noch hinbekommen sollte, dann ist der db-eintrag anders als der dateiname in dem Folder, wo die Datei upgeloaded ist und somit nicht über einen Link von dem db-eintrag zu erhalten, ohne das ich da wieder vom % zum ä kommen muß.
Danke aber für die Hilfe
Sandra
xabbuh
08.05.2006, 13:58:20
glaube das geht garnicht, weil der urlencode ein % aus dem ä macht und somit nicht in die db geht[...]
Ich würde an deiner Stelle sprintf() auch anders einsetzen. So wie du es im Moment verwendest (ohne Platzhalter), ist es mehr als überflüssig:
<?php
$query_upload = sprintf("INSERT INTO itc_aktionen
(datum,
id_markt,
datum_bis,
doku)
VALUES
('%s',
%d,
'%s',
'%s')",
mysql_real_escape_string($_POST['datum']),
$_POST['id_markt'],
mysql_real_escape_string($_POST['']),
$filename);
?>
Sandra
09.05.2006, 02:07:25
Hallo
Ein großes Danke
Natürlich habe ich jetzt das Problem mit dem Link- an anderer Stelle hole ich den uploadnamen aus der db und verlinke ihn mit der Datei, um diese zu öffnen
Klar, jetzt wird gesucht nach dem veränderten Namen
hier der Link
<a href="dokumente/<?php echo $row_rs_aktion['doku']; ?>" target="_blank"><img src="jpegs/folder.gif"
Falls dir dazu auch etwas einfällt- einfach toll
Sandra
xabbuh
09.05.2006, 08:22:01
Und was genau passt daran nicht?
Sandra
09.05.2006, 10:10:54
Hallo,
der veränderte Dateiname ist in der db, aber die Datei wird in den Ordner Dokumente gespeichert ohne das der Dateiname verändert wird und damit funktioniert der Link so nicht mehr
muß ich nun den Dateinamen der Datei ebenfalls beim hochladen in den Ordner Dokumente verändern und wenn ja wie
oder muß ich den Dateinamen aus der db wieder verändern beim auslesen?
Danke
Sandra
xabbuh
09.05.2006, 11:03:22
Wie sieht denn jetzt dein Quellcode zum Upload der Datei aus?
Sandra
10.05.2006, 11:49:23
Hallo,
sorry, upload funktioniert doch jetzt richtig mit den umlauten, genau diese eine datei war wohl nicht ok, habe test dateine gemacht und klappt alles super
Danke
Sandra
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.