Upload in einem Formular!

Seven Secrets

Erfahrenes Mitglied
Alloha!

Ich habe viele Beiträge zum Thema Dateiupload gelsen und viel dazu ausprobiert, das was ich dann aber erreichen möchte, hat nicht funktioniert. Es sieht dabei wie folgt aus:

Ein Formular soll Daten aufnehmen und in einer entsprechenden Datenbank speicher. (erledigt)

Zu diesm Formular sollen Dokument hochgeladen werden. Diese dann umbenannt und auf dem Server gespeichert werden. (nicht erledigt)

So, jetzt meine Script vereinfacht:
PHP:
/* Save the new information to database.  Call Print_Applicant to display the new entry. */
Function Commit_Save ($first_name, $last_name, $street, $town, $phone, $mail, $personalrecord, $education, $vocational, $conclusiondocument, $info, $photo, $certification1, $certification2) {
$result = mysql_query("INSERT INTO care_applicant (first_name, last_name, street, town, phone, mail, education, vocational, info) VALUES ('$first_name', '$last_name', '$street', '$town', '$phone', '$mail', '$education', '$vocational', '$info')") OR die(mysql_error());
$uid = mysql_insert_id();
$state = "";
$status = "Sie haben uns Ihre Daten gesendet. Wir werden uns umgehend um Sie kümmern.";
mail("info@online.de","Onlinebewerbung von $first_name $last_name", "Über die Webseite der Care - Berlin Brandenburg bewirbt sich:\n\n\nVorname:\t $first_name\nNachname:\t $last_name\n\nStrasse:\t $street\nOrt:\t\t $town\n\nTelefon:\t $phone\nE-Mail:\t $mail\n\nAbschluß:\t $education\nAusildung:\t $vocational\n\nKommentar:\n $info\n\n\n$REMOTE_ADDR\n$REMOTE_HOST\n$HTTP_USER_AGENT","From: info@online.de");
/* Umbenennen und hochladen */
rename(".$personalrecord.", ".$first_name.-.$last_name.-personalrecord");
move_uploaded_file($_FILES['$personalrecord']['tmp_name'], '/homepages/43/d95496899/htdocs/care/apliccant/'); 
rename(".$conclusiondocument.", ".$first_name.-.$last_name.-conclusiondocument.");
move_uploaded_file($_FILES['$conclusiondocument']['tmp_name'], '/homepages/43/d95496899/htdocs/care/apliccant/'); 
rename(".$photo.", ".$first_name.-.$last_name.-photo.");
move_uploaded_file($_FILES['$photo']['tmp_name'], '/homepages/43/d95496899/htdocs/care/apliccant/'); 
rename(".$certification1.", ".$first_name.-.$last_name.-certification1.");
move_uploaded_file($_FILES['$certification1']['tmp_name'], '/homepages/43/d95496899/htdocs/care/apliccant/'); 
rename(".$certification2.", ".$first_name.-.$last_name.-certification2.");
move_uploaded_file($_FILES['$certification2']['tmp_name'], '/homepages/43/d95496899/htdocs/care/apliccant/'); 
Print_Applicant($uid, $status);
};

/* This function open a form to input the Information. */
Function Applicant_Form ($state, $uid){
$state = "Commit_Save";
echo "<table width=\"97%\" border=\"0\" align=\"center\">
</tr>
</table>
<FORM METHOD = \"POST\" ACTION=\"index.php?inhalt=applicant\">
<table border=\"0\" align=\"center\">
  <tr>
    <td><INPUT TYPE = \"hidden\" NAME = \"uid\" VALUE = \"$uid\"></td>
    <td><INPUT TYPE = \"hidden\" NAME = \"state\" VALUE = \"$state\"></td>
  </tr>
  <tr>
    <td class=\"inhalt\">Vorname: </td>
    <td align=\"left\"><INPUT TYPE = \"TEXT\" NAME=\"first_name\" VALUE = \"$first_name\" size=\"46\"></td>
  </tr>
    <tr>
    <td class=\"inhalt\">Nachname: </td>
    <td align=\"left\"><INPUT TYPE = \"TEXT\" NAME=\"last_name\" VALUE = \"$last_name\" size=\"46\"></td>
  </tr>  
  <tr>
    <td class=\"inhalt\">Straße und Nr: </td>
    <td align=\"left\"><INPUT TYPE = \"TEXT\" NAME=\"street\" VALUE = \"$street\" size=\"46\"></td>
  </tr>
  <tr>
    <td class=\"inhalt\">Plz und Ort:</td>
    <td align=\"left\"><INPUT TYPE = \"TEXT\" NAME=\"town\" VALUE = \"$town\" size=\"46\"></td>
  </tr>
  <tr>
    <td class=\"inhalt\"><br>Telefon: </td>
    <td align=\"left\"><br><INPUT TYPE = \"TEXT\" NAME=\"phone\" VALUE = \"$phone\" size=\"46\"></td>
  </tr>
  <tr>
    <td class=\"inhalt\">E-Mail: </td>
    <td align=\"left\"><INPUT TYPE = \"TEXT\" NAME=\"mail\" VALUE = \"$mail\" size=\"46\"></td>
  </tr>
  <tr>
    <td class=\"inhalt\"><br>Lebenslauf: </td>
    <td align=\"left\"><br><INPUT TYPE = \"file\" NAME=\"personalrecord\" VALUE = \"$personalrecord\" size=\"25\"></td>
  </tr>  
  <tr>
    <td class=\"inhalt\"><br>Schulabschluß: </td>
    <td align=\"left\"><br><INPUT TYPE = \"TEXT\" NAME=\"education\" VALUE = \"$education\" size=\"46\"></td>
  </tr>   
  <tr>
    <td class=\"inhalt\">Ausbildung: </td>
    <td align=\"left\"><INPUT TYPE = \"TEXT\" NAME=\"vocational\" VALUE = \"$vocational\" size=\"46\"></td>
  </tr>
    <tr>
    <td class=\"inhalt\">Abschlußurkunde: </td>
    <td align=\"left\"><INPUT TYPE = \"file\" NAME=\"conclusiondocument\" VALUE = \"$conclusiondocument\" size=\"25\"></td>
  </tr>
  <tr>
    <td class=\"inhalt\" valign=\"top\"><br><br>weiter Angaben:&nbsp;&nbsp;&nbsp;</td>
    <td><br><textarea cols=\"35\" rows=\"7\" NAME=\"info\" VALUE = \"$info\">".$info."</textarea></td>
  </tr>
    <tr>
    <td class=\"inhalt\"><br>Lichtbild: </td>
    <td align=\"left\"><br><INPUT TYPE = \"file\" NAME=\"photo\" VALUE = \"$photo\" size=\"25\"></td>
  </tr>
    <tr>
    <td class=\"inhalt\">aussagekräftiges Zeugnis: </td>
    <td align=\"left\"><INPUT TYPE = \"file\" NAME=\"certification1\" VALUE = \"$certification1\" size=\"25\"></td>
  </tr>
    <tr>
    <td class=\"inhalt\">aussagekräftiges Zeugnis: </td>
    <td align=\"left\"><INPUT TYPE = \"file\" NAME=\"certification2\" VALUE = \"$certification2\" size=\"25\"></td>
  </tr>
</table>
<p align=\"center\">
  <br>
  <INPUT TYPE=\"submit\" VALUE=\"Bewerbung senden\">
</p><br>
</td>
</tr>
</table>";
};

/* Print all informations for the user. */
Function Print_Applicant ($uid, $status) {
$result = mysql_query("SELECT * FROM care_applicant WHERE uid = '".$uid."';"); 
while($row = mysql_fetch_assoc($result)){ 
echo "<br><div align=\"center\" class=\"inhalt\"><b>". $status ."</b></div><br><br>";
$status = "";
echo "<TABLE align=\"center\" BORDER = 0 CELLPADDING = 2 CELLSPACING = 2>";
echo "<TR><TD VALIGN=\"top\" class=\"inhalt\">";
echo "Ihre Angaben:&nbsp;&nbsp;&nbsp;&nbsp;";
echo "</TD>";
echo "<TD class=\"inhalt\">";
echo "<b>Vorname:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b> ". $row['first_name'];
echo "<br><b>Nachname:&nbsp;&nbsp;&nbsp;</b> ". $row['last_name'];
echo "<br><b>Strasse:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b> ". $row['street'];
echo "<br><b>PLZ und Ort:&nbsp;</b> ". $row['town'];
echo "<br><br><b>Telefon:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b> ". $row['phone'];
echo "<br><b>E-Mail:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b> ". $row['mail'];
echo "<br><br><b>Abschluß:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b> ". $row['education'];
echo "<br><b>Ausbildung:&nbsp;&nbsp;</b> ". $row['vocational'];
echo "<br><br><b>weiter Informationen:</b><br><br>". $row['info'];
echo "<br><br><br></TD></TR>";
echo "</TABLE>";
}
};

/* The main loop.  Call functions based on the value of $state, which gets set via a hidden INPUT TYPE. */
switch($state):
case "";
Applicant_Form($state, $uid);
break;
case "Commit_Save";
Commit_Save($first_name, $last_name, $street, $town, $phone, $mail, $personalrecord, $education, $vocational, $conclusiondocument, $info, $photo, $certification1, $certification2);
break;
case "Print_Applicant";
Print_Applicant($uid, $status);
endswitch;
?>

So! Vom Gedankengang her ist das so richtig ? Oder stimmt Grundsätzlich in meine Code nicht?

Es grüßt euch da Maddin!
 

Stash

Grünschnabel
Seven Secrets hat gesagt.:
PHP:
<FORM METHOD = \"POST\" ACTION=\"index.php?inhalt=applicant\">

So sollte es richtig lauten, wenn man Datein mitschickt:
PHP:
<form enctype='multipart/form-data' action='index.php?inhalt=applicant' method='POST'>
 

Stash

Grünschnabel
PHP:
move_uploaded_file($_FILES['$personalrecord']['tmp_name'], '/homepages/43/d95496899/htdocs/care/apliccant/');

In welchem Verzeichnis liegt die php datei?
Wenn in dem Verzeichnis das Verzeichnis homepages/43/.... usw liegt musst du den ersten / weglassen also :

PHP:
move_uploaded_file($_FILES['$personalrecord']['tmp_name'], 'homepages/43/d95496899/htdocs/care/apliccant/');

ausser dem steht bei dir
PHP:
rename(".$personalrecord.", ".$first_name.-.$last_name.-personalrecord");

Variablen in Anführungszeichen zu schreiben kann man sich sparen aber bei dem strich nicht:
PHP:
rename($personalrecord, $first_name."-".$last_name."-personalrecord");

Ausserdem wuerde ich die erst hochladen und dann umbenennen.
 

Seven Secrets

Erfahrenes Mitglied
Okay, dann wohl so und in der Reihenfolge:

PHP:
move_uploaded_file($_FILES['$personalrecord']['tmp_name'], 'homepages/43/d95496899/htdocs/care/apliccant/');  
rename($personalrecord, $first_name."-".$last_name."-personalrecord");

Wenn du mir schreibst:
In welchem Verzeichnis liegt die php datei?

Heißt das für mich, das der Upload bei meinem Script noch gar nicht erfolgt ist. Oder sehe ich das falsch?
 

Stash

Grünschnabel
Nein, eigentlich wollte ich damit fragen in welchen Verzeichnis die PHP datei liegt.

Ich meine Vieleicht ist ja das Verzeichnis in das die Datei soll falsch angegeben.
PHP sollte auch eine Fehlermeldung ausgeben.
 

Seven Secrets

Erfahrenes Mitglied
also die applicate.php liegt unter: homepages/43/d95496899/htdocs/care dorthin geht auch die Domain! Aber slebst in diesem Verzeichnis kommen keine Datein an. Das Script solle die datein aber in dem unterverzeichnis applicant speichern.
 

Tabuk

Erfahrenes Mitglied
Hallo,
ich bin zwar kein Held in PHP, aber warum nicht einfach mit:
PHP:
move_uploaded_file($_FILES['personalrecord']['tmp_name'],"homepages/43/d95496899/htdocs/care/apliccant/".$first_name."-".$last_name."-personalrecord.txt");

MfG Tabuk
 

forsterm

Erfahrenes Mitglied
Hallo,
ein weiterer Fehler der mir noch aufgefallen ist, ist dass es nicht so,
PHP:
move_uploaded_file($_FILES['$conclusiondocument']['tmp_name']
sondern so
PHP:
move_uploaded_file($_FILES['conclusiondocument']['tmp_name']
heißen muss.

mfg
forsterm

Beitrag No: 600
 
Zuletzt bearbeitet:

Seven Secrets

Erfahrenes Mitglied
Ich habe gerade in einem Tutorial gelsen, das die Datei auf dem Server mit diesem Script ankommt, jedoch nur als Temporäre Datei und bei nicht unmittelbarer Verarbeitung sofort wieder gelöscht wird. Somit müßte man sie ja vom Temprären Platz auf dem server noch kopieren, oder? Dies soll mit copy geschehen, nur weiß ich nicht genau, von wo nach wo ich hier was kopieren soll?