Formular mit PDF-Upload

marcaurel

Mitglied
Hallo,

ich hab bei einem Formular, wo der Nutzer zum einen Dateien eingeben soll, zum Anderen ein PDF hochladen soll ein Problem. Zunächst einmal die Codes. Das Formular:

Code:
<form action="register.php" method="post" accept-charset="utf-8" enctype="multipart/form-data">
        E-Mail:    <input type="email" size="30" maxlength="250" name="email"><br><br>
        Passwort:        <input type="password" size="20"  maxlength="250" name="passwort">
        Passwort wiederholen:        <input type="password" size="20" maxlength="250" name="passwort2">
        Name:        <input type="text" id="name" size="25" maxlength="250" name="name"><br><br>
        <input type="file" name="datei" size="50" accept="pdf/*">
       
        <input type="submit" value="Fertig">
</form>

Das Register.php:
Code:
<?php
include("connect.php");
 
$email = mysqli_real_escape_string($connection, $_POST['email']);
$passwort = mysqli_real_escape_string($connection, $_POST['passwort']);
$name = mysqli_real_escape_string($connection, $_POST['name']);

if($email == "" || $passwort == "" || $name == "")
{
echo "Bitte f&uuml;llen Sie alle Felder aus!";
}
else
{
if($passwort != $_POST['passwort2'])
{
echo "Die Passwörter stimmen nicht überein!";
}
else
{
$sql = "INSERT INTO daten (email, passwort, name) VALUES ('$email', '$passwort', '$name')";

$dname = explode(".",$_FILES["datei"]["name"]);
$dnamesize = count($dname);
$upfile_ext = $dname[$dnamesize-1];

if($_FILES["datei"]["size"]>0 && $upfile_ext=="pdf")
{
    copy($_FILES["datei"]["tmp_name"],"p317.pdf");
    echo "Die Daten wurden erfolgreich hochgeladen!";
   
}
else
{
    echo "<p> Kopierfehler: Datei nicht vorhanden oder keine PDF-Datei</p>";
}
   
   

}
else
{
    echo "Error" . $sql . "<br/>" . $connection->error;
}
}
}

?>

Nun zum Problem: Wenn ich dies so ausführe dann wird die Datei ohne Probleme so hochgeladen wie ich es will. Allerdings werden nicht wie beabsichtigt gleichzeitig die Daten in die mysql Tabelle eingetragen. Wenn ich aber folgenden Passus rauslasse, werden die Daten dort eingetragen.

Code:
$dname = explode(".",$_FILES["datei"]["name"]);
$dnamesize = count($dname);
$upfile_ext = $dname[$dnamesize-1];

if($_FILES["datei"]["size"]>0 && $upfile_ext=="pdf")
{
    copy($_FILES["datei"]["tmp_name"],"p317.pdf");
    echo "Die Daten wurden erfolgreich hochgeladen!";
   
}
else
{
    echo "<p> Kopierfehler: Datei nicht vorhanden oder keine PDF-Datei</p>";
}

Nur in Kombination scheint es nicht zu funktionieren bzw finde ich den Fehler nicht :/ hat jemand vill eine Idee?
 
Du hast einen Fehler in der IF-Abfrage.
Du hast:
PHP:
if(....){
    .....
}else{
    ....
}else{
    ....
}
zweimal else geht nicht bei eine IF-Abfrage.
Dieses ändern dann klappt dies auch.
Wenn Du Deinen Code mit einrücken versiehst fällt sowas sofort auf.
 
Hey,

Danke für deine Antwort! Ich hab das nun wie Folgt umgeändert:

Code:
<?php
include("connect.php");
 
$email = mysqli_real_escape_string($connection, $_POST['email']);
$passwort = mysqli_real_escape_string($connection, $_POST['passwort']);
$name = mysqli_real_escape_string($connection, $_POST['name']);

if($email == "" || $passwort == "" || $name == "")
{
echo "Bitte f&uuml;llen Sie alle Felder aus!";
}
else
{
if($passwort != $_POST['passwort2'])
{
echo "Die Passwörter stimmen nicht überein!";
}
else
{
$sql = "INSERT INTO daten (email, passwort, name) VALUES ('$email', '$passwort', '$name')";

$dname = explode(".",$_FILES["datei"]["name"]);
$dnamesize = count($dname);
$upfile_ext = $dname[$dnamesize-1];
   
if($_FILES["datei"]["size"]>0 && $upfile_ext=="pdf")
{
    copy($_FILES["datei"]["tmp_name"],"p317.pdf");
    echo "Die Daten wurden erfolgreich hochgeladen!";   
}
else
{
    echo "Error" . $sql . "<br/>" . $connection->error;
}
}
}
?>

Allerdings funktioniert es immernoch nicht. Ein PDF, wenn ich es hochladen versuche wird wie gewollt im Verzeichnis gespeichert. Jedoch wird nichts in die Datenbank eingetragen :( Fällt Euch vill noch ein Fehler auf?
 
Du erstellst eine SQL aber trägst es nirgendwo ein, sondern erstellst nur die Variable:
PHP:
$sql = "INSERT INTO daten (email, passwort, name) VALUES ('$email', '$passwort', '$name')";
aber das absenden an die DB machst Du nicht.
Da fehlt noch was, sprich das mysqli_query.
 

Neue Beiträge

Zurück