bilder hochladen

franzi79

Grünschnabel
hallo!

ich habe eine seite mit profilen, die in einer datenbank gespeichert werden. die mitglieder sollen außerdem auch ein bild hochladen können. dies soll mit einem formular passieren. der name der datei muss in die datenbank geschrieben werden, während das bild selbst in einen ordner auf den server hochgeladen werden muss.

die tabelle 'profiles' der datenbank hat die felder: page_id, page_title, page_content, page_image

die datei mit dem formular sieht so aus (damit müsste aber eigentlich alles richtig sein):

Code:
<?
include("../layout/config.inc");
$table = profiles;
$connection = mysql_connect($hostname, $user, $pass) or die ("Unable to connect!");
if ($page_id) {
$query = "SELECT * FROM $table WHERE page_id=$page_id";
$result = mysql_db_query($database, $query, $connection) or die ("Error in query: $query. " . mysql_error());
$myrow = mysql_fetch_array($result);
$page_id = $myrow["page_id"];
$page_title = $myrow["page_title"];
$page_content = $myrow["page_content"];
$page_image = $myrow["page_image"];

// print the id for editing
mysql_free_result($result);
mysql_close($connection);
}
?>
<form method="post" action="edit_thanks.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000">
<input type=hidden name="page_id" value="<? echo $page_id ?>">
 

<? if ($page_image) {?>
<input type=hidden name="page_image" value="<? echo $page_image ?>">
<? } ?>
<input type=hidden name="laheta" value="1">

Bild:<br>
<input type="file" name="uploadfile2">
<?
if ($page_image) {
?>
<a href="/profiles/<? echo $page_image ?>">jetziges bild anzeigen >></a>
<br>
<br>
<input type="checkbox" name="delete_bigpicture" value="delete_picture">
Bild löschen<br>
<?
}
?>

<br>
Name:<br>
<INPUT TYPE="text" NAME="page_title" SIZE="20" MAXLENGTH="50" VALUE="<? echo $page_title; ?>">
<br><br>
Profile-Info<br>
<TEXTAREA NAME="page_content" COLS="40" ROWS="8" WRAP="Virtual"><? echo $page_content; ?></TEXTAREA>
<br><br>
<input type="submit" name="Submit" value="speichern">
</form>
<br><br><a href="index.php">zurück >></a></td>
</tr>
</table>

<?php
include("../layout/footer.inc");
?>

die daten hier werden an die seite "edit_thanks.php" weitergegeben. Diese sieht so aus:

Code:
<?
include("../layout/config.inc");
$table = profiles;

if(($file != none) && $page_title && $page_content) { 
   $formats = array('jpg','gif','png');
   $dest = "/home/users/dshells/roxy/html/profiles/$file_name";
   $final_filename = str_replace(" ", "_", $file_name);   
   if(in_array(strtolower(substr($final_filename,-3)),$formats)) { 
	 if(!copy($file,$dest)) { 
	echo "Unable to create $dest - check permissions<br>\n";
	exit;
	}
	}
   
	$connection = mysql_connect($hostname, $user, $pass) or die ("Unable to connect!");  
 
	$sql = "UPDATE $table SET page_title='$page_title', 
page_image='$final_filename',page_content='$page_content' WHERE page_id=$page_id";
	$result = mysql_db_query($database, $sql, $connection) or die ("Error in query: $sql . " . 
mysql_error());
	 mysql_close($connection);	
}
else {
 
	if ($page_content) { 
   $connection = mysql_connect($hostname, $user, $pass) or die ("Unable to connect!");
   if ($delete_picture) {
   
   $delete = unlink("/home/users/dshells/roxy/html/profiles/$page_image");
   
   $page_image = "";
   }   
   $sql = "UPDATE $table SET 
page_title='$page_title',page_image='$page_image',page_content='$page_content' WHERE page_id=$page_id";
   $result = mysql_db_query($database, $sql, $connection) or die ("Error in query: $sql . " . 
mysql_error());
   echo "database updated<br><br>";
   mysql_close($connection);		 
   }
   else {
   echo "required fields missing";
   }
}
?>

ich hab schon alles mögliche probiert, aber ich kann einfach kein bild hochladen. wenn ich per ftp ein bild hochlade und den namen in die datenbank eintrage, dann wird es mit diesem script aber wieder aus der datenbank entfernt. das feld "page_image" ist dann wieder leer. könnt ihr auf den ersten blick fehler erkennen? wäre echt toll, wenn ihr mir helfen könnt.
der ordner, in denen ich bilder hochladen will, muss doch dann auch beschreibbar sein, also chmod 755 oder so, stimmts?

danke!
 
Das Bild wird über das Formular in einem Temporären Ordner gespeichert, wird es dann nicht weiter verarbeitet, so wird es gelöscht, sofern der Temp geleert wird.

Also musst du mit copy das Temporäre Bild in deine Ordner ziehen.

wenn dass Bild im inputfeld z.B. Bild1 heißt (name='Bild1')

dann müsste das etwa so aussehen. aus richtigkeit geb ich aber keine Garantie da ich selbst gerade kein tut hier habe:

copy($bild1[temp],$pfad."\".$bild1[name]) irgendwie so heißt dass, wenn ich nachher zu hause bin such ich dir das richtig raus, aber vielleicht hilft das schonmal weiter
 
Zurück