Ankündigung

Einklappen
Keine Ankündigung bisher.

textarea doppelt verwenden

Einklappen

Neue Werbung 2019

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

  • textarea doppelt verwenden

    Ich möchte eine Textarea doppelt verwenden. Zum einen soll sie den Inhalt einer hochgeladenen Textdatei anzeigen, zum anderen soll der nach dem Upload möglicherweise geänderte Inhalt der Textdatei zum Body einer mit PHP versendeten Mail werden.
    Doch irgendwie schaffe ich das nicht. Hier mein Code:
    PHP-Code:
    <?PHP
    if ( $_FILES['uploaddatei']['name']  <> "" )
    {
        
    move_uploaded_file (
        
    $_FILES['uploaddatei']['tmp_name'] ,
             
    'verzeichnis/'$_FILES['uploaddatei']['name'] );    
        
    $inhalt1 file_get_contents('verzeichnis/' $_FILES['uploaddatei']['name']);
    }
    ?>
    <h3>Datei auswählen, hochladen und darstellen</h3>
    <textarea cols="100" rows="30" name="content">
    <?PHP
    print_r 
    ($inhalt1);
    ?>
    </textarea><br><br>
    <form name="uploadformular" enctype="multipart/form-data" action="mfrm.php" method="post">
    Datei: <input type="file" name="uploaddatei" size="60" maxlength="255" value="find file"> <!-- Durchsuchen..., value wird ignoriert -->
    <input type="Submit" name="submit" value="Datei hochladen/zeigen"> <!-- value wird angezeigt -->
    <br>
    </form>
    <form name="emailform" action="send_mail.php" enctype="multipart/form-data" method="post">
    <h3>Datei versenden</h3>
    <label for="empfaenger">Empfänger:
     <select name="empfaengerliste" size="1" >
     <option>liste1</option>
     <option>liste2</option>
     <option>liste3</option>
     </select>
    </label>
    <br><br><label for="betreff">Betreff:&nbsp;&nbsp;</label>
    <input type="text" name="betreff" size="100"> &nbsp; Pflichtangabe! <br><br>
    <input type="hidden" name="inhalt2" value="$content">
    <input type="submit" value="Versenden">
    <input type="reset" value="Eingaben l&ouml;schen">
    <?php
    $content 
    $_POST['inhalt2'];
    echo 
    "<br>";
    var_dump($content); //NULL
    ?>
    </form>
    mfrm.php ist der Name des aufrufenden Skripts, send_mail.php dient dem Versenden, doch soweit komme ich gar nicht, weil $content leer ist.
    Vor allem interessiert mich, wie ich den wirklichen Inhalt der Textarea in einer Variablen speichern kann, die im Skript send_mail.php ausgewertet werden kann.

  • #2
    Du hast zwei Foms mit zwei Targets. das willst Du wohl nicht.
    Du willst wohl nur die hochgeladene Datei doppelt nutzen.
    zu Forms:
    https://php-de.github.io/#form

    Kommentar


    • #3
      Guten Morgen,
      $content ist natürlich leer, da du value="$content" übergibst und nicht value="<?php echo $content; ?>". Wo immer $content herkommt.

      So gelesen ist dein Code recht unstrukturiert, zumindest ein paar Returns und das setzen des Codes in den [ PHP ] Tags wären dringewesen

      Wie tomBuilder schon sagte, zwei Forms willst du wohl nicht, sondern eines mit dem File und deinen anderen Feldern, und nach dem Upload wird das ganze verarbeitet. Hier ist mal ein Ansatz, das Email-Zeugs musst du halt einbauen, so wie du es willst.

      PHP-Code:
      <?PHP

      if (isset($_FILES['uploaddatei'])) {
          if (
      $_FILES['uploaddatei']['error'] == UPLOAD_ERR_OK
            
      && is_uploaded_file($_FILES['uploaddatei']['tmp_name'])) {
              
      $displayInTextarea file_get_contents($_FILES['uploaddatei']['tmp_name']);

              
      print_r($_POST); // um zu sehen, was so ankommt
          
      }
      }

      ?>
      <h3>Datei auswählen, hochladen und darstellen</h3>
      <textarea cols="20" rows="10" name="content">
      <?php
          
      if (isset($displayInTextarea)) {
              print 
      $displayInTextarea;

          }
      ?>
      </textarea>

      <br><br>

      <form name="uploadformular" enctype="multipart/form-data" action="" method="post">
      Datei: <input type="file" name="uploaddatei" size="60" maxlength="255" value="find file">

      <br/>

      <h3>Datei versenden</h3>
      <label for="empfaenger">Empfänger:
       <select name="empfaengerliste" size="1" >
       <option value="liste1">liste1</option>
       <option value="liste2">liste2</option>
       <option value="liste3">liste3</option>
       </select>
      </label>

      <br/><br/>

      <label for="betreff">Betreff:&nbsp;&nbsp;</label>
      <input type="text" name="betreff" size="100" required> &nbsp; Pflichtangabe! <br><br>
      <input type="hidden" name="inhalt2" value="$content">
      <input type="submit" value="verarbeiten">
      <input type="reset" value="Eingaben l&ouml;schen">
      </form>

      Kommentar


      • #4
        PHP-Code:
        function showPostValues($post) {
          foreach (
        $post as $key => $val) {
              print 
        $key "=>" $val "<br/>";
          }
        }

        // ...

        showPostValues($_POST); // um zu sehen, was so ankommt 
        Warum bitte dafür extra eine Funktion bauen?

        PHP-Code:
        var_dump($_POST);

        print_r($_POST); 
        tut jeweils das selbe und bei einem Array übers Form stellt es deine Funktion erst gar nicht dar ("Array").

        Find ich daher ziemlich/sehr sinnlos.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Zitat von hausl Beitrag anzeigen

          Warum bitte dafür extra eine Funktion bauen?

          PHP-Code:
          var_dump($_POST);

          print_r($_POST); 
          Da hast du natürlich recht

          Kommentar


          • #6
            Danke an alle fürs Mitmachen. Vielleicht findet jemand eine Lösung für das dahinter stehende Problem: Wo ist der Einstiegspunkt, um den aktuellen Inhalt einer Textarea zu erfassen und in einer Variable zu speichern? Die W3Schools geben dafür nur das Array $_POST an, greifen darauf innerhalb einer Form zu. Siehe: https://www.w3schools.com/php/showph...ation_complete
            Ich denke, das ist ein statischer Zugriff, ich brauche aber einen dynamischen, der "on the fly"-Veränderungen an der Textarea erfasst. Vielleicht komme ich mit einer Session der Lösung näher?

            Kommentar


            • #7
              ich brauche aber einen dynamischen
              Der Inhalt ist dynamisch, nicht aber der Name.
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Zitat von GerhardS Beitrag anzeigen
                ich brauche aber einen dynamischen, der "on the fly"-Veränderungen an der Textarea erfasst. Vielleicht komme ich mit einer Session der Lösung näher?
                Nein, das würde sich nur per JavaScript realisieren lassen.

                Edit: Da du aber Buttons hast zum Uploaden / Versenden denke ich mal, dass du die Daten nicht "on the fly" verarbeiten willst sondern erst wenn man diese Buttons anklickt.
                sorry, shift-taste kaputt

                Kommentar


                • #9
                  Miss Santrop Die Textarea muss natürlich in das Form rein

                  PHP-Code:
                  <?PHP
                  $displayInTextarea 
                  '';
                  if (isset(
                  $_FILES['uploaddatei'])) {
                      if (
                  $_FILES['uploaddatei']['error'] == UPLOAD_ERR_OK
                        
                  && is_uploaded_file($_FILES['uploaddatei']['tmp_name'])) {
                          
                  $displayInTextarea file_get_contents($_FILES['uploaddatei']['tmp_name']);
                      }
                  }

                  if (isset(
                  $_POST['verarbeiten'])) {
                    
                  var_dump($_POST);
                    
                  // Validierung und E-Mail Versand...
                  }
                  ?>
                  <h3>Datei auswählen, hochladen und darstellen</h3>

                  <form name="uploadformular" enctype="multipart/form-data" action="" method="post">

                  <textarea cols="20" rows="10" name="content">
                  <?= $displayInTextarea?>
                  </textarea>

                  Datei: <input type="file" name="uploaddatei" size="60" maxlength="255" value="find file">
                  <input type="submit" name="upload" value="Datei hochladen/zeigen"> <!-- value wird angezeigt -->
                  <br/>

                  <h3>Datei versenden</h3>
                  <label for="empfaenger">Empfänger:
                   <select name="empfaengerliste" size="1" >
                   <option value="liste1">liste1</option>
                   <option value="liste2">liste2</option>
                   <option value="liste3">liste3</option>
                   </select>
                  </label>

                  <br/><br/>

                  <label for="betreff">Betreff:&nbsp;&nbsp;</label>
                  <input type="text" name="betreff" size="100" placeholder="Pflichtangabe"><br><br>
                  <input type="submit" name="verarbeiten" value="verarbeiten">
                  <input type="reset" value="Eingaben l&ouml;schen">
                  </form>
                  sorry, shift-taste kaputt

                  Kommentar


                  • #10
                    Danke, sorry, da war ich noch kaffeelos. Trotzdem Mist :/

                    Kommentar

                    Lädt...
                    X