Dateinamen ändern in Bild_id

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

  • Dateinamen ändern in Bild_id

    Ich hab hier ein verzwacktes Problem, und zwar hab ich ein Uploadscript zusammengebastelt. Das funktioniert auch soweit. Der Dateiname wird auch ohne probleme in eine Datenbank geschrieben. Soweit bin ich auch vollstens zufrieden, aber ich möchte jetzt folgendes machen, und zwar habe ich bisher für jeden user immer ein extra verzeichniss angelegt und die bilder da rein gespeichert, aber das möchte ich jetzt anders machen und die Bilder alle in ein Verzeichnis speichern, dafür müsste ich aber die Namen der Bilder ändern, denn es könnte ja passieren das zwei leute ihre bilder gleich benennen. Deshalb soll das Script die Bilder so umbennen das sie fortlaufend nach der Bild_id die sie in der Datenbank erhalten nummeriert werden. Zum besseren verständniss hier einmal die tabelle:

    Also sollte der Bildname hinterher irgendwie so lauten

    BildId | UserId | BildName
    --------------------------------
    ---1---|-z.B. 3--|-0001.jpg
    ---2---|-z.B. 7--|-0002.jpg

    wie kann ich sowas bewerkstelligen? Mein Script sieht im moment so aus:

    PHP-Code:
    <?
    $size = $bild_size; // Größe der Datei
      $name = $bild_name; // Der Originalname
      if(eregi("(jpg|gif)$",$name))
      {
        $ftype == "image/gif"
        {
          $fname = $id.gif // hier müsste jetzt der vorher irgendwie erstellte name hin denke ich
        }
        else
        {
        $fname = $id.jpg // hier müsste jetzt der vorher irgendwie erstellte name hin denke ich
        }
        if($size<32700 AND $size!=0)
        {
          copy($bild,"../mitglieder/$fname");
          echo "Die Datei erfolgreich hochgeladen.<br>";
          echo "Größe: ".$size." Byte<br>";
          echo "Name: ".$name."<br>";
          echo "MIME-Type: ".$type."<br>";
          #
          include("../module/verb.inc");
          $Query  = "INSERT INTO User_Bilder ( UserId, BildName ) VALUES ( '$UserId', '$fname' )";
          $Result = mysql_query($Query)
          or print "&gt;&gt;&gt; MySQL-Error: ".mysql_errno()." -&gt; ".mysql_error()."<br>\n";
          #
        }
        else
        {
          echo "Ihre Datei ist über 30 KB oder gleich 0";
        }
      }
      else
      {
        echo "Falsche Erweiterung: ".$name;
      }
    ?>

  • #2
    wie sieht denn deine bisherige datenbank aus?
    Haben die User mehrere Bilder?

    Kommentar


    • #3
      jap, das is ja das problem

      Kommentar


      • #4
        so groß ist es nicht! (okay, hätte mans von anfang an so gemacht, wäres einfacher.

        Dann beantworte mir aber mal meine andere frage.

        Kommentar


        • #5
          Oder geht es dir gar nicht darum, die alten Bilder zu importieren?

          Kommentar


          • #6
            ups, bin n bischen blind in letzter Zeit *g* die daten bank sieht wie oben aus, nur das die Bilder ihren ursprünglichen namen halt noch haben und nicht nach der id benannt werden. Also:

            BildId | UserId | BildName
            --------------------------------
            ---1---|-z.B. 3--|-baum.jpg
            ---2---|-z.B. 7--|-auto.gif

            Da die Seite, in diesem Fall glücklicherweise, noch im aufbau ist muß man sich um das evtl. umbennen der Bilder keine Gedanken machen, da es noch keine zum umbenennen gibt.

            Kommentar


            • #7
              Da Bild-ID fortlaufend nummeriert ist, würde ich vorschlagen, dass du (nach Überprüfung ob das überhaupt hochgeladen werden darf) erst den Eintrag in deine Datenbank machst und danach die dann ja vorhandene eindeutige ID als Namen für das Bild verwendest.

              mysql_insert_id, bzw. LAST_INSERT_ID() (wenn deine Spalte ID bigint is) in ner weiteren SQL-Abfrage
              Zuletzt geändert von mrhappiness; 04.01.2003, 12:29.
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                du könntest auch den dateinamen als md5() verschlüsseln.

                nimm eine zufallszahl, mache daraus ein md5 und hänge die dateiendung dran. das ganze passiert schon beim upload. diesen neuen md5.namen kannst du dann als bildname in deine DB schreiben.

                der name würde dann z.b. so aussehen: chcne73ccx3j78xn38xdv7jcj34cjf.gif

                dadurch, dass es md5 ist, sollte es ziemlich unterschiedlich sein ... zur sicherheit kannst du ja auch noch den usernamen davor hängen.
                nickname_chcne73ccx3j78xn38xdv7jcj34cjf.gif

                dann bist du auf der absolut sicheren seite.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Aber dann bräuchte ich doch eine Spalte in meiner tabelle oder?

                  ID -- UserID -- Bildname (MD5) -- Bildname für Anzeige
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    den namen für die anzeige brauchst du eigentlich nicht, wenn du nicht den orginalnamen darstellen willst.

                    wenn doch, dann braucht man aber auch eine spalte, wenn der neue name nur eine nummer ist.
                    das prinzip wäre ja das gleiche, nur dass bei md5 man davon ausgehen kann, dass es ziemlich eindeutig wäre .....
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Original geschrieben von mrhappiness
                      ...erst den Eintrag in deine Datenbank machst und danachdie dann ja vorhandene eindeutige ID als Namen für das Bild verwendest.
                      Hab geschrieben, dass er die ID als Dateinamen nehmen will, warum also noch ne Spalte? Und eindeutig müsste es auch sein, sonst liegts an SQL...
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        schon klar. das geht ja auch bestimmt super, was du meinst, und das ist auch eindeutig, das die spalte id ja einen key hat.

                        aber du müsstest dann ja zwei querys machen.

                        - insert the new picture.
                        - update the new picture where lastinsert_id()

                        in der md5 machst du die eindeutigkeit schon vorher und dann nur ein insert, aber kein update mehr.

                        beide varianten sind auf jeden fall eindeutig.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          dafür komm ich mit einer spalte weniger aus

                          Einigen wir uns einfach darauf, dass wir beide gut sind!

                          Imion wird sich das raussuchen, was ihm besser gefällt (oder noch was drittes *g*).

                          btw:
                          Ich muss gar nix updaten in der DB:
                          PHP-Code:
                          mysql_query("INSERT INTO bilder (UserID, Bildname) VALUES($userid,".$_FILES["userfile"]["name"].")";
                          move_uploaded_file($_FILES["userfile"]["tmp_name"],mysql_insert_id()); 
                          so in etwa hab ichs mir gedacht
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            dann fehlt dir doch aber die dateiendung, wenn du einfach einen move machst, oder?

                            aber machbar wäre das denke ich schon.

                            genau. er soll es sich aussuchen...
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              aba ihr beiden habt daran gedachnt das ich eigentlich noch noob bin und mir das mühsam zusammenkauen muß ja
                              S wär nett wenn ihr mir das jetzt mal etwas genauer erklären könntet, *liebguck*ich werds gleich mal selbst versuchen, irgendwie, kann mann nicht eure methoden zusammenführen?

                              Kommentar

                              Lädt...
                              X