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
<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 SQL Server database and pulls an ip address relevant to the state they choose in the html form.
+-----------+-------+---------------+
| 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 relevant to the state, in this case (AL). I have some php code for this thanks to this forum and another
<?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.
";
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)."
";
$email_message .= "Last Name: ".clean_string($last_name)."
";
$email_message .= "What: ".clean_string($what)."
";
$email_message .= "Email: ".clean_string($email_from)."
";
$email_message .= "State: ".clean_string($state)."
";
$email_message .= "Comments: ".clean_string($comments)."
";
// create email headers
$headers = 'From: '.$email_from."
".
'Reply-To: '.$email_from."
" .
'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 collect 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
$email_message .= "State: ".clean_string($state)."
";
mainly the $state part. I want it to select the user_ip part but can not find out how to do it. I have tried this but it does not work
$email_message .= "State: ".clean_string('user_ip')."
";
This is how it displays in an email
First Name: afdf
Last Name: sfgsdf
What: hellow
Email: sd@fd.com
State: AL
Comments: ali alabama2
I want it to be this
First Name: afdf
Last Name: sfgsdf
What: hellow
Email: sd@fd.com
State: 123.456.1.21
Comments: ali alabama2
It's doing exactly what you've coded it to:
$email_message .= "State: ".clean_string($state)." ";
You're populating the variable $result with the ip address here:
$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);
So you really need $result instead of $state:
$email_message .= "State: ".clean_string($result)." ";