0

これが私がここでやろうとしていることです。

  1. ユーザーからデータを収集するための html フォームがあります
  2. フォーム送信後にテキストエリアに出力を表示する
  3. textarea コンテンツを処理するための 2 つのボタン:- コンテンツをテキスト ファイルとしてダウンロードするための 2 つ目のボタンは、php を使用して textarea コンテンツを電子メールとして送信するため

ここでは、出力テキストエリアが div でラップされておりoutput-main、フォーム送信前にこの div を表示したくありません。

今私のHTMLコード:

<div class="emcsaninfo-symcli-main">
    <form  id="main" name="main" action="#text" method="post" > 



    <div class="block-with-text-area">
                        <div class="input-quest-with-text-area">Device List</div>
                        <div class="input-resp-with-text-area"><span><textarea class="textarea" name="devs" ></textarea></span></div>
    </div>


    <div id="devseq" >
            <div class="block">
                        <div class="input-quest">Starting Device</div>
                        <div class="input-resp"><span><input  class="textbox" id="sdev" name="sdev" type="text" size="5" maxlength="5"  value="<?php if(isset($_POST['sdev'])) { echo htmlentities ($_POST['sdev']); }?>" /></span> </div>
            </div>
    </div>

    <div id="metamemcnt"  >
            <div class="block">
                        <div class="input-quest">Meta member count(Excluding Meta Head)</div>
                        <div class="input-resp"><span><input  class="textbox" id="mem_count" name="mem_count" type="text" size="5" maxlength="3"  value="<?php if(isset($_POST['mem_count'])) { echo htmlentities ($_POST['mem_count']); }?>" /></span></div>
            </div>
    </div>


    <div id="metacnt"  >                
            <div class="block">
                        <div class="input-quest">How many Meta Devices</div>
                        <div class="input-resp"><span><input  class="textbox" id="meta_count" name="meta_count" type="text" size="5" maxlength="3"  value="<?php if(isset($_POST['meta_count'])) { echo htmlentities ($_POST['meta_count']); }?>" /></span></div>
            </div>
    </div>


    <div class="submit-clear">
                        <input  id="generate" type="submit"  name="script" value="create my cli script" />
                        <input type="submit" id="clear" name="clear" value="clear" />
    </div>

    </form>

    </div>

フォーム送信の前に出力領域を表示したくないので、最初にユーザーがフォームフィールドにデータを入力したかどうかを確認し、そうであれば出力を作成しますdiv

以下のPHPコード

<?php   
if((!empty($_POST['sdev']) && !empty($_POST['mem_count']) && !empty($_POST['meta_count']))  || !empty($_POST['devs']) ){

?>          

<div id="output-main">


<?php  
echo '<form action=" " method="post">'; 
echo '<textarea onclick="this.select()" name="output_textarea" id="output_textarea" cols="100" rows="25" readonly>';    

//other PHP Codes here

echo '</textarea>';     

?>  

</div>


<?php                   
echo '<input type="submit" id="download"  value="submit" name="submit"></input>';   

echo '<input class="textbox" type="text" id="email-box" name="email-box" value="Enter Your Email ID here">';

echo '<input type="submit" id="download1"  value="submit2" name="submit2"></input>';



if($_POST['submit2'] == 'submit2') {


$to = $_POST['email-box'] ;
$message = $_REQUEST['output_textarea'];
$subject = 'form meta cli script';
$headers  = "From: info@domain.com\r\n";
$headers .= "Reply-To: me@domain.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
mail($to, $subject, $message, $headers);

echo 'message sent successfully';
}

}

?>

私が直面している問題:

コンテンツを txt ファイルとしてダウンロードできますが、コンテンツを電子メールで送信しようとすると機能せず、output divセクションがクリアされるだけです。

しかし、最初の PHP 条件を削除すると、

<?php   
if((!empty($_POST['sdev']) && !empty($_POST['mem_count']) && !empty($_POST['meta_count']))  || !empty($_POST['devs']) ){

?>  

ダウンロードとメール機能の両方が完全に機能しています。しかし、その時、output divフォーム送信前のセクションを非表示にすることはできません。

ここで何がうまくいかないのか理解できません。

私が追加しました

 value="<?php if(isset($_POST['sdev'])) { echo htmlentities ($_POST['sdev']); }?>"

フォーム送信後、ユーザーがフィールドに入力したデータを保持します。しかし、メールボタンをクリックすると、これらのフィールドがクリアされます(ダウンロードボタンは正常に機能し、ダウンロードボタンを押した後もフィールドにデータが保持されます)

4

0 に答える 0