Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu Upload

Einklappen

Neue Werbung 2019

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

  • Frage zu Upload

    Hallo,
    ich habe ein Bildupload mit Hilfe meines PHP-Buches realisiert. Funktioniert alles einwandfrei :P

    Nun möchte ich aber gerne insgesamt 10 Upload-Felder haben. Deswegen habe ich den Text ein klein wenig geändert. Auch so funktioniert alles. Nur eine Kleinigkeit hätte ich noch gerne.

    Wenn ich eine Datei hochgeladen habe, erscheint dann neben dem Upload-Button der Name dieser Datei. Lade ich eine andere Datei von einem anderen Upload-Feld hoch, verschwindet jedoch der Name der vorigen Datei.

    Etwas kompliziert zu erklären ist es schon. Hier mal der Html/Php-Code dazu:
    Code:
              <tr align="left" valign="top"> 
                <td width="100" class="text11"><div align="left">Bild 1:</div></td>
                <td colspan="2" class="text11"><div align="left"> 
    				<input type="hidden" name="MAX_FILE_SIZE" value="300000">
                    <input name="userfile1" type="file">
                    
                    <input name="upload1" type="submit" id="upload1" value="Upload" style="width:70px;">
    <?php
    if (isset($upload1))
    	{
    		echo $HTTP_POST_FILES['userfile1']['name'];
    		$path1=dirname($PATH_TRANSLATED).'/upload/';
    		copy ($userfile1, $path1.$userfile1_name);
    	}	
    $dp=opendir($path1);
    while ($file1=readdir($dp))
    	{	if (!preg_match('/^\.{1,2}/', $file1))
    		{
    		}
    }
    ?>
                  </div></td>
              </tr>
              <tr align="left" valign="top"> 
                <td width="100" class="text11"><div align="left">Bild 2:</div></td>
                <td colspan="2" class="text11"><div align="left"> 
    				<input type="hidden" name="MAX_FILE_SIZE" value="300000">
                    <input name="userfile2" type="file">
                     
                    <input name="upload2" type="submit" id="upload2" value="Upload" style="width:70px;">
    <?php
    if (isset($upload2))
    	{
    		echo $HTTP_POST_FILES['userfile2']['name'];
    		$path2=dirname($PATH_TRANSLATED).'/upload/';
    		copy ($userfile2, $path2.$userfile2_name);
    	}	
    $dp=opendir($path2);
    while ($file2=readdir($dp))
    	{	if (!preg_match('/^\.{1,2}/', $file2))
    		{
    		}
    }
    ?>
                  </div></td>
              </tr>
    Ich hoffe man kann jetzt in etwa verstehen was ich meine. Bei dem Code handelt es sich nur um 2 Upload-Felder. Wie gesagt der Upload funktioniert. Auch das Anzeigen der Datei neben dem Upload-Feld. Nur wenn ich dann beim Upload-Feld2 etwas hochlade, verschwindet der Name neben Upload-Feld1. Den hätte ich aber gerne da stehen lassen.

    Was muss ich in meinem Code dazu ändern?

    1000 Dank,


  • #2
    Hallo. Willkommen im Forum.

    Dein Code würde besser (z.B. bunter) ausehen, wenn Du statt der Code-Tags die PHP-Tags nehmen würdest. Beachte das bitte bei künftigen Postings und/oder editiere das Posting oben.

    Die Variablen $HTTP_*_VARS sind veraltet. Nimm statt dessen lieber die Variablen $_GET, $_POST und $_FILES.

    Wenn ich das richtig sehe, generierst Du nicht nur mehrere Felder für die Dateinamen, sondern auch mehrere Submit-Buttons.
    Je nachdem welcher Button gedrückt wurde, schreibst Du den Namen wieder in das Form.
    Natürlich kann nur ein Button gedrückt sein und somit wird auch nur ein Name wieder ausgegeben. Ob der Pfad da erhalten bleibt ist noch eine ganz andere Sache.

    Du solltest also statt dieser Abfrage hier:
    PHP-Code:
    <?php
    if (isset($upload1)) 
    ?>
    lieber das da machen:
    PHP-Code:
    <?php
    if (!empty($_FILES['userfile1']['name']))
    ?>
    Genau das gleiche natürlich auch für das zweite bzw. jedes weitere Feld.

    Und evtl. wäre es sinnvoller, nur einen gemeinsamen Submit-Button zu verwenden.

    Die Variable $upload1 ist übrigens auch nur vorhanden, wenn register_globals auf on steht, was nicht unbedingt empfehlenswert ist. Nimm lieber $_POST['upload1'].
    **********************************
    Nein, ich bin nicht die Signatur.
    Ich putze hier nur.
    **********************************

    Kommentar


    • #3
      Hallo,
      ah ok. Wusste das nicht mit der Php-Code-Darstellung :wink:

      Zugegebenermaßen weiß ich jetzt immer noch nicht ganz was ich genau ändern soll. Den Code ändern, weil bestimmte Funktionen veraltet sind, mache ich ungern, weil es ja so funktioniert. Und da bin ich ja froh darüber..

      Das einzigste was ich noch machen will, ist dass der Name der gerade upgeloadeten Datei noch vorhanden ist, auch wenn ich bei einem anderen Upload-Feld etwas uploade. Ich will es auch so lassen dass es insgesamt auch 10 Submit-Buttons gibt. Ist von meinem Prof. vorgegeben

      Soll ich dann folgenden Code für ein Upload-Feld:
      PHP-Code:
      <?php
      if (isset($upload1)) 
      * *
      * ** *echo $HTTP_POST_FILES['userfile1']['name']; 
      * ** *$path1=dirname($PATH_TRANSLATED).'/upload/'
      * ** *copy ($userfile1$path1.$userfile1_name); 
      * *}* * 
      $dp
      =opendir($path1); 
      while (
      $file1=readdir($dp)) 
      * *{* *if (!preg_match('/^\.{1,2}/'$file1)) 
      * ** *
      * ** *

      ?>
      in folgendes ändern:
      PHP-Code:
      <?php
      if*
      (!empty($_FILES['userfile1']['name'])) 
      * *
      * ** *echo $HTTP_POST_FILES['userfile1']['name']; 
      * ** *$path1=dirname($PATH_TRANSLATED).'/upload/'
      * ** *copy ($userfile1$path1.$userfile1_name); 
      * *}* * 
      $dp
      =opendir($path1); 
      while (
      $file1=readdir($dp)) 
      * *{* *if (!preg_match('/^\.{1,2}/'$file1)) 
      * ** *
      * ** *

      ?>
      Würde es das Problem beheben? Es kommt jedoch dann folgende Meldung:
      Code:
      Parse error: parse error, unexpected T_STRING in /homepages/7/d.../eintragen2.php on line 104
      Line 104 ist die
      PHP-Code:
      <?php
      if*
      (!empty($_FILES['userfile1']['name'])) 
      ?>
      Habe ich da was falsch gemacht/verstanden?

      Vielen Dank für jede Hilfe

      Kommentar


      • #4
        Der Parse-Error interessiert mich nicht, solange das Script nicht annähernd dem entspricht: http://www.php.net/manual/de/features.file-upload.php

        Gruß
        phpfan

        Kommentar


        • #5
          ????? He?
          Vielleicht habe ich vergessen zu sagen dass ich noch kein PHP-Profi bin :P

          Mein Skript funktioniert doch. Nur will ich dem ganzen nur eine Kleinigkeit hinzufügen, nämlich (zum dritten Mal):

          DAS WENN ICH EINE DATEI UPLOADE, DER NAME DIESER DATEI WEITERHIN STEHEN BLEIBT, AUCH WENN ICH ANDERE DATEIEN VON ANDEREN UPLOAD-FELDERN UPLOADE...

          Vielen Dank,
          hoffe man kann mir jetzt helfen

          Kommentar


          • #6
            Solange du in dem Script $HTTP_POST_FILES und copy benutzt, ist mir das völlig egal. Ich korrigiere hier keine veralteten Scripte!

            Und wenn du dann hier auch noch rumschreist (Text in Großbuchstaben), dann hat sich jede Hilfe sowieso schon erledigt.

            Gruß
            phpfan

            Kommentar


            • #7
              @phpfan: dir hat keiner gesagt dass du mir helfen musst. dann antworte bitte auch nicht auf meinen beitrag. geschrien habe ich auch nicht.

              @ohers:
              warte immer noch auf Hilfe.

              Danke.

              Kommentar


              • #8
                Zitat von corona
                geschrien habe ich auch nicht.
                Zitat von corona
                DAS WENN ICH EINE DATEI UPLOADE, DER NAME DIESER DATEI WEITERHIN STEHEN BLEIBT, AUCH WENN ICH ANDERE DATEIEN VON ANDEREN UPLOAD-FELDERN UPLOADE...
                Ja nee, is' klar.

                Gruß
                phpfan

                Kommentar


                • #9
                  Kann mir jemand mit dem obigen Problem helfen?

                  Vielen Dank,
                  komme den ganzen Tag schon nicht weiter.

                  Kommentar


                  • #10
                    Füge zum ersten "Input-Block" einfach das Feld hinzu (zum zweiten dementsprechend mit filename2 und userfile2):

                    PHP-Code:
                    <input type="hidden" name="filename1" value="<?= $_FILES['userfile1']['name'] . $_POST['filename1']; ?>" />
                    Ändere im ersten PHP-Teil die Zeile:

                    PHP-Code:
                    <?php
                    echo $HTTP_POST_FILES['userfile1']['name'];
                    ?>
                    in:

                    PHP-Code:
                    <?php
                    echo $_FILES['userfile1']['name'].$_POST['filename1'];
                    ?>
                    Das dann noch vor die if-Abfrage setzen und fertig (beim zweiten Abschnitt natürlich das gleiche machen):

                    PHP-Code:
                    <?php
                    echo $_FILES['userfile1']['name'].$_POST['filename1'];
                    if (isset(
                    $upload1))
                       {
                          
                    $path1=dirname($PATH_TRANSLATED).'/upload/';
                          
                    copy ($userfile1$path1.$userfile1_name);
                       }   
                    ?>
                    Vorausgesetzt sei hier mal, dass der - mir etwas suspekte - Code überhaupt läuft!

                    Viele Grüße,
                    karl-150

                    P.S.: Mein - vielleicht nicht so ganz perfekter - Code, sollte bei der übrigen Qualität wohl zu entschuldigen sein.

                    Kommentar


                    • #11
                      Hallo,
                      danke erst Mal für den Code. Leider funktioniert das so nicht. Mein Code an sich, also dass was ich oben gepostet habe, funktioniert. Bis auf die Kleinigekeit, die ich gerne noch hinzufügen will (also dass der Name der upgeloadeten Datei stehen bleibt).

                      Hat jemand noch einen Vorschlag?
                      Bitte, bitte, bitte...

                      Danke!

                      Kommentar

                      Lädt...
                      X