I am trying to send a value from my test.php to my backgroundScript.php through the $_POST method and when print out the value that is being sent i get the correct value but when i go to my backgroundScript file to see if the value was sent – nothing gets printed out, it equals null ——————————–test.php file – main code
try {
# MySQL with PDO_MYSQL
$DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
//$DBH->prepare('SELECT first FROM contacts');
}
catch(PDOException $e) {
echo "I'm sorry, I'm afraid I can't do that.";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
//get query
$FNresult=$DBH->query('SELECT first FROM contacts');
//set fetch mode
$FNresult->setFetchMode(PDO::FETCH_ASSOC);
$dropdown = "<select name='contacts' id='contacts' >";
while($row =$FNresult->fetch()) {
$dropdown .= "\r\n<option value='{$row['first']}'>{$row['first']}</option>";
// echo getLN();
}
$dropdown .= "\r\n</select>";
echo $dropdown;
//}
/*
// Get last name
function getLN(){
$query = "SELECT last FROM contacts";
$LNresult=mysql_query($query);
$last;
while($row = mysql_fetch_assoc($LNresult)) {
$last = "{$row['last']}";
}
echo $last;
}//end getLN
*/
$DBH = null;
?>
<script type="text/javascript"
src="http://code.jquery.com/jquery-latest.min.js"></script>
<!-- javascript on client-side -->
<script type="text/javascript">
var dropdown = $('#contacts');
document.write(dropdown.val());
dropdown.bind('change', function(){
$.post('backgroundScript.php',
{
first: dropdown.val()
},
function(response) {
$('#first').val(response.first);
$('#last').val(response.last);
$('#phone').val(response.phone);
// Repeat for all of your form fields
},
'json'
);
});
</script>
<form action="insert.php" method="post">
First Name: <input type="text" id="first" ><br>
Last Name: <input type="text" id="last"><br>
Phone: <input type="text" id="phone"><br>
Mobile: <input type="text" id="mobile"><br>
Fax: <input type="text" id="fax"><br>
E-mail: <input type="text" id="email"><br>
Web: <input type="text" id="web"><br>
<input type="Submit">
</form>
backgroundScript.php ——————————————- where value is sent
try {
# MySQL with PDO_MYSQL
$DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
//$DBH->prepare('SELECT first FROM contacts');
}
catch(PDOException $e) {
echo "I'm sorry, I'm afraid I can't do that.";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
$first= $_POST['first'];
print_r("print value: $first");
//$first = "david";
$sth = $DBH->prepare('SELECT *
FROM contacts
WHERE first = :first');
$sth->bindParam(':first', $first, PDO::PARAM_STR);
$sth->execute();
$row = $sth->fetch();
$returnArray = array(
'first' => $row["first"],
'last' => $row["last"],
'phone' => $row["phone"],
);
//print_r("After pureeing fruit, the colour is: $returnArray");
/*echo "<pre>";
print_r($returnArray);
echo "</pre>";
exit;*/
// background script
// retrieve data based on $_POST variable, set to $returnArray
/*while($row = $sth->fetch(PDO::FETCH_ASSOC)){
// do something with row
}
$returnArray = array(
'first' => $row["first"],
);
echo "<pre>";
print_r($returnArray);
echo "</pre>";
exit;
*/
/****************************
* the structure of returnArray should look something like
array(
'first' => firstName,
'last' => lastName,
)*/
// echo json_encode(array('first' => "hello", 'last' => "Other value"));
//echo json_encode($returnArray);
$DBH = null;
############################ UPDATE TO TEST.PHP
try {
# MySQL with PDO_MYSQL
$DBH = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
//$DBH->prepare('SELECT first FROM contacts');
}
catch(PDOException $e) {
echo "I'm sorry, I'm afraid I can't do that.";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
//get query
$FNresult=$DBH->query('SELECT first FROM contacts');
//set fetch mode
$FNresult->setFetchMode(PDO::FETCH_ASSOC);
//}
/*
// Get last name
function getLN(){
$query = "SELECT last FROM contacts";
$LNresult=mysql_query($query);
$last;
while($row = mysql_fetch_assoc($LNresult)) {
$last = "{$row['last']}";
}
echo $last;
}//end getLN
*/
$DBH = null;
?>
<script type="text/javascript"
src="http://code.jquery.com/jquery-latest.min.js"></script>
<!-- javascript on client-side -->
<script type="text/javascript">
var dropdown = $('#contacts');
document.write(dropdown.val());
dropdown.bind('change', function(){
$.post('backgroundScript.php',
{
first: dropdown.val()
},
function(response) {
$('#first').val(response.first);
$('#last').val(response.last);
$('#phone').val(response.phone);
// Repeat for all of your form fields
},
'json'
);
});
</script>
<form action="insert.php" method="post">
<?php
$dropdown = "<select name='contacts' id='contacts' >";
while($row =$FNresult->fetch()) {
$dropdown .= "\r\n<option value='{$row['first']}'>{$row['first']}</option>";
// echo getLN();
}
$dropdown .= "\r\n</select>";
echo $dropdown;
?>
First Name: <input type="text" name="first" id="first" ><br>
Last Name: <input type="text" id="last"><br>
Phone: <input type="text" id="phone"><br>
Mobile: <input type="text" id="mobile"><br>
Fax: <input type="text" id="fax"><br>
E-mail: <input type="text" id="email"><br>
Web: <input type="text" id="web"><br>
<input type="Submit">
</form>
Now i get a undefined in javascript when i try to print out value of dropdown
######################################## UPDATE
<form action="backgroundScript.php" method="post">
<script type="text/javascript"
src="http://code.jquery.com/jquery-latest.min.js"></script>
<!-- javascript on client-side -->
<script type="text/javascript">
var dropdown = $('#contacts');
document.write(dropdown.val());
dropdown.bind('change', function(){
$.post('backgroundScript.php',
{
first: dropdown.val()
},
function(response) {
$('#first').val(response.first);
$('#last').val(response.last);
$('#phone').val(response.phone);
// Repeat for all of your form fields
},
'json'
);
});
</script>
<?php
$dropdown = "<select name='contacts' id='contacts' >";
while($row =$FNresult->fetch()) {
$dropdown .= "\r\n<option value='{$row['first']}'>{$row['first']}</option>";
}
$dropdown .= "\r\n</select>";
echo $dropdown;
?>
First Name: <input type="text" name="first" id="first" ><br>
Last Name: <input type="text" name="last" id="last"><br>
Phone: <input type="text" name="phone" id="phone"><br>
Mobile: <input type="text" id="mobile"><br>
Fax: <input type="text" id="fax"><br>
E-mail: <input type="text" id="email"><br>
Web: <input type="text" id="web"><br>
<input type="Submit">
</form>
POST uses
nameinstead ofidto identify parameters. Usenameon your fields – or use both.Javascript can make do of IDs nicely with the whole
getElementByIDbut POST and GET data needs thenameto be used.Edit: You also need to make sure that the
<select....>statement falls inside the<form>and</form>tags, otherwise it isn’t sent as part of that form.Stick this line:
above these lines:
Edit 2: Also, as Herpa points out, your
<form action=''>is set toinsert.phpand notbackgroundScript.php. You need to change that as well.