Formular mit Upload

vexx

Grünschnabel
HY Leute hab da als ein riesenproblem damit ein Formular mit dateiupload hinzubekommen. Das Formular habe ich und der Teil um die texte einzutragen funktioniert auch super auch den Dateinamen der zu uploadenden Datei kann ich in die Datenbank schreiben. Nur ich hab keine Ahnung wie ich den Upload der beiden Datein realisieren soll. Für die erste Datei habe ich es mit folgendem Script versucht:

PHP:
if(isset($_POST['send']) && $_POST['send'] == "ja")
    {

//Pfad zum Ordner, in dem die Datei gespeichert werden soll//
//Pfad endet mit einem /      //
//Dieser Ordner muss Schreibrechte besitzen (Chmod 777)//
$uploaddir = 'gamecube/';

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
    print "Datei erfolgreich hochgeladen.\n";
	echo $_FILES['userfile']['name'];
    }
else
    {
    print "Fehler beim Hochladen der Datei. Fehlermeldung:\n";
    print_r($_FILES);
    }

    }
else
    {

Hatte ich mit in folgendes Script eingebaut allerdings ohne erfolg, es kam immer die fehlermeldung unexpected $ in Line xx (letzte zeile).

Hier ist das Script das von meinen Formular aufgerufen wird und mit dem die Daten in die Datenbank geschrieben werden. Hier wurde auf der upload teil eingebaut (ist jetzt nicht drin).

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?php
$db=mysql_connect("********","*********","***********");
mysql_select_db("usr_db_hqcoverpage_1", $db);
mysql_query("
  INSERT INTO covers
  (CoverName, hinzugefügt, uploader, catregory, Coverpfad, bigfile)
  VALUES
  ('$CoverName', '$datum', '$uploader', '$catregory', '$userfile', '$userfile2')
  ", $db);
if(mysql_affected_rows($db)==1)
   echo "Vielen Dank f&uuml;r Ihren Eintrag!<br>",
        "<a href=\"index.php\">Zur&uuml;ck</a>";
else
   echo "Beim Eintragen ist ein Fehler aufgetreten.<br>
   $CoverName'<br> '$datum'<br> '$uploader'<br> '$catregory'<br> '$userfile'<br> '$userfile2'<br>",
        "<a href=\"javascript:history.back();\">Zur&uuml;ck</a>";

?>
</body>
</html>

Und nun zum Schluss noch das Formular in dem die Daten eingegeben werden und die Datein gewählt werden.

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Upload Formular</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.Stil1 {
	color: #CC0000;
	font-weight: bold;
}
-->
</style>
</head>

<body>
<form action="email.php" method="post">
  <table width="424" border="0" cellspacing="0">
  <tr><td>&nbsp;</td>
      <td>&nbsp;</td>
</tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><html>
<form name="form1" method="post" action="email.php">
  <table width="374" border="0" cellspacing="0">
    <tr>
      <td width="65">name</td>
      <td width="305"><input name="CoverName" type="text" id="CoverName"></td>
    </tr>
    <tr>
      <td>hinzu </td>
      <td><input name="datum" type="text" id="datum" value="<?php echo date ("Y-m-d"); ?>"></td>
    </tr>
    <tr>
      <td>uploader</td>
      <td><input name="uploader" type="text" id="uploader2"></td>
    </tr>
    <tr>
      <td>Kategrorie</td>
      <td><select name="catregory" id="select">
        <option value="xbox cover">Xbox</option>
        <option value="playstation2">Playstation 2</option>
        <option value="gamecube">GameCube</option>
        <option value="PC">PC</option>
        <option value="dvd">DVD</option>
      </select></td>
    </tr>
    <tr>
      <td>Vorschau</td>
      <td>
      <input type="file" name="userfile" />
    </td>
    </tr>
    <tr>
      <td>Bigfile</td>
      <td><input type="file" name="userfile2" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit2" value="Senden"></td>
    </tr>
  </table>
</form>


</body>
</html>

Ich hoffe ihr könnt mir helfen das script zu vollenden hab mich schon durch zig tutorials gewälzt und zig forenbeiträge dazu gelesen ohne wäre ich nichtmals soweit gekommen :rolleyes:
 
Zuletzt bearbeitet:
Hab es zwar hinbekommen mir ein uploadscript zusammen zu bauen, aber es soll mit aufgerufen werden wenn vom formular der submitbutton aufgerufen wird. Das script auf das das formular zugreift schreibt alle daten und den Dateinamen in die Datenbank. Nur wenn ich das Script hier einsetzt klappt der Upload nicht mehr es wird dann der tempname und der Dateiname nicht mehr übergeben. Hier ist mal das funktionierende upload script.

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$tempname = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name']; 

$type = $_FILES['file']['type'];
$size = $_FILES['file']['size']; 

if($type != "image/jpg" && $type != "image/jpeg") {
    $err[] = "nur jpeg Dateien dürfen hochgeladen werden,<br> deine Datei hat die Endung $type";
	echo $tempname;
	echo $name;
}
if($size > "15000") {
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!<br>"
	Deine Datei ist $size groß;
} 

if(empty($err)) {
    move_uploaded_file($tempname, $catregory . $name);
    echo "Die Datei $catregory$name wurde erfolgreich hochgeladen!";
}
else {
    foreach($err as $error)
    echo "$error<br>";
}
?> 
</body>
</html>

und so sieht es aus wenn ich beide zusammen gefügt habe. Könnt ihr mir sagen was ich falsche mache? bin echt am verzweifeln.

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$tempname = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name']; 

 $type = $_FILES['file']['type'];
$size = $_FILES['file']['size']; 

if($type != "image/jpg" && $type != "image/jpeg") {
    $err[] = "nur jpeg Dateien dürfen hochgeladen werden.<br>";
	echo = $tempname;
	echo = $name;
}
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, $catregory . $name);
    echo "Die Datei $catregory$name wurde erfolgreich hochgeladen!";
}
else {
    foreach($err as $error)
    echo "$error<br>";
}
?> 
<?php

$db=mysql_connect("******","*********","*******");
mysql_select_db("usr_db_hqcoverpage_1", $db);
mysql_query("
  INSERT INTO covers
  (CoverName, hinzugefügt, uploader, catregory, Coverpfad, bigfile)
  VALUES
  ('$CoverName', '$datum', '$uploader', '$catregory', '$file', '$file2')
  ", $db);
if(mysql_affected_rows($db)==1){
   echo "Vielen Dank f&uuml;r Ihren Eintrag!<br>",   
   "<a href=\"index.php\">Zur&uuml;ck</a>";}
else
   echo "Beim Eintragen ist ein Fehler aufgetreten.<br>
   $CoverName'<br> '$datum'<br> '$uploader'<br> '$catregory'<br> '$userfile'<br> '$userfile2'<br>",
        "<a href=\"javascript:history.back();\">Zur&uuml;ck</a>";
?> 
</body>
</html>
 
Hast Du enctype="multipart/form-data" in Deiner Upload-Form stehen? Also in der Zeile: <form method=... action=... ?
Wenn nicht koennte das der Grund sein.
 
Könnt ihr mir sagen was ich falsche mache? bin echt am verzweifeln.
...vielleicht das:
Code:
echo = $tempname;
echo = $name;
:confused:


Ansonsten.... um dem nächsten Problem bereits zuvorzukommen:
Um den MIME-Typ der Dateien auf JPG zu prüfen, verwende besser [phpf]getimagesize[/phpf], denn ausser jpg und jpeg gibts bei JPG's noch eine Reihe weiterer möglicher Typen, mit getimagesize() ist der MIME-Typ egal.... da kannst ohne viel Umstände ermitteln, ob es ein JPG ist;)
 
reptiler hat gesagt.:
Hast Du enctype="multipart/form-data" in Deiner Upload-Form stehen? Also in der Zeile: <form method=... action=... ?
Wenn nicht koennte das der Grund sein.

hab ich hinzugefügt, klappt trotzdem nicht
 
Zurück