send data from sql to email

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Dormilich
    Recognized Expert Expert
    • Aug 2008
    • 8694

    #16
    er, if there are no errors, you don’t receive an error mail …

    Comment

    • alibaba1
      New Member
      • Oct 2011
      • 14

      #17
      yeah there is no errors at all. I just do not receive the email. Could i mix the php code you sent me with something like this

      Code:
      <?php
      if(isset($_POST['email'])) {
           
          // EDIT THE 2 LINES BELOW AS REQUIRED
          $email_to = "1stoptutorials@gmail.com";
          $email_subject = "This is a test";
           
           
          function died($error) {
              // your error code can go here
              echo "We are very sorry, but there were error(s) found with the form you submitted. ";
              echo "These errors appear below.<br /><br />";
              echo $error."<br /><br />";
              echo "Please go back and fix these errors.<br /><br />";
              die();
          }
           
          // validation expected data exists
          if(!isset($_POST['first_name']) ||
              !isset($_POST['last_name']) ||
              !isset($_POST['email']) ||
              !isset($_POST['State']) ||
              !isset($_POST['comments'])) {
              died('We are sorry, but there appears to be a problem with the form you submitted.');       
          }
           
          $first_name = $_POST['first_name']; // required
          $last_name = $_POST['last_name']; // required
          $email_from = $_POST['email']; // required
          $state = $_POST['State']; // not required
          $comments = $_POST['comments']; // required
           
          $error_message = "";
          $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
        if(!preg_match($email_exp,$email_from)) {
          $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
        }
          $string_exp = "/^[A-Za-z .'-]+$/";
        if(!preg_match($string_exp,$first_name)) {
          $error_message .= 'The First Name you entered does not appear to be valid.<br />';
        }
        if(!preg_match($string_exp,$last_name)) {
          $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
        }
        if(strlen($comments) < 2) {
          $error_message .= 'The Comments you entered do not appear to be valid.<br />';
        }
        if(strlen($error_message) > 0) {
          died($error_message);
        }
          $email_message = "Form details below.\n\n";
           
          function clean_string($string) {
            $bad = array("content-type","bcc:","to:","cc:","href");
            return str_replace($bad,"",$string);
          }
           
          $email_message .= "First Name: ".clean_string($first_name)."\n";
          $email_message .= "Last Name: ".clean_string($last_name)."\n";
          $email_message .= "Email: ".clean_string($email_from)."\n";
          $email_message .= "State: ".clean_string($state)."\n";
          $email_message .= "Comments: ".clean_string($comments)."\n";
           
           
      // create email headers
      $headers = 'From: '.$email_from."\r\n".
      'Reply-To: '.$email_from."\r\n" .
      'X-Mailer: PHP/' . phpversion();
      @mail($email_to, $email_subject, $email_message, $headers);  
      ?>
       
      <!-- include your own success html here -->
       
      Thank you for contacting us. We will be in touch with you very soon.
       
      <?php
      }
      ?>
      I receive the email when i use the above script. It also sends me the state AL,AK,AR etc.. instead of the actual ip

      Thanks

      ALi

      Comment

      • Dormilich
        Recognized Expert Expert
        • Aug 2008
        • 8694

        #18
        you could somewhat manage that, though you have 2 different error handling methods (die() & exceptions).

        the main problem is line #69. you have absolutely no verification, whether the mail was sent or not. try
        Code:
        if (!mail(/* message etc. */))
        {
            echo "failed to send message";
        }

        Comment

        • alibaba1
          New Member
          • Oct 2011
          • 14

          #19
          This is how my php code looks

          Code:
          <?php
          // visit http://php.net/pdo for more details
          // start error handling
          
          try 
          {
            // connect
            $pdo = new PDO('mysql:host=localhost;dbname=name', 'user', 'pass');
            // enable error handling through exceptions
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            // create safe query
            $query = $pdo->prepare("SELECT ip FROM vincer WHERE state = ? ORDER BY rand() LIMIT 1");
            // pass data & execute query (since the data are of string type
            // and therefore can be passed in this lazy way)
            $query->execute(array($_POST['State']));
            // get value
            $ip = $query->fetchColumn();
            // print out the IP address using $ip
          }
          catch (Exception $e)
          {
            echo "sorry, there was an error.";
            mail("1stoptutorials@gmail.com", "database error", $e->getMessage(), "From: 1stoptutorials@gmail.com");
          }
          
          if(isset($_POST['email'])) {
               
              // EDIT THE 2 LINES BELOW AS REQUIRED
              $email_to = "1stoptutorials@gmail.com";
              $email_subject = "This is a test";
               
               
              function died($error) {
                  // your error code can go here
                  echo "We are very sorry, but there were error(s) found with the form you submitted. ";
                  echo "These errors appear below.<br /><br />";
                  echo $error."<br /><br />";
                  echo "Please go back and fix these errors.<br /><br />";
                  die();
              }
               
              // validation expected data exists
              if(!isset($_POST['first_name']) ||
                  !isset($_POST['last_name']) ||
                  !isset($_POST['email']) ||
                  !isset($_POST['State']) ||
                  !isset($_POST['comments'])) {
                  died('We are sorry, but there appears to be a problem with the form you submitted.');       
              }
               
              $first_name = $_POST['first_name']; // required
              $last_name = $_POST['last_name']; // required
              $email_from = $_POST['email']; // required
              $state = $_POST['State']; // not required
              $comments = $_POST['comments']; // required
               
              $error_message = "";
              $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
            if(!preg_match($email_exp,$email_from)) {
              $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
            }
              $string_exp = "/^[A-Za-z .'-]+$/";
            if(!preg_match($string_exp,$first_name)) {
              $error_message .= 'The First Name you entered does not appear to be valid.<br />';
            }
            if(!preg_match($string_exp,$last_name)) {
              $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
            }
            if(strlen($comments) < 2) {
              $error_message .= 'The Comments you entered do not appear to be valid.<br />';
            }
            if(strlen($error_message) > 0) {
              died($error_message);
            }
              $email_message = "Form details below.\n\n";
               
              function clean_string($string) {
                $bad = array("content-type","bcc:","to:","cc:","href");
                return str_replace($bad,"",$string);
              }
               
              $email_message .= "First Name: ".clean_string($first_name)."\n";
              $email_message .= "Last Name: ".clean_string($last_name)."\n";
              $email_message .= "Email: ".clean_string($email_from)."\n";
              $email_message .= "State: ".clean_string($state)."\n";
              $email_message .= "Comments: ".clean_string($comments)."\n";
               
               
          // create email headers
          $headers = 'From: '.$email_from."\r\n".
          'Reply-To: '.$email_from."\r\n" .
          'X-Mailer: PHP/' . phpversion();
          if (!mail($email_to, $email_subject, $email_message, $headers))
          {
              echo "failed to send message";
          }  
          
          ?>
           
           
          <!-- include your own success html here -->
           
          Thank you for contacting us. We will be in touch with you very soon.
           
          <?php
          }
          ?>
          When i use this i receive an email and this is how it comes out

          Code:
          First Name: afdf
          Last Name: sfgsdf
          Email: sd@fd.com
          State: [B]AZ[/B]
          Comments: dsfsda
          as you can see all i get is the two letters of the state instead of the ip.

          You must be getting board of this, sorry for all the questions

          Ali

          Comment

          • Dormilich
            Recognized Expert Expert
            • Aug 2008
            • 8694

            #20
            well, if you use $state instead of $ip

            tip:
            isset($_POST['first_name'], $_POST['last_name']) only returns true if both indices exist

            $email = filter_input(IN PUT_POST, "email", FILTER_VALIDATE _EMAIL);
            Last edited by Dormilich; Nov 4 '11, 09:07 AM.

            Comment

            • alibaba1
              New Member
              • Oct 2011
              • 14

              #21
              Hey Dormilich Thanks for all your help you have been fantastic. Happy to say finally got the ip address coming in the email. This was the final code

              Code:
              <?php
              // visit http://php.net/pdo for more details
              // start error handling
              
              try 
              {
                // connect
                $pdo = new PDO('mysql:host=localhost;dbname=name', 'user', 'pass');
                // enable error handling through exceptions
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                // create safe query
                $query = $pdo->prepare("SELECT ip FROM vincer WHERE state = ? ORDER BY rand() LIMIT 1");
                // pass data & execute query (since the data are of string type
                // and therefore can be passed in this lazy way)
                $query->execute(array($_POST['State']));
                // get value
                $ip = $query->fetchColumn();
                // print out the IP address using $ip
              }
              catch (Exception $e)
              {
                echo "sorry, there was an error.";
                mail("email@gmail.com", "database error", $e->getMessage(), "From: email@gmail.com");
              }
              
              if(isset($_POST['email'])) {
                   
                  // EDIT THE 2 LINES BELOW AS REQUIRED
                  $email_to = "1stoptutorials@gmail.com";
                  $email_subject = "This is a test";
                   
                   
                  function died($error) {
                      // your error code can go here
                      echo "We are very sorry, but there were error(s) found with the form you submitted. ";
                      echo "These errors appear below.<br /><br />";
                      echo $error."<br /><br />";
                      echo "Please go back and fix these errors.<br /><br />";
                      die();
                  }
                   
                  // validation expected data exists
                  if(!isset($_POST['first_name']) ||
                      !isset($_POST['last_name']) ||
                      !isset($_POST['email']) ||
                      !isset($_POST['State']) ||
                      !isset($_POST['comments'])) {
                      died('We are sorry, but there appears to be a problem with the form you submitted.');       
                  }
                   
                  $first_name = $_POST['first_name']; // required
                  $last_name = $_POST['last_name']; // required
                  $email_from = $_POST['email']; // required
                  $state = $_POST['State']; // not required
                  $comments = $_POST['comments']; // required
                   
                  $error_message = "";
                  $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
                if(!preg_match($email_exp,$email_from)) {
                  $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
                }
                  $string_exp = "/^[A-Za-z .'-]+$/";
                if(!preg_match($string_exp,$first_name)) {
                  $error_message .= 'The First Name you entered does not appear to be valid.<br />';
                }
                if(!preg_match($string_exp,$last_name)) {
                  $error_message .= 'The Last Name you entered does not appear to be valid.<br />';
                }
                if(strlen($comments) < 2) {
                  $error_message .= 'The Comments you entered do not appear to be valid.<br />';
                }
                if(strlen($error_message) > 0) {
                  died($error_message);
                }
                  $email_message = "Form details below.\n\n";
                   
                  function clean_string($string) {
                    $bad = array("content-type","bcc:","to:","cc:","href");
                    return str_replace($bad,"",$string);
                  }
                   
                  $email_message .= "First Name: ".clean_string($first_name)."\n";
                  $email_message .= "Last Name: ".clean_string($last_name)."\n";
                  $email_message .= "Email: ".clean_string($email_from)."\n";
                  $email_message .= "State: ".clean_string($ip)."\n";
                  $email_message .= "Comments: ".clean_string($comments)."\n";
                   
                   
              // create email headers
              $headers = 'From: '.$email_from."\r\n".
              'Reply-To: '.$email_from."\r\n" .
              'X-Mailer: PHP/' . phpversion();
              if (!mail($email_to, $email_subject, $email_message, $headers))
              {
                  echo "failed to send message";
              }  
              
              ?>
              The bit that made it all come together was this bit

              Code:
              $email_message .= "State: ".clean_string($ip)."\n";
              The only thing that is not working is the random feature, im not sure why because like you suggested this bit has been added

              Code:
              $query = $pdo->prepare("SELECT ip FROM vincer WHERE state = ? ORDER BY rand() LIMIT 1");
              Once again for all your help i could not have done it without you

              Ali

              Comment

              • Dormilich
                Recognized Expert Expert
                • Aug 2008
                • 8694

                #22
                not sure if case matters … check also the MySQL Manual entry for RAND():

                Comment

                Working...