mssql post state to email

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • alibaba1
    New Member
    • Oct 2011
    • 14

    mssql post state to email

    Hey Everyone hope all ok. I am needing your expertise.

    I have an html form and inside of it i have a drop down option to choose a state

    Code:
    <select name="State">
        <option value="0" selected="selected">Select a State</option>
        <option value="AL">Alabama</option>
        <option value="AK">Alaska</option>
        <option value="AZ">Arizona</option>
        <option value="AR">Arkansas</option>
           etc.....
    </select>
    Any-time the customer selects a a state and submits the form it goes to my mssql database and pulls an ip address releavant to the staten they choose in the html form.

    Code:
    +-----------+-------+---------------+
    | stateip_id| state |   user_ip     |
    +-----------+-------+---------------+
    |      1    | AL    | 67.100.244.74 |
    |      2    | AK    | 68.20.131.135 |
    |      3    | AZ    | 64.134.225.33 |
    +-----------+-------+---------------+
    So for example, lets say they choose Alabama (AL), when they submit the form i want the code to connect to the php file and then show the ip address releavant to the state, in this case (AL). I have some php code for this thanks to this forum and another


    Code:
    <?php
    // visit http://php.net/pdo for more details
    // start error handling
    
    try 
    {
    $Server = "00.00.000.000,0000";
    $User = "username";
    $Pass = "password";
    $DB = "dbname";
    
    //connection to the database
    $dbhandle = mssql_connect($Server, $User, $Pass)
      or die("Couldn't connect to SQL Server on $Server"); 
    
    //select a database to work with
    $selected = mssql_select_db($DB, $dbhandle)
      or die("Couldn't open database $DB"); 
    
    $state = $_POST['State'];
    
    $query = "SELECT TOP 1 user_ip
                  FROM state_ip
                  WHERE state='$state'
                  ORDER BY newid()";
    
    //execute the SQL query and return records
    $result = mssql_query($query);
    
    $numRows = mssql_num_rows($result); 
    echo "<h1>" . $numRows . " Row" . ($numRows == 1 ? "" : "s") . " Returned </h1>"; 
    
    //display the results 
    while($row = mssql_fetch_array($result));
    
    }
    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 = "email@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['what']) ||
            !isset($_POST['State']) ||
            !isset($_POST['comments'])) {
            died('We are sorry, but there appears to be a problem with the form you submitted.');       
        }
    	
    	$what = $_POST['what']; // required
        $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 .= "What: ".clean_string($what)."\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
    }
    ?>
    This above code works great, i collects the state randomly and sends it to me in an email with the rest of the form info. The problem i have is that in the email it is sending me the letters, for example it is sending me "AL or AZ or CA etc.." it is not sending me the ip address. I think it has something to do with this line of code


    Code:
    $email_message .= "State: ".clean_string($state)."\n";
    mainly the $state part. I want it to select the user_ip part but can not find out how to do it. i have tryed this but it does not work

    Code:
    $email_message .= "State: ".clean_string('user_ip')."\n";
    This is how it displays in an email

    Code:
    First Name: afdf
    Last Name: sfgsdf
    What: hellow
    Email: sd@fd.com
    State: AL
    Comments: ali alabama2
    i want it to be this

    Code:
    First Name: afdf
    Last Name: sfgsdf
    What: hellow
    Email: sd@fd.com
    State: 123.456.1.21
    Comments: ali alabama2
    Any help would be great thanks every one
  • omerbutt
    Contributor
    • Nov 2006
    • 638

    #2
    try adding echo before the $query
    Code:
    echo $query = "SELECT TOP 1 user_ip...........
    and from the browser copy the query and run it in the phpmyadmin to see if the selected ip is present there or not against that state or not
    regards,
    Omer Aslam

    Comment

    Working...