使用动态表单发送电子邮件,用户可以在其中添加输入框

时间:2019-02-19 20:13:35

标签: javascript php html mysql database

我有一个动态表单,当用户单击send时会将值保存到数据库中,我也希望这些值也通过电子邮件发送。所以基本上,我希望当用户点击send时发生两件事;

  1. 将值保存到数据库:完成
  2. 发送包含值的电子邮件。

请注意,我有一个动态表单,用户可以在其中添加输入框。另外,将值保存到数据库的工作原理非常完美,我在电子邮件部分中只是遇到问题。

问题在于,即使我添加了多种表格,当我收到电子邮件时,也只会收到一封电子邮件。

这就是我所做的:

insert-message.php:

<?php
//insert.php
$connect = mysqli_connect("localhost", "root", "", "pcrequesttest");
if(isset($_POST["reqname"]))
{
 $reqname = $_POST["reqname"];
 $date = $_POST["date"];
 $empname = $_POST["empname"];
 $position = $_POST["position"];
 $account = $_POST["account"];
 $platform = $_POST["platform"];
 $processor = $_POST["processor"];
 $ram = $_POST["ram"];
 $monitor = $_POST["monitor"];
 $phone = $_POST["phone"];
 $phonetype = $_POST["phonetype"];
 $headset = $_POST["headset"];
 $query = '';
 for($count = 0; $count<count($reqname); $count++)
 {
  $reqname_clean = mysqli_real_escape_string($connect, $reqname[$count]);
  $date_clean = mysqli_real_escape_string($connect, $date[$count]);
  $empname_clean = mysqli_real_escape_string($connect, $empname[$count]);
  $position_clean = mysqli_real_escape_string($connect, $position[$count]);
  $account_clean = mysqli_real_escape_string($connect, $account[$count]);
  $platform_clean = mysqli_real_escape_string($connect, $platform[$count]);
  $processor_clean = mysqli_real_escape_string($connect, $processor[$count]);
  $ram_clean = mysqli_real_escape_string($connect, $ram[$count]);
  $monitor_clean = mysqli_real_escape_string($connect, $monitor[$count]);
  $phone_clean = mysqli_real_escape_string($connect, $phone[$count]);
  $phonetype_clean = mysqli_real_escape_string($connect, $phonetype[$count]);
  $headset_clean = mysqli_real_escape_string($connect, $headset[$count]);
  if($reqname_clean != '' && $date_clean != '' && $empname_clean != '' && $position_clean != '' && $account_clean != '' && $platform_clean != '' && $processor_clean != '' && $ram_clean != '' && $monitor_clean != '' && $phone_clean != '' && $phonetype_clean != '' && $headset_clean != '')
  {
   $query .= '
   INSERT INTO item(reqname, date, empname, position, account, platform, processor, ram, monitor, phone, phonetype, headset) 
   VALUES("'.$reqname_clean.'", "'.$date_clean.'", "'.$empname_clean.'", "'.$position_clean.'", "'.$account_clean.'", "'.$platform_clean.'", "'.$processor_clean.'", "'.$ram_clean.'", "'.$monitor_clean.'", "'.$phone_clean.'", "'.$phonetype_clean.'", "'.$headset_clean.'"); 
   ';

$reqname = $_POST['reqname'];
$day = $_POST['date'];
$empname = $_POST['empname'];
$position = ($_POST['position']);
$account = $_POST['account'];
$platform = $_POST['platform'];
$processor = $_POST['processor'];
$ram = $_POST['ram'];
$monitor = $_POST['monitor'];
$phone = $_POST['phone'];
$phonetype = $_POST['phonetype'];
$headset = $_POST['headset'];

      $email_from = "PC Request";//<== update the email address
$email_subject = "PC Request for $account";
$message = '<html><body>';
$message .= '<h1>Hello, World!</h1>';
$message .= '</body></html>';

$message = '<html><body>';
$message .= "<tr><td>Good morning,</td></tr>";
$message .= "<br>";
$message .= "<br>";
$message .= "<tr><td>Here are the specifications:</td></tr>";
$message .= "<br>";
$message .= "<br>";
$message .= '<table rules="all" style="border-color: #666;" cellpadding="5">';
$message .= "<tr style='background: #CDD9FF;'><td><strong>Requested by</strong> </td><td>" . strip_tags($_POST['reqname']) . "</td></tr>";
$message .= "<tr style='background: #FFFFFF;'><td><strong>Start Date</strong> </td><td>" . strip_tags($_POST['date']) . "</td></tr>";
$message .= "<tr style='background: #CDD9FF;'><td><strong>No. of Workstations</strong> </td><td>" . strip_tags($_POST['empname']) . "</td></tr>";
$message .= "<tr style='background: #FFFFFF;'><td><strong>Position</strong> </td><td>" . strip_tags($_POST['position']) . "</td></tr>";
$message .= "<tr style='background: #CDD9FF;'><td><strong>Account</strong> </td><td>" . strip_tags($_POST['account']) . "</td></tr>";
$message .= "<tr style='background: #FFFFFF;'><td><strong>Platform</strong> </td><td>" . strip_tags($_POST['platform']) . "</td></tr>";
$message .= "<tr style='background: #CDD9FF;'><td><strong>Processor</strong> </td><td>" . strip_tags($_POST['processor']) . "</td></tr>";
$message .= "<tr style='background: #FFFFFF;'><td><strong>RAM</strong> </td><td>" . strip_tags($_POST['ram']) . "</td></tr>";
$message .= "<tr style='background: #CDD9FF;'><td><strong>Monitor</strong> </td><td>" . strip_tags($_POST['monitor']) . "</td></tr>";
$message .= "<tr style='background: #FFFFFF;'><td><strong>Phone</strong> </td><td>" . strip_tags($_POST['phone']) . "</td></tr>";
$message .= "<tr style='background: #CDD9FF;'><td><strong>Phone Type</strong> </td><td>" . strip_tags($_POST['phonetype']) . "</td></tr>";
$message .= "<tr style='background: #FFFFFF;'><td><strong>Headset</strong> </td><td>" . strip_tags($_POST['headset']) . "</td></tr>";
$message .= "<tr style='background: #CDD9FF;'><td><strong>View Requests</strong> </td><td><a href='teamspan.com/core/pcrequest/messages-admin.php'>Click Here!</a></td></tr>";
$message .= "</table>";
$message .= "</body></html>";

$to = "renzodgmiranda@gmail.com";//<== update the email address
$headers = "From: $email_from \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
//$headers .= "Reply-To: $visitor_email \r\n";
//Send the email!
mail($to,$email_subject,$message, $headers);
//done. redirect to thank-you page.
//header('Location: index.php');

echo "<script>alert('Successfully sent!'); window.location='index.php'</script>";

  }
 }
 if($query != '')
 {
  if(mysqli_multi_query($connect, $query))
  {
   echo 'Successfuly Sent!';
  }
  else
  {
   echo 'Error';
  }
 }
 else
 {
  echo 'All fields are required!';
 }
}
?>

index.php:

<!DOCTYPE html>
<html>
 <head>
  <title>PC Request Form</title>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  <link href="https://fonts.googleapis.com/css?family=Questrial" rel="stylesheet">

  <style type="text/css">

    body {
        font-family: 'Questrial', sans-serif;
      background-image: url("img/hero2.jpg");
      background-size: cover;
    }

    nav ul {
      margin: 0;
      padding: 0;
      list-style: none;
      position: relative;
      float: right;
      background: #eee;
      border-bottom: 1px solid #fff;
      border-radius: 3px;    
  }

  nav li {
      float: left;          
  }


    nav #login {
      border-right: 1px solid #ddd;
      box-shadow: 1px 0 0 #fff;  
      background: #FF8C00;
      opacity: 0.9;
  }

  nav #login-trigger,
  nav #signup a {
    display: inline-block;
    *display: inline;
    *zoom: 1;
    height: 25px;
    line-height: 25px;
    font-weight: ;
    padding: 0 20px;
    text-decoration: none;
    color: #444;
  }

nav #signup a {
  border-radius: 0 3px 3px 0;
}

nav #login-trigger {
  border-radius: 3px 0 0 3px;
}

nav #login-trigger:hover,
nav #login .active,
nav #signup a:hover {
  background: #fff;
}

nav #login-content {
  display: none;
  position: absolute;
  top: 24px;
  right: 0;
  z-index: 999;    
  background: #fff;
  opacity: 0.9;
  background-image: linear-gradient(top, #fff, #eee);  
  padding: 15px;
  border-radius: 3px 0 3px 3px;
  border-bottom: 6px solid #FF8C00;
}

nav li #login-content {
  right: 0;
  width: 250px;  
}

/*--------------------*/

#inputs input {
  background: #f1f1f1;
  padding: 6px 5px;
  margin: 0 0 5px 0;
  width: 225px;
  border: 1px solid #ccc;
  border-radius: 3px;
}

#inputs input:focus {
  background-color: #fff;
  border-color: ;
  outline: none;
  box-shadow:;
}

/*--------------------*/

#login #actions {
  margin: 10px 0 0 0;
}

#login #submit {    
  background-color: #FF8C00;
  background-image: linear-gradient(top, #e97171, #d14545);
  -moz-border-radius: 3px;
  -webkit-border-radius: 3px;
  border-radius: 15px;
  text-shadow: 0 1px 0 rgba(0,0,0,.5); 
  border: 1px solid #7e1515;
  float: left;
  height: 30px;
  padding: 0;
  width: 100px;
  cursor: pointer;
  font: bold 14px Arial, Helvetica;
  color: #FFF;
}

#login #submit:hover,
#login #submit:focus {    
  background-color: #E88300;
  background-image: linear-gradient(top, #d14545, #e97171);
} 

#login #submit:active {   
  outline: none;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.5) inset;   
}

#login #submit::-moz-focus-inner {
  border: none;
}

#login label {
  float: right;
  line-height: 30px;
}

#login label input {
  position: relative;
  top: 2px;
  right: 2px;
}
  </style>
 </head>
 <body>

  <div id="login-content" style="margin-left: 40px; font-family: Questrial; position: relative;">
  <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <nav>
        <ul>
          <li id="login">
            <a id="login-trigger" href="#" style="color: black;">
              View Requests <span>▼</span>
            </a>
            <div id="login-content">
              <form>
                  <fieldset id="inputs">
                    <input id="username" type="hidden" name="username" placeholder="Username" value="admin" required>
                    <input id="password" type="password" name="password" placeholder="Password" required>
                  </fieldset>
                  <fieldset id="actions">
                    <input type="hidden" name="submitted" id="submitted" value="yes">
                    <input type="submit" id="submit" name="submit" value="Log in">
                  </fieldset>
              </form>
            </div>                     
          </li>
        </ul>
    </nav>
  </form>
 </div>

  <br /><br />
  <div class="container" style="margin-left: 1%; margin-top: -5%">
   <img src="img/corelogo.png" width="250px; height: 110px;"></img>
   <h4>PC Request Form <button type="button" name="add" id="add" class="btn btn-success btn-xs">Add request</button></h4>
   <div class="table-responsive" style="width: 114%;">
    <table class="table table-bordered" style="border-radius: 10px;" id="crud_table">
     <tr>
      <th width="30%">Requested By</th>
      <th width="10%">Start Date</th>
      <th width="10%">Employee Name</th>
      <th width="10%">Position</th>
      <th width="10%">Account</th>
      <th width="10%">Platform</th>
      <th width="45%">Processor</th>
      <th width="10%">RAM</th>
      <th width="10%">Monitor</th>
      <th width="10%">Phone</th>
      <th width="10%">Phone Type</th>
      <th width="10%">Headset</th>
     </tr>
     <tr>
      <td contenteditable="true" class="reqname"></td>
      <td class="date"><input type="date"></td>
      <td contenteditable="true" class="empname"></td>
      <td class="position">
        <select size="1">
            <option>SpecOps</option>
            <option>Account Specialist</option>
            <option>Operations Manager</option>
            <option>Supervisor</option>
            <option>Admin</option>
            <option>I.T.</option>
        </select>
      </td>
      <td class="account">
        <select size="1">
            <option>Cintas - Hospitality</option>
            <option>Cintas - Rentals</option>
            <option>Cintas - Fire</option>
            <option>Cintas - GSC</option>
            <option>Metro Service</option>
            <option>Cintas - DeepClean</option>
            <option>Rogers</option>
            <option>Olibra</option>
            <option>American Towns</option>
        </select>
      </td>
      <td class="platform">
        <select size="1">
            <option>Desktop</option>
            <option>Laptop</option>
        </select>
      </td>
      <td class="processor">
        <select size="1">
            <option>i3</option>
            <option>i5</option>
            <option>i7</option>
        </select>
      </td>
      <td class="ram">
        <select size="1">
            <option>4GB</option>
            <option>8GB</option>
        </select>
      </td>
      <td class="monitor">
        <select size="1">
            <option>Single</option>
            <option>Dual</option>
            <option>Video Card</option>
        </select>
      </td>
      <td class="phone">
        <select size="1">
            <option>Hard Phone</option>
            <option>Soft Phone</option>
        </select>
      </td>
      <td class="phonetype">
        <select size="1">
            <option>Direct Number</option>
            <option>Extension</option>
        </select>
      </td>
      <td class="headset">
        <select size="1">
            <option>Hard Phone</option><option>Soft Phone</option>
        </select>
      </td>
     </tr>
    </table>
    <div align="right">

    </div>
    <div align="center">
     <button type="button" name="save" id="save" class="btn btn-info">Send</button>
    </div>
    <br />
    <div id="inserted_item_data"></div>
   </div>
  </div>
 </body>
</html>
<script>
  $(document).ready(function(){
    $('#login-trigger').click(function(){
      $(this).next('#login-content').slideToggle();
        $(this).toggleClass('active');          
        if ($(this).hasClass('active')) $(this).find('span').html('&#x25B2;')
          else $(this).find('span').html('&#x25BC;')
        })
    });
</script>
<script>
$(document).ready(function(){
 var count = 1;
 $('#add').click(function(){
  count = count + 1;
  var html_code = "<tr id='row"+count+"'>";
   html_code += "<td contenteditable='true' class='reqname'></td>";
   html_code += "<td class='date'><input type='date'></td>";
   html_code += "<td contenteditable='true' class='empname'></td>";
   html_code += "<td class='position'><select><option>SpecOps</option><option>Account Specialist</option><option>Operations Manager</option><option>Supervisor</option><option>Admin</option><option>I.T.</option></select></td>";
   html_code += "<td class='account'><select><option>Cintas - Hospitality</option><option>Cintas - Rentals</option><option>Cintas - Fire</option><option>Cintas - GSC</option><option>Metro Service</option><option>Cintas - DeepClean</option><option>Rogers</option><option>Olibra</option><option>American Towns</option></select></td>";
   html_code += "<td class='platform'><select><option>Desktop</option><option>Laptop</option></select></td>";
   html_code += "<td class='processor'><select><option>i3</option><option>i5</option><option>i7</option></select></td>";
   html_code += "<td class='ram'><select><option>4GB</option><option>8GB</option></select></td>";
   html_code += "<td class='monitor'><select><option>Single</option><option>Dual</option><option>Video Card</option></select></td>";
   html_code += "<td class='phone'><select><option>Hard Phone</option><option>Soft Phone</option></select></td>";
   html_code += "<td class='phonetype'><select><option>Direct Number</option><option>Extension</option></select></td>";
   html_code += "<td class='headset'><select><option>Yes, Heavy Caller</option><option>No Need</option></select></td>";
   html_code += "<td><button type='button' name='remove' data-row='row"+count+"' class='btn btn-danger btn-xs remove'>-</button></td>";   
   html_code += "</tr>";  
   $('#crud_table').append(html_code);
 });

 $(document).on('click', '.remove', function(){
  var delete_row = $(this).data("row");
  $('#' + delete_row).remove();
 });

 $('#save').click(function(){
  var reqname = [];
  var date = [];
  var empname = [];
  var position = [];
  var account = [];
  var platform = [];
  var processor = [];
  var ram = [];
  var monitor = [];
  var phone = [];
  var phonetype = [];
  var headset = [];
  $('.reqname').each(function(){
   reqname.push($(this).text());
  });
  $('.date').each(function(){
   date.push($(this).find('input').val());
  });
  $('.empname').each(function(){
   empname.push($(this).text());
  });
  $('.position').each(function(){
   position.push($(this).find('select').val());
  });
  $('.account').each(function(){
   account.push($(this).find('select').val());
  });
  $('.platform').each(function(){
   platform.push($(this).find('select').val());
  });
  $('.processor').each(function(){
   processor.push($(this).find('select').val());
  });
  $('.ram').each(function(){
   ram.push($(this).find('select').val());
  });
  $('.monitor').each(function(){
   monitor.push($(this).find('select').val());
  });
  $('.phone').each(function(){
   phone.push($(this).find('select').val());
  });
  $('.phonetype').each(function(){
   phonetype.push($(this).find('select').val());
  });
  $('.headset').each(function(){
   headset.push($(this).find('select').val());
  });
  $.ajax({
   url:"insert-message.php",
   method:"POST",
   data:{reqname:reqname, date:date, empname:empname, position:position, account:account, platform:platform, processor:processor, ram:ram, monitor:monitor, phone:phone, phonetype:phonetype, headset:headset},
   success:function(data){
    alert(data);
    $("td[contentEditable='true']").text("");
    for(var i=2; i<= count; i++)
    {
     $('tr#'+i+'').remove();
    }
    fetch_item_data();
   }
  });
 });
});
</script>

0 个答案:

没有答案