Freddy: upload in formular mit eingabefeldern

Hi ihr lieben,
also ich bin dabei ein Formular zu erstellen, welches 4 Eingabefelder hat und ein Bereich zum uploaden behinhalten soll! Ich stell mir das so vor, dass der Link, wo die Datei hergeladen werden soll, eingetragen wird, und dann wenn man unten, auf "Absenden" klickt, die Datei hochgeladen und die Aktion des Formulars passiert, in meinem Fall, das Eintragen in eine Datenbank! Und ideal wäre natürlich, wenn ihr mir sagen könntet, wie ich dann gleichzeitig noch den Link, den die Datei jetzt neu bekommen hat, auch in der Datenbank speichert.
Also ich stehe für weitere Fragen sehr gerne zur Verfügung!
gruß
Freddy

  1. Hi ihr lieben,
    ... wie ich dann gleichzeitig noch den Link, den die Datei jetzt neu bekommen hat, auch in der Datenbank speichert.
    Also ich stehe für weitere Fragen sehr gerne zur Verfügung!

    Was ist das für ein Link, den die Datei bekommen hat? Was für eine Datenbank hast Du denn?

    Hotti

    1. Was ist das für ein Link, den die Datei bekommen hat?

      Also das ist einfach der Ort an den die Datei hochgeladen wurde, weil die Datei wird dann wieder neu verlinkt, aber alles per Datenbank und Variablen!

      »»Was für eine Datenbank hast Du denn?

      Ich benutze eine MySql Datenbank

      1. hi,

        Ich benutze eine MySql Datenbank

        Sind da auch Tabellen drinne?

        Hotti

        1. hi,

          Ich benutze eine MySql Datenbank

          Sind da auch Tabellen drinne?

          Hotti

          ja ich habe eine große Datenbank und dadrinne eine untertabelle, inder es speziell für dieses formular eine tabelle mit wieder untertabellen gibt!!
          aber was hat das damit zutun? :D

  2. Hello Freddy,

    trenne die Aufgaben erst einmal ganz exakt:

    - HTML-Formulare
     - Script auf dem Server mit
       Funktionen für den Upload
       Funktionen für den Datenbankeintrag
       Response für den Client,
       evtl. Affenformular

    Es gab hier neulich erst einen Thread, wie gefährlich Uploadscripte für die Sicherheit des Srvers sein können.

    In
    https://forum.selfhtml.org/?t=196360&m=1315458
    besonders der Teilthread
    https://forum.selfhtml.org/?t=196360&m=1315555

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. es geht mir aber garnich drum wie sicher oder nicht das ist, es geht mir drum das das nicht geht wie ich es will :D
      also hast du da ne idee dazu?

      1. Hello Freddy,

        es geht mir aber garnich drum wie sicher oder nicht das ist, es geht mir drum das das nicht geht wie ich es will :D
        also hast du da ne idee dazu?

        Mehrere.
        Wenn Du mal meinen ersten Vorschlag aufgreifen würdest, und die Aufgaben trennen würdest, dann könntest Du sie auch alle einzeln gut beschreiben.

        Und dann könnte man anschließend überlegen, wie man die Lösungen wieder so zusammenbaut, dass sie in einer gemeinsamen Web-Applikation sauber zusammenarbeiten.

        Die Sicherheit ergibt sich dann als Nebenprodukt auch gleich mit.

        Du solltest mal damit anfangen, dass Du uns einen einfachen Formular-Dummy, der Deine Anforderungen erfüllen würde, auf einen Websserver legst und uns den Link dazu postest. Mit dem Link schickst Du uns dann die Beschreibungen, wie der Ablauf sein soll.

        Dabei wirdst Du ggf. feststellen, dass es mit einem einzigen Formular nicht geht und wirst ein zweites dazu bauen und vielleicht sogar noch ein drittes.

        Das ist auch keine rausgeschmissene Zeit, denn die Formulare (HTML-Seiten) für die stufenweise Verarbeitung benötigst Du voraussichtlich später sowieso.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. ok danke damit kann ich schon wesentlich mehr anfangen!
          Also mal zu deinem ersten Punkt. Ich hätte gerne ein Formular, was so aussieht:

          <form action="index.php?seite=html/aartikeleinstellen" method="post" enctype="multipart/form-data">  
            
          Kategorie:<br/>  
            
          <select name="kategorie" rows="10" cols="10">  
          	<optgroup label="Autos & Rad">  
                  <option value="1.1">Autos</option>  
                  <option value="1.2">Fahrräder</option>  
          		<option value="1.3">Autoteile &amp; Reifen</option>  
          		<option value="1.4">Motorroller &amp; Motorr&auml;der</option>  
          		<option value="1.5">Wohnwagen &amp; -mobile</option>  
          		<option value="1.6">Sonstiges</option>  
          		</optgroup>  
          	<optgroup label="Eintrittskarten &amp; Tickets">  
                  <option value="2.1">Konzerte</option>  
                  <option value="2.2">Sport</option>  
          		<option value="2.3">Comedy &amp; Kabarett</option>  
          		<option value="2.4">Klassik &amp; Kultur</option>  
          		<option value="2.6">Sonstiges</option>  
          	</optgroup>  
          	<optgroup label="Familie, Kind &amp; Baby">  
                  <option value="3.1">Alles rund ums Baby</option>  
                  <option value="3.2">Kinderklamotten</option>  
          		<option value="3.3">Kinderzimmerm&ouml;bel</option>  
          		<option value="3.4">Kinderwagen &amp; Buggys</option>  
          		<option value="3.5">Spielzeug</option>  
          		<option value="3.6">Sonstiges</option>  
          	</optgroup>  
          	<optgroup label="Freizeit &amp; Hobby">  
                  <option value="4.1">Kunst &amp; Antiquit&auml;ten</option>  
                  <option value="4.2">Esoterik &amp; Spirituelles</option>  
          		<option value="4.3">Modellbau</option>  
          		<option value="4.4">Kinderwagen &amp; Buggys</option>  
          		<option value="4.5">Sport &amp; Camping</option>  
          		<option value="4.6">Sonstiges</option>  
          	</optgroup>  
          	<optgroup label="Haus &amp; Garten">  
                  <option value="5.1">Wohnzimmer</option>  
                  <option value="5.2">Badezimmer</option>  
          		<option value="5.3">B&uuml;ro</option>  
          		<option value="5.4">Dekoration</option>  
          		<option value="5.5">Garten &amp; Pflanzen</option>  
          		<option value="5.6">Heimtextilien</option>  
          		<option value="5.7">Heimwerken</option>  
          		<option value="5.8">K&uuml;che &amp; Esszimmer</option>  
          		<option value="5.9">Lampen &amp; Licht</option>  
          		<option value="5.10">Schlafzimmer</option>  
          		<option value="5.11">Sonstiges</option>  
          	</optgroup>  
          	<optgroup label="Haustiere">  
                  <option value="5.1">Hunde &amp; Zubeh&ouml;r</option>  
                  <option value="5.2">Katzen &amp; Zubeh&ouml;r</option>  
          		<option value="5.3">Fische &amp; Zubeh&ouml;r</option>  
          		<option value="5.4">Kleintiere &amp; Zubeh&ouml;r</option>  
          		<option value="5.5">Garten &amp; Pflanzen</option>  
          		<option value="5.6">Pferde &amp; Zubeh&ouml;r</option>  
          		<option value="5.7">Reptilien &amp; Zubeh&ouml;r</option>  
          		<option value="5.8">K&uuml;che &amp; Esszimmer</option>  
          		<option value="5.9">V&ouml;gel &amp; Zubeh&ouml;r</option>  
          		<option value="5.11">Sonstiges</option>  
          	</optgroup>  
          	<optgroup label="Immobilien">  
                  <option value="6.1">Garage &amp; Lagerraum</option>  
                  <option value="6.2">Grundst&uuml;ck &amp; Garten</option>  
          		<option value="6.3">Haus verkaufen</option>  
          		<option value="6.4">Haus vermieten</option>  
          		<option value="6.5">Wohnung verkaufen</option>  
          		<option value="6.6">Wohnung vermieten</option>  
          		<option value="6.7">Sonstiges</option>  
          	</optgroup>  
          	<optgroup label="Mode &amp; Beauty">  
                  <option value="6.1">Accessoires &amp; Schmuck</option>  
                  <option value="6.2">Kleidung Damen</option>  
          		<option value="6.3">Beauty &amp; Gesundheit</option>  
          		<option value="6.4">Kleidung Herren</option>  
          		<option value="6.5">Schuhe Damen</option>  
          		<option value="6.6">Schuhe Herren</option>  
          		<option value="6.7">Sonstiges</option>  
          	</optgroup>  
          	<optgroup label="Multimedia &amp; Elektronik">  
                  <option value="7.1">Handy</option>  
                  <option value="7.2">Haushaltsger&auml;te</option>  
          		<option value="7.3">Audio &amp; HIFI</option>  
          		<option value="7.4">Foto</option>  
          		<option value="7.5">Notebooks &amp; PCs</option>  
          		<option value="7.6">PC- &amp; Videospiele</option>  
          		<option value="7.7">PC-Zubeh&ouml;r &amp; Software</option>  
          		<option value="7.8">TV &amp; Video</option>  
          		<option value="7.9">Sonstiges</option>  
          	</optgroup>  
          	<optgroup label="Musik, Film &amp; B&uuml;cher">  
                  <option value="8.1">B&uuml;cher &amp; Zeitschriften</option>  
                  <option value="8.2">Film &amp; DVD</option>  
          		<option value="8.3">Fachb&uuml;cher, Schule &amp; Studium</option>  
          		<option value="8.4">Musik &amp; CDs</option>  
          		<option value="8.5">Musikinstrumente</option>  
          		<option value="8.6">Sonstiges</option>  
          	</optgroup>  
          	<optgroup label="Zu verschenken &amp; Tauschen">  
                  <option value="9.1">Tauschen</option>  
                  <option value="9.2">Zu verschenken</option>  
          		<option value="9.3">Verleihen</option>  
          	</optgroup>  
          	<option value="10.1">Ich suche ...</option>  
          </select>  
          <br/>  
          	  
          Kurzbeschreibung: (max. 150 Zeichen)<br/>  
          <input type="text" size="50" maxlength="150" name="ueberschrift"><br><br>  
            
          gewünschter Preis:<br/>  
          <input type="text" size="10" maxlength="50" name="preis"> EURO<br><br>  
            
          <input type="text" size="50" maxlength="150" name="bild">  
            
          <br/><br/>  
          <input type="file" size="20" name="bild">  
            
          genaue Beschreibung:<br/>  
          <textarea name="beschreibung" cols="50" rows="10"></textarea><br/>  
            
          <input type="submit" value="Artikel einstellen">  
          </form>
          

          So und in dieser Zeile liegt glaube ich mein Problem!

          <input type="file" size="20" name="bild">

          ich will das das bild hochgeladen wird, wenn ich auf  Artikel einstellen drücke, also ich habs auch schon mit <include ...> versucht aber das tuts auch nich!
          das wäre jetzt meine frage an euch!
          und damit wäre der erste und wichtigste schritt getan!! wie bekomm ich das hin das es das bild hochläd!!
          gruß
          Freddy

          1. hi,

            und damit wäre der erste und wichtigste schritt getan!! wie bekomm ich das hin das es das bild hochläd!!

            enctype ist ok, method ist ok. Einem Upload sollte also nichts im Wege stehen. Stelle sicher, dass das in der action-Note angegebene Script mit Deiner Pfadangabe gefunden wird und dass dieses Script einen multipart/form-data POST parsen kann.

            Hotti

            1. danke euch zwei!
              also soweit war ich auch! nur wie mach ich das der die datei dann auch auf meinem server speichert?
              und könntet ihr das mal anpassen bzw mir sagen wie das geht? ;)

              1. Also der Freddy und ich arbeiten zusammen und ich weiß was sein Problem ist!

                Also wir wollen eigentlich das wenn man eine Datei über den Datei-Manager auswählt und dann auf Artikel einstellen klicken, dass diese Datei hochgeladen wird(Das Hochladen ist kein Probelm), und das er dann der datei den namen zuweist der id die als Datenbank gespeichert wird. Nun soll dann automatisch dieser Link wohin das Bild geladen wurde generiert werden und in der Datenbank reingeschrieben werden.

                1. hi,

                  .. Nun soll dann automatisch dieser Link wohin das Bild geladen wurde generiert werden und in der Datenbank reingeschrieben werden.

                  Ist das das Problem? Ein paar Hinweise:
                  Das Schreiben einer Datei sollte ein atomarer, also nicht teilbarer Prozess sein. D.h. damit wird verhindert, dass eine Datei mit gleichem Namen überschrieben wird. Sofern die Datei ins FS (Dateisystem) geschrieben wird, bleibt also die Frage nach der Benamsung und die Frage nach dem Speicherort der Attribute, die das FS nicht hergibt.

                  Es gäbe auch die Möglichkeit, die Datei samt aller Attribute (Content-Type, Wunschname, Realname, Size, Kategorie, Zweckbestimmung usw.) komplett in eine Tabelle zu schreiben und die ID vom DBMS generieren zu lassen, damit wird ein atomarer Prozess gesichert und mehrere Dateien mit gleichem (Wunsch)Namen wären zugelassen.

                  Eine andere Variante wäre die, dass die Upload-Verzeichnisse nach Benutzernamen strukturiert sind, die Dateien werden dann nur noch numeriert und der Rest kommt in die Tabelle.

                  Wenn auf eine Datei verlinkt werden soll, muss die unterhalb vom DOCUMENT_ROOT liegen, ansonsten braucht es einen extra Prozess zum Lesen der Datei, wenn die außerhalb von DOCUMENT_ROOT gespeichert ist.

                  Evntl. kannst Du auch mit einer Session und Cookie arbeiten, damit eine eindeutige ID der Datei im FS und ein atomarer Schreibprozess gesichert wird.

                  Beim Schreiben einer Datei ins FS musst Du die Berechtigungen kennen, der Schreibprozess muss also Schreiben dürfen. Die Datei muss lesbar sein für den Prozess, der die zum späteren Download anbietet.

                  Alldiese Dinge sind schon ein bischen komplex und natürlich auch von Deiner serverseitigen Umgebung abhängig.

                  Hotti

                  1. ok vielen dank für die umfangreiche antwort! :D

                    aber ich kann ehrlich gesagt damit nich all zu viel anfangen!
                    also mein könntet ihr mir einfach mal genau beschreiben wie ich mein script umbauen muss, dass ich eine Datei in dem Ordner habe und die restlichen daten in die datenbank eingetragen werden!! mehr brauch ich erstmal garnich! Und das ganze was du gesagt hast, ist gut aber ist mir zurzeit noch zu weit greifend!
                    also wisst ihr was dazu??

                    1. Hallo,

                      also mein könntet ihr mir einfach mal genau beschreiben wie ich mein script umbauen muss

                      was heißt umbauen? Von deinem Script hast du uns bislang kein Stückchen gezeigt - wie soll man "nichts" umbauen?
                      Was das Script generell tun muss, habe ich ja schon grob beschrieben.

                      dass ich eine Datei in dem Ordner habe und die restlichen daten in die datenbank eingetragen werden!!

                      Dann solltest du erst mal *anfangen*, das dafür zuständige Script zu entwerfen! Wenigstens einen Entwurf oder einen Versuch solltest du schon mal liefern, damit man dir weiterhelfen kann.

                      So long,
                       Martin

                      --
                      Es gibt Dinge, die sind sooo falsch, dass nicht einmal das Gegenteil stimmt.
          2. Hallo,

            <form action="index.php?seite=html/aartikeleinstellen" method="post" enctype="multipart/form-data">

            [...]
            <input type="file" size="20" name="bild">
            [...]
            <input type="submit" value="Artikel einstellen">
            </form>

              
            warum zeichnest du diesen HTML-Codeausschnitt hier im Forum als "PHP" aus?  
              
            
            > ich will das das bild hochgeladen wird  
              
            Das passiert mit dem gezeigten Formular schon. Und das aufgerufene Script index.php bekommt außer dem im action-Attribut angegebenen URL-Paramter die Formulareingaben einschließlich des hochgeladenen Bildes.  
            Nun muss das Script seinerseits das Bild, das zunächst in einem temporären Verzeichnis abgelegt wird, nur noch entgegennehmen.  
              
            So long,  
             Martin  
            
            -- 
            Wenn Zeit das Kostbarste ist, was wir haben, dann ist Zeitverschwendung die größte aller Verschwendungen.  
              (Benjamin Franklin, amerikanischer Tüftler und Politiker)  
            
            
          3. Hello,

            [code lang=php]<form action="index.php?seite=html/aartikeleinstellen" method="post" enctype="multipart/form-data">

            Sieht doch schon ganz gut aus.

            setz doch mal in deine index.php den kleinen Code fürs Debugging:

            <?php   ### index.php ###

            if ($_POST)
                {
                    echo "<pre>\r\n";
                    echo htmlspecialchars(print_r($_POST,1));
                    echo htmlspecialchars(print_r($_FILES,1));
                    echo "</pre>\r\n";
                }
            ?>

            und schau Dir an, was dann angezeigt wird. Das Ergebnis postest Du uns dann hier.

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de