- Registriert
- 09.12.06
- Beiträge
- 363
Hallo!
Ich bastle grad an einem kleinen Katalogsystem und stecke nun an einer Stelle fest.
Mit folgendem Script realisiere ich über eine Admin-Seite den Upload des Produktbildes:
Hier also erstmal die Struktur. Das "Besondere" an dem Script ist, dass automatisch über den Namen der hochgeladenen Bilddatei der gewünschte Serverpfad gefunden wird. Die Bildnamen sind dabei immer nach folgendem Muster benannt: wort1_wort2_wort3.gif. Durch die explode()-Funktion werden nur die ersten beiden Wörter samt Unterstrich in die neue Variable geschrieben, denn so heißt imm der jeweilige Ordner, in den die Datei geschoben werden soll. Durch die Angabe des Pfads unter $path wird dann auch noch die restliche Verzeichnisstruktur angegeben.
Das funktioniert ja auch alles super. Allerdings soll neben dem Upload der Datei auch noch der neue Server-Pfad der Datei in die Datenbank geschrieben werden. Dies wollte ich nun so in etwa realisieren, zu finden im Formular der Seite:
Wie ihr seht, verwende ich ein Javascript, um den Pfad der Datei beim Auswählen (onChange) in das versteckte Input-Feld zu schreiben. Dieses wird dann in die Datenbank geschrieben. Hier mal kurz das verwendete Javascript:
Das Problem ist nur, dass irgendwie zum Zeitpunkt des OnChange die Variable $name (der Dateiname) keinen Wert mehr zu haben scheint. Denn die Ausgabe des Pfads lautet immer:
../../../img/store/bands/_/
Das zeigt mir, dass $name keinen Wert hat und somit durch das explode() lediglich der Unterstrich ausgegeben wird. Mir ist auch irgendwie klar, dass die Variable ja erst ihren Wert bekommt wenn man das Formular abschickt, aber wie kann ich denn realisieren, das nun der Serverpfad in diese Datenbankspalte geschrieben wird?
Danke erstmal das ihr bis hierhin gelesen habt ^^
..
Ich bastle grad an einem kleinen Katalogsystem und stecke nun an einer Stelle fest.
Mit folgendem Script realisiere ich über eine Admin-Seite den Upload des Produktbildes:
Code:
<?
$tempname = $_FILES['img']['tmp_name'];
$name = $_FILES['img']['name'];
$type = $_FILES['img']['type'];
$size = $_FILES['img']['size'];
$helper = explode('_', $name);
$result = $helper[0] . '_' . $helper[1];
$path = '../../../img/store/bands/';
$fullpath = $path . $result . '/' . $name;
if($type != "image/gif" && $type != "image/pjpeg") {
$err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
}
if($size > "15000") {
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
} if(empty($err)) {
move_uploaded_file("$tempname", "$fullpath");
echo "Die Datei $name wurde erfolgreich hochgeladen!";
}
else {
foreach($err as $error)
echo "$error<br>";
}
?>
Hier also erstmal die Struktur. Das "Besondere" an dem Script ist, dass automatisch über den Namen der hochgeladenen Bilddatei der gewünschte Serverpfad gefunden wird. Die Bildnamen sind dabei immer nach folgendem Muster benannt: wort1_wort2_wort3.gif. Durch die explode()-Funktion werden nur die ersten beiden Wörter samt Unterstrich in die neue Variable geschrieben, denn so heißt imm der jeweilige Ordner, in den die Datei geschoben werden soll. Durch die Angabe des Pfads unter $path wird dann auch noch die restliche Verzeichnisstruktur angegeben.
Das funktioniert ja auch alles super. Allerdings soll neben dem Upload der Datei auch noch der neue Server-Pfad der Datei in die Datenbank geschrieben werden. Dies wollte ich nun so in etwa realisieren, zu finden im Formular der Seite:
Code:
<form enctype="multipart/form-data" action="buttons.php?cat_ID=<? echo $_GET['cat_ID'] ?>&cat_name=<? echo $_GET['cat_name'] ?>" method="post" name="upload">
<div class="form_ab"><span class="form_links">Name</span><span class="form_rechts">
<input type="text" size="25" name="product_name">
<input type="hidden" name="cat_ID" value="<? echo $_GET['cat_ID'] ?>"><input type="hidden" name="product_img" value="">
<input type="hidden" name="pathhelper" value="<? echo $fullpath; ?>"></span></div>
<div class="form_ab"><span class="form_links">Bild</span><span class="form_rechts">
<input name="img" type="file" size="500" maxlength="1000" onChange="update()"></span></div>
<div class="form_ab"><span class="form_links">Preis</span><span class="form_rechts">
<input type="text" size="25" name="product_price">
<input type="hidden" name="product_ID">
<input type="hidden" name="action" value="products_insert">
<input type="submit" name="Submit" value="Eintragen"></span></span></div>
</form>
Wie ihr seht, verwende ich ein Javascript, um den Pfad der Datei beim Auswählen (onChange) in das versteckte Input-Feld zu schreiben. Dieses wird dann in die Datenbank geschrieben. Hier mal kurz das verwendete Javascript:
Code:
<script type="text/javascript">
<!--
function update(){
document.upload.product_img.value = document.upload.pathhelper.value;
}
//-->
</script>
Das Problem ist nur, dass irgendwie zum Zeitpunkt des OnChange die Variable $name (der Dateiname) keinen Wert mehr zu haben scheint. Denn die Ausgabe des Pfads lautet immer:
../../../img/store/bands/_/
Das zeigt mir, dass $name keinen Wert hat und somit durch das explode() lediglich der Unterstrich ausgegeben wird. Mir ist auch irgendwie klar, dass die Variable ja erst ihren Wert bekommt wenn man das Formular abschickt, aber wie kann ich denn realisieren, das nun der Serverpfad in diese Datenbankspalte geschrieben wird?
Danke erstmal das ihr bis hierhin gelesen habt ^^
..