Jump to content


Check out our Community Blogs

Register and join over 40,000 other developers!


Recent Status Updates

View All Updates

Photo
- - - - -

Problem In Getting Value From Select Option Using Ajax, Php And Mysql

innerHTML mysql ajax

  • Please log in to reply
2 replies to this topic

#1 newphpcoder

newphpcoder

    CC Devotee

  • Senior Member
  • PipPipPipPipPipPip
  • 527 posts

Posted 05 June 2012 - 11:47 PM

Hi...
It's my first time to use ajax and I used it to get the bin_loc per lot_number where I choose in select option per ItemCode.
And now I get the bin_loc but the problem is I only get the bin_loc of the first select option the rest was not.

Here is my code of PickingForm.php

<?php
session_start();
error_reporting(0);
date_default_timezone_set("Asia/Singapore"); //set the time zone
$con = mysql_connect('localhost', 'root','');
if (!$con) {
echo 'failed';
die();
}
mysql_select_db("mes", $con);
$Date_Shelve =date('Y-m-d H:i:s');
?>
<html>
<title>Picking</title>
<head>
<link href="kanban.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
var xmlhttp; // Give the function a unique name, this is what your HTML will call to run the AJAX
function select_code() { // This is all just setting up the variable, ignore it
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//alert(xmlhttp.responseText);
// alert(xmlhttp.readyState+" "+xmlhttp.status);
// alert(xmlhttp.readyState+" "+xmlhttp.status);
document.getElementById("bin_loc").innerHTML = xmlhttp.responseText;

//var mydata=xmlhttp.responseText;
}
};
var val = document.getElementById("lot_number");
var lot_number = val.options[val.selectedIndex].text;
//alert(lot_number);
var parameters = "lot_number="
+ lot_number;
xmlhttp.open("POST", "PickingFormTest.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(parameters);
//var mydata=xmlhttp.responseText;
}
</script>



</head>
<body>

<div id="SR_date">
<label>Date :</label>
<input type="text" name="date_pick" value="<?php echo $Date_Shelve; ?>" size="16" readonly="readonly" style="border: none;">
</div>
<div id="Picking">
<?php
$sr_num_ = $_POST['sr_num_'];

//$sql = "SELECT sr_number "

$sql = "SELECT sr_number, Items, DemandedQty, uom
FROM sr_main WHERE sr_number = '$sr_num_'";
$res_sr_main = mysql_query($sql, $con);

$row_num = mysql_num_rows($res_sr_main);
if($row_num > 0){
while($row_sr_main = mysql_fetch_assoc($res_sr_main)){
$sr_number_ = $row_sr_main['sr_number'];
$items = $row_sr_main['Items'];
$demandedqty = $row_sr_main['DemandedQty'];
$uom = $row_sr_main['uom'];
echo "<label> SR # :</label>";
echo "<input type='text' readonly='readonly' style='border:none;' id='sr_number_' name='sr_number_' value='$sr_number_'>";
echo "<table>";
echo "<th>Items</th>
<th> Item Code </th>
<th> Demanded Qty </th>
<th> UoM </th>
<th> Description </th>
<th> Lot Number </th>
<th> Bin Location </th>
<th> Picked By </th>
<th> Approved</th>";
echo "<tr>
<td>$items</td>
<td></td>
<td style='text-align:right;'>$demandedqty</td>
<td>$uom</td>
</tr>";

$sql_sub = "SELECT s.sr_number, s.Items, s.ItemCode, s.SubQty, s.UoM, s.Description
FROM sr_submain s WHERE s.sr_number = '$sr_num_' and s.Items = '$items' AND NOT EXISTS(SELECT w.stock_item FROM wms w WHERE s.ItemCode = w.stock_item AND w.sr_number = s.sr_number AND (w.qty_withdraw !='0.00' OR w.qty_withdraw = 'NULL'))";
$res_sub = mysql_query($sql_sub, $con);
while($row_sub = mysql_fetch_assoc($res_sub)){

echo "<form name='picking_lotnum' action='PickingForm.php?sr_num_=".$sr_num_."' method='POST' enctype='multipart/form-data' target='_self'>";
$sr_num = $row_sub['sr_number'];
$Items = $row_sub['Items'];
$ItemCode = $row_sub['ItemCode'];
$SubQty = $row_sub['SubQty'];
$UoM = $row_sub['UoM'];
$Description = $row_sub['Description'];
$query = "SELECT lot_number from wms WHERE (date_shelve IS NOT NULL) AND stock_item = '$ItemCode' AND (qty = orig_qty OR qty != '0.00') AND qty >= '$SubQty' ORDER BY qty";
$rows = mysql_query($query, $con);
echo "<tr>
<td></td>
<td><input type='text' name='ItemCode' id='ItemCode' value='$ItemCode' readonly='readonly' style='border:none;font-family: Arial, Helvetica, sans-serif;
font-size: .9em;'></td>
<td><input type='text' name='SubQty' id='SubQty' value='$SubQty' readonly = 'readonly' style='border:none; text-align:right;font-family: Arial, Helvetica, sans-serif;
font-size: .9em;'></td>
<td>$UoM</td>
<td>$Description</td>";

echo "<td><select name = 'lot_number' id='lot_number' onChange='select_code();'>";
echo "<option></option>";
while ($record = mysql_fetch_array($rows))
{
echo "<option value = '{$record['lot_number']}'";
if ($lot_number == $record['lot_number'])
echo "selected = 'selected'";
echo ">{$record['lot_number']}</option>";
}
echo "</select>";
echo "</td>";

echo "<td id='bin_loc'></td>";
echo "<td> <input type='text' name='picked_by' id='picked_by' size='20' value=''> </td>";
echo "<td><input type='submit' name='priority' value='Approved' id='priority'></td>";

echo "</tr>";
echo "<input type='hidden' name='date_pick' value='$Date_Shelve' size='16' style='border: none;'>";
echo "<input type='hidden' readonly='readonly' style='border:none;' id='sr_num_' name='sr_num_' value='$sr_number_'>";
echo "</form>";
}
}
}
echo "</table>";
echo "</div>";
?>
</body>
</html>

and here is the PickingFormTest.php

<?php
session_start();
error_reporting(0);
date_default_timezone_set("Asia/Singapore"); //set the time zone
$con = mysql_connect('localhost', 'root','');
if (!$con) {
echo 'failed';
die();
}
mysql_select_db("mes", $con);
$lot_number = $_POST['lot_number'];
//echo $lot_number;
// $q=$_GET["lot_number"];
$sql_bin = "SELECT bin_loc FROM wms WHERE lot_number = '$lot_number'";
$res_bin = mysql_query($sql_bin, $con);

while($row_bin = mysql_fetch_assoc($res_bin)){
$bin_loc = $row_bin['bin_loc'];

echo "<input type='text' value='$bin_loc' id='bin_loc'>";
}

?>

I attach the sample form
Thank you so much

Attached Thumbnails

  • picking2.JPG

  • 0

#2 BlackRabbit

BlackRabbit

    CodeCall Legend

  • Expert Member
  • PipPipPipPipPipPipPipPip
  • 3871 posts
  • Location:Argentina
  • Programming Language:C, C++, C#, PHP, JavaScript, Transact-SQL, Bash, Others
  • Learning:Java, Others

Posted 06 June 2012 - 05:02 PM

Hello newphpcoder ( what is your name by the way ? )

The problem seems to be that any time you change your selector it reflects in the first one only right ?
thing is you name ALL the <select> tags the same , as in :

echo "<td><select name = 'lot_number' id='lot_number' onChange='select_code();'>"

so, all the iterations, all the rows for lot_number has the same name and id, so when you do a change, select_code() simply goes to modify the first one, cause this :

var val = document.getElementById("lot_number");	     
var lot_number = val.options[val.selectedIndex].text;

and there is not only one lot_number, there is as many as rows you have, still javascript will take the first one,

you could take care of that issue with this :


[code] echo "<td><select name = 'lot_number' id='lot_number' onChange='select_code(this);'>"[/code]


where this sends to select_code the <select> being changed, still, your problem is that bin_loc still has many rows, all of them with the same name, so what i would recomend is this :

in your php, you should do row counter, and add like a _$rowCounter to both, bin_loc and row_number, so you can point to the right control, else you will always be working on the first one since they all are named and id'ed the same
  • 0

#3 newphpcoder

newphpcoder

    CC Devotee

  • Senior Member
  • PipPipPipPipPipPip
  • 527 posts

Posted 06 June 2012 - 05:20 PM

Hello newphpcoder ( what is your name by the way ? )

The problem seems to be that any time you change your selector it reflects in the first one only right ?
thing is you name ALL the <select> tags the same , as in :

echo "<td><select name = 'lot_number' id='lot_number' onChange='select_code();'>"

so, all the iterations, all the rows for lot_number has the same name and id, so when you do a change, select_code() simply goes to modify the first one, cause this :

var val = document.getElementById("lot_number");		
var lot_number = val.options[val.selectedIndex].text;

and there is not only one lot_number, there is as many as rows you have, still javascript will take the first one,

you could take care of that issue with this :


[code] echo "<td><select name = 'lot_number' id='lot_number' onChange='select_code(this);'>"[/code]


where this sends to select_code the <select> being changed, still, your problem is that bin_loc still has many rows, all of them with the same name, so what i would recomend is this :

in your php, you should do row counter, and add like a _$rowCounter to both, bin_loc and row_number, so you can point to the right control, else you will always be working on the first one since they all are named and id'ed the same


hi..

I resolve by this code:


<?php
session_start();
error_reporting(0);
date_default_timezone_set("Asia/Singapore"); //set the time zone
$con = mysql_connect('localhost', 'root','');
if (!$con) {
echo 'failed';
die();
}
mysql_select_db("mes", $con);
$Date_Shelve =date('Y-m-d H:i:s');
?>
<html>
<title>Picking</title>
<head>
<link href="kanban.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
var xmlhttp; // Give the function a unique name, this is what your HTML will call to run the AJAX
function select_code(num) { // This is all just setting up the variable, ignore it
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("bin_loc["+num+"]").innerHTML = xmlhttp.responseText;
}
};
var val = document.getElementById('lot_number['+num+']');
var lot_number = val.options[val.selectedIndex].text;
//alert(lot_number);
var parameters = "lot_number="
+ lot_number;
xmlhttp.open("POST", "PickingFormTest.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(parameters);
//var mydata=xmlhttp.responseText;
}
</script>


</head>
<body>

<?php
$Approved = isset($_POST['priority']);
if ($Approved)
{
$lot_number = $_POST['lot_number'];
$sr_num_ = $_POST['sr_num_'];
$SubQty = $_POST['SubQty'];
$ItemCode = $_POST['ItemCode'];
$picked_by = $_POST['picked_by'];
$date_pick = $_POST['date_pick'];
$sql = "SELECT stock_item, qty FROM wms WHERE stock_item = '" . $ItemCode . "' AND lot_number = '" . $lot_number . "'";
$res = mysql_query($sql, $con) or die( "Query : [$sql]<br/>\nError : ". mysql_error($con));
$row = mysql_fetch_assoc($res);
$stock_item = $row['stock_item'];
$qty = $row['qty'];
if($qty >= $SubQty){

$output = $qty - $SubQty;

$qty_withdraw = '0.00';
}
else{
$output = '0.00';
$qty_withdraw = $SubQty - $qty;
}

$sql_up = "UPDATE wms SET qty = '$output', sr_number = '$sr_num_', picked_by = '$picked_by', qty_withdraw = '$qty_withdraw', date_pick = '$date_pick'
WHERE lot_number = '$lot_number' AND stock_item = '$ItemCode'";
//echo $sql_up;
//exit;
$res_up = mysql_query($sql_up, $con) or die( "Query : [$sql_up]<br/>\nError : ". mysql_error($con));
//echo "<meta http-equiv='refresh' content='0; url=PickingForm.php?sr_num_=".$sr_num_."'>";
// echo "<meta http-equiv='refresh' content='0; url=PickingForm.php'>";
}
else{

}

?>
<div id="SR_date">
<label>Date :</label>
<input type="text" name="date_pick" value="<?php echo $Date_Shelve; ?>" size="16" readonly="readonly" style="border: none;">
</div>
<div id="Picking">
<!--<label class="LLabellot">Select SR # :</label>-->
<?php
$sr_num_ = $_POST['sr_num_'];

//$sql = "SELECT sr_number "

$sql = "SELECT sr_number, Items, DemandedQty, uom
FROM sr_main WHERE sr_number = '$sr_num_'";
$res_sr_main = mysql_query($sql, $con);

$row_num = mysql_num_rows($res_sr_main);
if($row_num > 0){
while($row_sr_main = mysql_fetch_assoc($res_sr_main)){
$sr_number_ = $row_sr_main['sr_number'];
$items = $row_sr_main['Items'];
$demandedqty = $row_sr_main['DemandedQty'];
$uom = $row_sr_main['uom'];
echo "<label> SR # :</label>";
echo "<input type='text' readonly='readonly' style='border:none;' id='sr_number_' name='sr_number_' value='$sr_number_'>";
echo "<table>";
echo "<th>Items</th>
<th> Item Code </th>
<th> Demanded Qty </th>
<th> UoM </th>
<th> Description </th>
<th> Lot Number </th>
<th> Bin Location </th>
<th> Picked By </th>
<th> Approved</th>";
echo "<tr>
<td>$items</td>
<td></td>
<td style='text-align:right;'>$demandedqty</td>
<td>$uom</td>
</tr>";

$sql_sub = "SELECT s.sr_number, s.Items, s.ItemCode, s.SubQty, s.UoM, s.Description
FROM sr_submain s WHERE s.sr_number = '$sr_num_' and s.Items = '$items' AND NOT EXISTS(SELECT w.stock_item FROM wms w WHERE s.ItemCode = w.stock_item AND w.sr_number = s.sr_number AND (w.qty_withdraw !='0.00' OR w.qty_withdraw = 'NULL'))";
$res_sub = mysql_query($sql_sub, $con);
while($row_sub = mysql_fetch_assoc($res_sub)){
echo "<form name='picking_lotnum' action='PickingForm.php?sr_num_=".$sr_num_."' method='POST' enctype='multipart/form-data' target='_self'>";
$sr_num = $row_sub['sr_number'];
$Items = $row_sub['Items'];
$ItemCode = $row_sub['ItemCode'];
$SubQty = $row_sub['SubQty'];
$UoM = $row_sub['UoM'];
$Description = $row_sub['Description'];
//$query = "SELECT lot_number from wms WHERE (date_shelve IS NOT NULL) AND stock_item = '$ItemCode' AND (qty = orig_qty OR qty != '0.00') AND qty >= '$SubQty' ORDER BY qty";
$query = "SELECT lot_number from wms WHERE (date_shelve IS NOT NULL) AND stock_item = '$ItemCode' AND (qty = orig_qty OR qty != '0.00') ORDER BY qty";
$rows = mysql_query($query, $con);
echo "<tr>
<td></td>
<td><input type='text' name='ItemCode' id='ItemCode' value='$ItemCode' readonly='readonly' style='border:none;font-family: Arial, Helvetica, sans-serif;
font-size: .9em;'></td>
<td><input type='text' name='SubQty' id='SubQty' value='$SubQty' readonly = 'readonly' style='border:none; text-align:right;font-family: Arial, Helvetica, sans-serif;
font-size: .9em;'></td>
<td>$UoM</td>
<td>$Description</td>";
++$x;
echo "<td><select name = 'lot_number[$x]' id='lot_number[$x]' onChange='select_code($x);'>";
echo "<option></option>";

while ($record = mysql_fetch_array($rows))
{

echo "<option value = '{$record['lot_number']}'";
if ($lot_number == $record['lot_number'])
echo "selected = 'selected'";
echo ">{$record['lot_number']}</option>";
}
echo "</select>";
echo "</td>";
echo "<td id='bin_loc[$x]'></td>";
echo "<td> <input type='text' name='picked_by' id='picked_by' size='20' value=''> </td>";
echo "<td><input type='submit' name='priority' value='Approved' id='priority'></td>";

echo "</tr>";
echo "<input type='hidden' name='date_pick' value='$Date_Shelve' size='16' style='border: none;'>";
echo "<input type='hidden' readonly='readonly' style='border:none;' id='sr_num_' name='sr_num_' value='$sr_number_'>";
echo "</form>";
}
}
}
echo "</table>";
echo "</div>";
?>
</body>
</html>

.

Thank you
  • 0





Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download