Ankündigung

Einklappen
Keine Ankündigung bisher.

frage zu dateiupload(pdo)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • frage zu dateiupload(pdo)

    Hallo. ich ahbe einen Dateiupload funktioniert auch. index mit dem formular. und diese datei

    Code:
    <?php
    session_start();
    require_once("config.php");
    
    $upload_folder = 'upload/'; //Das Upload-Verzeichnis
    $filename = pathinfo($_FILES['datei']['name'], PATHINFO_FILENAME);
    $extension = strtolower(pathinfo($_FILES['datei']['name'], PATHINFO_EXTENSION));
    
    //Überprüfung der Dateiendung
    $allowed_extensions = array('png', 'jpg', 'jpeg', 'gif');
    if (!in_array($extension, $allowed_extensions)) {
        die("Ungültige Dateiendung. Nur png, jpg, jpeg und gif-Dateien sind erlaubt");
    }
    //Überprüfung der Dateigröße
    $max_size = 500 * 1024; //500 KB
    if ($_FILES['datei']['size'] > $max_size) {
        die("Bitte keine Dateien größer 500kb hochladen");
    }
    //Überprüfung dass das Bild keine Fehler enthält
    if (function_exists('exif_imagetype')) { //Die exif_imagetype-Funktion erfordert die exif-Erweiterung auf dem Server
        $allowed_types = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
        $detected_type = exif_imagetype($_FILES['datei']['tmp_name']);
        if (!in_array($detected_type, $allowed_types)) {
            die("Nur der Upload von Bilddateien ist gestattet");
        }
    }
    //Pfad zum Upload
    $new_path = $upload_folder . $filename . '.' . $extension;
    //Neuer Dateiname falls die Datei bereits existiert
    if (file_exists($new_path)) { //Falls Datei existiert, hänge eine Zahl an den Dateinamen
        $id = 1;
        do {
            $new_path = $upload_folder . $filename . '_' . $id . '.' . $extension;
            $id++;
        } while (file_exists($new_path));
    }
    //Alles okay, verschiebe Datei an neuen Pfad
    move_uploaded_file($_FILES['datei']['tmp_name'], $new_path);
    echo 'Bild erfolgreich hochgeladen: <a href="' . $new_path . '">' . $new_path . '</a>';
    
    $statement = $pdo->prepare("INSERT INTO users (ava) VALUES (:filename) WHERE id = :userid");
    $statement->execute(array('userid' => $_SESSION['userid']));
    ?>
    der Upload klappt aber der eintrag in die datenbank nicht. datenbank ist wie folgt es gibt eine spalte ava varchar 255

    wer kann mir da weiterhelfen bzw nen denkanstoss geben?

  • #2
    hallo dartler,
    wilkommen im forum, schön dass du die code tags edneckt hast (wir haben auch php tags aber immerhin tags.
    nett dass du an eine lesbare zeilenlänge sowie einrücken gedacht hast.

    der Upload klappt aber der eintrag in die datenbank nicht. datenbank ist wie folgt es gibt eine spalte ava varchar 255
    dan liesse sich ja das auch nur mit dem insert darstellen:

    pdo error:
    https://www.php.net/manual/de/pdo.error-handling.php

    und debugging:
    https://php-de.github.io/#debugging

    Kommentar


    • #3
      a) Dein Insert-Statement ist falsch, dort gibt es kein WHERE
      b) Du hast 2 Platzhalter in Deinem Statment (:filename, :userid), übergibst aber beim execute nur einen Wert (userid)

      Kommentar


      • #4
        danke für die hilen.

        Kommentar

        Lädt...
        X