PDA

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