Ankündigung

Einklappen
Keine Ankündigung bisher.

Bilder in der Datenbank speichern, wenn sie ausgewählt wurden.

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

  • Bilder in der Datenbank speichern, wenn sie ausgewählt wurden.

    Vielleicht kann mir jemand helfen.

    Ich versuche zu distanzieren.

    Wenn jemand neue Bilder ausgewählt hat sollen diese in der Datenbank gespeichert werden.
    Wenn nicht sollen die 'alten' Bilder in der Datenbank bleiben.

    Code:
     
     if(isset($_POST['submit']) && !empty($files)){   neue Bilder in der Datenbank speichern  }else if(isset($_POST['submit']) && empty($files)){  keine neuen Bilder in der Datenbank speichern (alte belassen)  }
    Vielen Dank dafür


  • #2
    Und was ist deine Frage?

    Bitte formatiere deinen Code so, dass man nicht horizontal scrollen muss.

    Ausserdem zeige ein nachvollziehbares Beispiel und kein Codefragment mit dem niemand etwas anfangen kann.

    Hier fehlt zum Beispiel die Datenbank, ein Verzeichnis zum Speichern der Bilder, das Formular, die Prüfung der Parameter, eigentlich alles.

    Kommentar


    • #3
      Code:
      if(isset($_POST['submit']) && !empty($_FILES['files']['tmp_name'])){
      
          $titel = $_POST['titel'];
          $art = $_POST['art'];
          $files = $_FILES['files'];
          $plz = $_POST['plz'];
          $ort = $_POST['ort'];
          $vorname = $_POST['vorname'];
          $nachname = $_POST['nachname'];
          $gebaeude_art = $_POST['gebaeude_art'];
          $grundstueck = $_POST['grundstueck'];
          $zimmer = $_POST['zimmer'];
          $quadrat = $_POST['quadrat'];
          $miete = $_POST['miete'];
          $preis_art = $_POST['preis_art'];
          $beschreibung = $_POST['beschreibung'];
          $telefon = $_POST['telefon'];
          $password = $_POST['password'];
          $password2 = $_POST['password2'];
      
          if($password != $password2){
      
               $fehler = "Die Passwörter stimmen nicht überein...";
      
          }
      
       $statement = $pdo->prepare("UPDATE objekte SET titel = :titel, art = :art, plz = :plz, ort = :ort, gebaeude_art = :gebaeude_art, grundstueck = :grundstueck, zimmer = :zimmer, quadrat = :quadrat, miete = :miete, preis_art = :preis_art, beschreibung = :beschreibung WHERE id = '{$change}'");
      
      $result = $statement->execute(array('titel' => $titel, 'art' => $art, 'plz' => $plz, 'ort' => $ort, 'gebaeude_art' => $gebaeude_art, 'grundstueck' => $grundstueck, 'zimmer' => $zimmer, 'quadrat' => $quadrat, 'miete' => $miete, 'preis_art' => $preis_art, 'beschreibung' => $beschreibung));  
      
          $ergebnis = "SELECT FILE_NAME FROM auktion_images WHERE ANGEBOT_ID = '{$change}'";
          $resultat = $pdo->query($ergebnis);
      foreach ($resultat as $reihe): ?>
                  <?php unlink('image_uploads/'.$reihe["FILE_NAME"]); 
                  $statement = $pdo->prepare("delete from auktion_images where ANGEBOT_ID = '{$change}'");
                  $statement->execute(array());
                  endforeach;
      
          $query = "INSERT into auktion_images(`ANGEBOT_ID`, `FILE_NAME`, `FILE_SIZE`,`FILE_TYPE`)
                   VALUES(:ANGEBOT_ID, :FILE_NAME, :FILE_SIZE, :FILE_TYPE)";
          $stmt  = $pdo->prepare($query);
      
          foreach($_FILES['files']['tmp_name'] as $key => $error ){
              if ($error != UPLOAD_ERR_OK) {
                  $errors[] = $_FILES['files']['name'][$key] . ' wurde nicht hochgeladen.';
                  continue;
              }
      
              $file_name = $key.$_FILES['files']['name'][$key];
              $file_size = $_FILES['files']['size'][$key];
              $file_tmp  = $_FILES['files']['tmp_name'][$key];
              $file_type = $_FILES['files']['type'][$key];  
              if($file_size > 2097152){
                  $errors[] = 'Bilder müssen kleiner als 2 MB sein.';
                  continue;
              }
              try{
                  $stmt->bindParam( ':ANGEBOT_ID', $change, PDO::PARAM_STR );
                  $stmt->bindParam( ':FILE_NAME', $file_name , PDO::PARAM_STR );
                  $stmt->bindParam( ':FILE_SIZE', $file_size, PDO::PARAM_STR );
                  $stmt->bindParam( ':FILE_TYPE', $file_type, PDO::PARAM_STR );
                  $stmt->execute();
      
                  $desired_dir="image_uploads";
      
                  if(is_dir($desired_dir)==false){
                      mkdir($desired_dir, 0700);// Create directory if it does not exist
                  }
                  if(is_file($desired_dir.'/'.$file_name)==false){
                      move_uploaded_file($file_tmp,$desired_dir.'/'.$file_name);
                  }else{    //rename the file if another one exist
                      $new_file=$desired_dir.'/'.$file_name.time();
                      move_uploaded_file($file_tmp,$new_file) ;               
                  }
              }catch(PDOException $e){
                  $errors[] = $file_name . 'nicht in Datenbank gespeichert.';
                  echo $e->getMessage();
              }   
          }}
          else if(isset($_POST['submit']) && empty($_FILES['files'])){
      
          $titel = $_POST['titel'];
          $art = $_POST['art'];
          $plz = $_POST['plz'];
          $ort = $_POST['ort'];
          $vorname = $_POST['vorname'];
          $nachname = $_POST['nachname'];
          $gebaeude_art = $_POST['gebaeude_art'];
          $grundstueck = $_POST['grundstueck'];
          $zimmer = $_POST['zimmer'];
          $quadrat = $_POST['quadrat'];
          $miete = $_POST['miete'];
          $preis_art = $_POST['preis_art'];
          $beschreibung = $_POST['beschreibung'];
          $telefon = $_POST['telefon'];
          $password = $_POST['password'];
          $password2 = $_POST['password2'];
      
          if($password != $password2){
      
               $fehler = "Die Passwörter stimmen nicht überein...";
      
          }
      
       $statement = $pdo->prepare("UPDATE objekte SET titel = :titel, art = :art, plz = :plz, ort = :ort, gebaeude_art = :gebaeude_art, grundstueck = :grundstueck, zimmer = :zimmer, quadrat = :quadrat, miete = :miete, preis_art = :preis_art, beschreibung = :beschreibung WHERE id = '{$change}'");
      
      $result = $statement->execute(array('titel' => $titel, 'art' => $art, 'plz' => $plz, 'ort' => $ort, 'gebaeude_art' => $gebaeude_art, 'grundstueck' => $grundstueck, 'zimmer' => $zimmer, 'quadrat' => $quadrat, 'miete' => $miete, 'preis_art' => $preis_art, 'beschreibung' => $beschreibung)); 
      
          }
      Code:
      CREATE TABLE `auktion_images` (
        `id` int(11) NOT NULL,
        `ANGEBOT_ID` int(11) NOT NULL,
        `FILE_NAME` varchar(255) COLLATE utf8_bin NOT NULL,
        `FILE_SIZE` varchar(255) COLLATE utf8_bin NOT NULL,
        `FILE_TYPE` varchar(255) COLLATE utf8_bin NOT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

      Kommentar


      • #4
        Die Frage: Wie schaffe ich es bei Submit Bilder in der Datenbank zu halten bzw zu ersetzen?

        Kommentar


        • #5
          Zitat von protestix Beitrag anzeigen
          Und was ist deine Frage?

          Bitte formatiere deinen Code so, dass man nicht horizontal scrollen muss.

          Ausserdem zeige ein nachvollziehbares Beispiel und kein Codefragment mit dem niemand etwas anfangen kann.

          ..., ein Verzeichnis zum Speichern der Bilder, ....
          Das mit dem Verzeichnis funktioniert...

          Kommentar


          • #6
            PHP-Code:
            <tr>
                         <td colspan="2">
                            <label>Bilder:</label> 

                            <input style="width:100%" class="upload" type="file" name="files[]" accept="image/*" multiple onChange="fileThumbnail(this.files);">
                            </td>
                         </tr>
                         <tr>
                         <td colspan="2"> 
                             <div  style="min-height:160px" id="thumbnail">
                                 <?php
                        $ergebnis 
            "SELECT FILE_NAME FROM auktion_images WHERE ANGEBOT_ID = '{$change}'";
                
            $resultat $pdo->query($ergebnis);
            foreach (
            $resultat as $row): ?>
                        <img src='image_uploads/<?php echo $row['FILE_NAME']; ?>' style="max-width:101px"><?php endforeach; ?></div>
                            </td>
                         </tr>

            Kommentar


            • #7
              Zitat von king-ich Beitrag anzeigen
              Die Frage: Wie schaffe ich es bei Submit Bilder in der Datenbank zu halten bzw zu ersetzen?
              In dem du den binären Inhalt des Bildes holst (z.B. mit file_get_contents()) und diesen dann in ein BLOB Feld der Datenbanktabelle schreibst.

              Beispiele findest du in diesem Thread

              Kommentar


              • #8
                Von stackoverflow.com habe ich das:

                https://stackoverflow.com/questions/...xists-in-mysql

                Kann mir jemand helfen diesen meinen Bedürfnissen anzupassen?

                Code:
                $stmt = $pdo->prepare("REPLACE INTO `auktion_images`
                SET ANGEBOT_ID` = ‘?′ ,
                ``FILE_NAME` = '?', `FILE_SIZE` = '?' ,`FILE_TYPE` = '?'"); // Ich weiß nicht was man statt der Fragezeichen schreiben muss
                
                    $stmt->execute();

                Kommentar


                • #9
                  Zitat von Meister1900 Beitrag anzeigen

                  In dem du den binären Inhalt des Bildes holst (z.B. mit file_get_contents()) und diesen dann in ein BLOB Feld der Datenbanktabelle schreibst.

                  Beispiele findest du in diesem Thread
                  Ich speicher die Bilder zusätzlich in einem Ordner auktion_images...

                  Kommentar


                  • #10
                    Hast du dir das verlinkte Beispiel von hellbringer aus dem anderen Thread mal angeschaut und ausprobiert?

                    Kommentar


                    • #11
                      Zitat von Meister1900 Beitrag anzeigen

                      In dem du den binären Inhalt des Bildes holst (z.B. mit file_get_contents()) und diesen dann in ein BLOB Feld der Datenbanktabelle schreibst.

                      Beispiele findest du in diesem Thread
                      Bilder speichert man nicht in der Datenbank, sondern nur den Pfad zu einem Bild!

                      Zitat von king-ich Beitrag anzeigen

                      Ich speicher die Bilder zusätzlich in einem Ordner auktion_images...
                      Warum speicherst du Bilder überhaupt doppelt (einmal im Filesystem und ein zweites mal in der Datenbank) ab? Es reicht doch vollkommen aus, wenn du die Bilder im Filesystem ablegst und nur den Pfad zu dem Bild in der Datenbank speicherst.

                      Kommentar


                      • #12
                        Bilder speichert man nicht in der Datenbank, sondern nur den Pfad zu einem Bild!
                        in 99.99993437452412 % der Fälle. Diskussionen dazu finden sich hier zu hauf.
                        Deine App ist nicht der unter 1% Sonderfall.

                        Kommentar


                        • #13
                          Zitat von Meister1900 Beitrag anzeigen
                          Hast du dir das verlinkte Beispiel von hellbringer aus dem anderen Thread mal angeschaut und ausprobiert?
                          Angeschaut: Ja.

                          Ausprobiert: Nein.

                          Warum?: Weil ich in der Datenbank die Angebot_id, Dateiname, -größe & Dateityp speicher, und dann die Bilder in einem Ordner.

                          Kommentar


                          • #14
                            13 Beiträge bereits, was du eigentlich genau machen willst resp. was Dein Problem ist konntest du immer noch nicht klar erklären.

                            Kommentar


                            • #15
                              Zitat von king-ich Beitrag anzeigen
                              Von stackoverflow.com habe ich das:

                              https://stackoverflow.com/questions/...xists-in-mysql

                              Kann mir jemand helfen diesen meinen Bedürfnissen anzupassen?

                              Code:
                              $stmt = $pdo->prepare("REPLACE INTO `auktion_images`
                              SET ANGEBOT_ID` = ‘?′ ,
                              ``FILE_NAME` = '?', `FILE_SIZE` = '?' ,`FILE_TYPE` = '?'"); // Ich weiß nicht was man statt der Fragezeichen schreiben muss
                              
                              $stmt->execute();
                              Wenn du nicht weisst was die Fragezeichen da im Query bedeuten, dann schau ins Handbuch -> Prepared Statements!
                              Wir übernehm dir hier nicht das lernen, da wir es schon gelernt haben und wissen, du scheinbar jedoch noch nicht.

                              Kommentar

                              Lädt...
                              X