mkdir()

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

  • #16
    mal abgesehen davon dass der db-eintrag noch nicht funktioniert:

    durch die for-schleife wird ja jedesmal der vorherige eintrag in der db überschrieben!? am schluss steht nur noch der letzte eintrag drinnen!?!

    das bringt mich ja nicht weiter!

    kann man denn in 1 db-feld mehrere sachen hintereinander reinschreiben, ohne die vorherigen zu löschen? und kann man die später wieder einzeln abfragen!?

    ...ich verzweifel noch an diesem Problem!!

    Kommentar


    • #17
      überschreiben kann mannur schon bestehende Datensäätze. und dazu nimmt man UPDATE.

      in meinemBeispiel steht INSERT und das fügt einen neuen datensatz hinzu, da wird nix überschrieben
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #18
        aber das genau ist ja das problem!

        ich will ja mit diesem insert von dem dateinamen keinen neuen datensatz erzeugen.

        beim absenden meines formulars soll genau ein datensatz erstellt werden.
        da rein sollen informationen aus textfeldern, auswahlmenüs und eben die dateinamen.

        ich hab in meiner tabelle ein feld das heisst attachment. Dort könnte ich jetzt den namen einer datei reinschreiben und sie dadurch per link im html-bereich aufrufen!

        da ich aber nun zu einem datensatz bis zu 7 bilder habe, benötige ich ja für jeden Dateinamen ein eigenes Feld!

        damit dann jeder dateinamen in einem anderen dieser 7 felder gespeichert wird müsste ich es irgendwie hinbekommen, dass bei ersten durchlauf der for-schleife das 1. feld genommen wird, beim zweiten durchlauf das 2. und beim letzten durchlauf das letzte.!!

        Ich hoff ich hab mein problem verständlich geschildert!

        wenn nicht, bitte einfach nachfragen!

        Gruß

        karibikjoe

        Kommentar


        • #19
          verstanden, aber ich würd da lieber ein textfeld kurzbeschreibung machen, dass für alle bilder gleich ist

          dann hast du für jedes bild einen datensatz und kannst mit
          Code:
          SELECT *
          FROM tabelle
          WHERE kurzbeschreibung='Treffen mit Herr Schulz'
          alle bilder dazu ausgeben
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #20
            hmm, ...!

            ist es denn auch möglich, dass ich in der for-schleife, die die bilder hochläd eine weitere anweisung einbaue, die bei jedem durchlaufen der schleife auch das db-feld wechselt.

            genauer gesagt:

            beim ersten durchlauf der schleife ... sql_schreibe dateinamen in db-feld1
            beim ersten durchlauf der schleife ... sql_schreibe dateinamen in db-feld2
            beim ersten durchlauf der schleife ... sql_schreibe dateinamen in db-feld3
            beim ersten durchlauf der schleife ... sql_schreibe dateinamen in db-feld4
            beim ersten durchlauf der schleife ... sql_schreibe dateinamen in db-feld5
            beim ersten durchlauf der schleife ... sql_schreibe dateinamen in db-feld6
            beim ersten durchlauf der schleife ... sql_schreibe dateinamen in db-feld7

            dann müsste ich meine tabelle nur um 6 Felder erweitern, und es wäre eindeutig, dass alle dateien zu diesem datensatz gehören!!

            mfg

            karibikjoe

            Kommentar


            • #21
              kannst du auch machen, aber dann musst do noch irgendwo speichern wieviel bilder du hast, oder du musst immer schauen, ob z.b. db-feld 6 leer is. und noch eventueller steht ja trotzdem in db-feld7 was drin

              und wenn du noch ein bild mehr erlauben willst musst du wieder deinen tabellenaufbau, dein formular und dein skript ändern
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #22
                aber es wäre doch für den eingebenden einfacher und für mich eindeutiger, oder!?

                dann müsste der eingebende keine Kurzbeschreibung machen (die könnte ja gegebenenfalls auch zweimal die selbe sein, dann funktioniert es auch nicht)

                wird diese for-anweisung nicht sowieso für jedes file-feld ausgeführt?
                spielt es da eine rolle wenn dann z. b. im feld 6 nichts steht und im feld7 wieder ein eintrag ist?!
                oder wird einfach da wo eine datei ist ein db-eintrag gemacht, und da wo keine datei ist keiner bzw. ein "leerer" eintrag?

                das mit der mehrarbeit ist wohl war, aber ich bin mir ziemlich sicher, dass die 7 file-felder reichen werden. somit brauch ich es nur einmal zu ändern und ich häte meine ruhe.!

                mit welchem php-code sage ich dass er bei jedem schleifendurchlauf ein anderes db-feld ansprechen soll!?

                Kommentar


                • #23
                  wenn du 7 file-felder in deinem formular hast, der werte benutzer in feld 1, feld5 und feld7 was einträgt und das hochlädt, wo trägst du das ein?

                  du musst alle 7 aus der db lesen, schauen ob sie leer sind und wenn nicht das entsprechende bild öffnen, wobei es da wieder vorkommen kann, dass du den gleichen namen mehrmals verwendest.

                  wenn du für jedes bild einen eintrag anlegst, kann ruhig jedes bild "Essen mit Tante Pia" heißen, da du intern die id des eintrags als name verwendest.
                  kannst ja auch statt kurzbeschreibung automatisch ne eindeutige id per uniqid generieren lassen und die reinschreiben

                  einfacher und eleganter isses auf jeden fall (find ich)


                  wenn du partout bei deiner variante bleiben willst:
                  du kannst ja alles in einem rutsch machen
                  Code:
                  INSERT INTO tabelle
                  SET
                    bild1='blah',
                    bild2='blubb'
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #24
                    das versteh ich jetzt nicht!?

                    wenn ich doch in dieser for-schleife sagen kann, dass beim ersten durchlauf in das feld1 der tabelle geschrieben werden soll:

                    angenommen es befinden sich in den file-feldern folgende dateien:

                    feld1 : onkel.jpg
                    feld4 : tanke.bmp
                    feld7 : oma.jpg

                    beim ersten durchlauf der for schleife wird in das feld1 der datenbank $id.$_FILES['userfile']['name'], also zb. 15onkel.jpg geschrieben.

                    beim zweiten durchlauf der for schleife wird nichts in das feld2 geschrieben, da nichts im feld2 drinn steht.

                    ....

                    beim siebten durchlauf der for-schleife wird in das feld7 der datenbank $id.$_FILES['userfile']['name'], also zb. 15oma.jpg gschrieben.


                    dann kann ich in einer select-anweisung sagen:

                    select feld1, feld2 ..., feld7 from tabelle where id = 15

                    und bekomm automatisch alle dateinamen aufgelistet.
                    dahinter noch einen link gesetzt und das bild öffent sich bei einem klick!

                    ist das wirklich nicht möglich oder ungeeignet - du bist doch der PROFI!

                    wie kann ich denn festlegen in welches feld der tabelle beim 1, 2, 3,....7ten durchlauf der for-schleife geschrieben wird?

                    Kommentar


                    • #25
                      wenn du unbedingt mehrere felder nacheinander füllen willst, musst du nach dem ersten schreiben (dem erstellen des eintrags) die id auslesen und dann
                      Code:
                      UPDATE
                      WHERE id=<die id eben>
                      machen. dann benennst du die spalten am besten so wie sie auch in deinem formular heißen.

                      aber was machst du wenn jemand xyz.jpghochlädt, es die datei aber schon gibt?

                      was spricht denn gegen:
                      PHP-Code:
                      $unique=uniqid('upload',true);
                      for(
                      $i=0;$i<count($_FILES['userfile']['name']);$i++)
                        if (
                      $_FILES['userfile']['error']==0)
                        {
                           
                      $sql="INSERT INTO tabelle
                                 SET
                                    displayname='"
                      .$_FILES['userfile']['name'][$i]."',
                                    gruppe='"
                      .$unique."'";
                           
                      mysql_query($sql) or die(mysql_error());
                           
                      $id=mysql_insert_id();
                           
                      move_uploaded_file($_FILES['userfile']['tmp_name'][$i], $_SERVER['DOCUMENT_ROOT'].'images/'.$i;
                        } 
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #26
                        ja! stimmt was du sagst!

                        aber statt uniqid verwende ich jetzt die auto_increment ID des datensatzes, der in die andere tabelle geschrieben wird!

                        somit weiß ich auch welcher datensatz der tabelle x zu welchen datensätzen der tabelle y (die mit den dateinamen) gehört.

                        Gruß

                        karibikjoe

                        Kommentar


                        • #27
                          ich habs jetzt soweit hinbekommen!

                          der name der datei wird mit der id des datensatzes in einer eigenen tabelle gespeichert.

                          nur beim abfragen der tabelle erhalte ich jetzt immernoch alle 7 felder, auch wenn in dem einen oder anderen nichts drin´steht!

                          wie kann ich in der select-anweisung sagen, dass er nur datensätze auswählen soll, in denen im feld "displayname" etwas drinnen steht!?
                          so also das feld displayname nicht leer ist.

                          $result = mysql_query(
                          "SELECT ???????? FROM upload WHERE gruppe = $id");

                          gibts sowas?

                          Kommentar


                          • #28
                            jetzt steig ich nichmehr durch, ichhab's so gedacht, dass indisplayname der name der datei steht wie dier user sie hochlädt und du sie intern unter der id speicherst

                            wie kann dann da nix drinstehen?
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #29
                              ich hab sie intern nicht unter uniqid gespeichert, sondern unter der id des datensatzes!

                              hab jetzt also zwei tabellen.

                              in der ersten befinden sich die ganzen inhalte der text-felder usw. id wird mit auto_increment erstellt.

                              die zweite tabelle hat die felder displayname und gruppe.
                              unter displayname wird folgendes gespeichert:

                              displayname = '".$id.$_FILES['userfile']['name'][$i]."',

                              unter gruppe wird die id des dazugehörigen datensatzes in der ersten Tabelle gespeichert.

                              in meiner html-seite mit der db-abfrage mach ich dann

                              select * from upload (die zweite tabelle) where gruppe =$id;

                              die geb ich dann in einer while schleife (mysql_fetch_Array) aus.
                              nur werden jetzt auch die datensätze ausgegeben, die im feld displayname keinen inhalt haben. das will ich eben in der select-abfrage verhindern....!

                              Kommentar


                              • #30
                                aber wenn in displayname nix steht hast du doch auch keine datei hochgeladen!

                                oder kannst du ne datei hochladen, deren name, der ja in $_FILES['userfile']['name'][$i] steht, leer ist?
                                Ich denke, also bin ich. - Einige sind trotzdem...

                                Kommentar

                                Lädt...
                                X