0

i have used js to multiply but only 1st row is getting multiplied other rows are nt getting multiplied.

<?php 
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("form1", $con);


error_reporting(E_ALL ^ E_NOTICE);
$nam=$_REQUEST['select1'];


 $row=mysql_query("select * from inv where name='$nam'");
while($row1=mysql_fetch_array($row))
{ 
$Name=$row1['Name'];
    $Address =$row1['Address'];
    $City=$row1['City'];
        $Pincode=$row1['Pincode'];
    $No=$row1['No'];
    $Date=$row1['Date'];
    $DCNo=$row1['DCNo'];
    $DcDate=$row1['DcDate'];
    $YourOrderNo=$row1['YourOrderNo'];
    $OrderDate=$row1['OrderDate'];
    $VendorCode=$row1['VendorCode'];
    $SNo=$row1['SNo'];
    $descofgoods=$row1['descofgoods'];
    $Qty=$row1['Qty'];
    $Rate=$row1['Rate'];
    $Amount=$row1['Amount'];
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
 <script type="text/javascript">
       **function ram()
       {

       var q=document.getElementById('qty').value;

       var r=document.getElementById('rate').value;

       document.getElementById('amt').value=q*r;

       }**

       </script>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <table width="1315" border="0">
  <script type="text/javascript">
function g()
{
form1.submit();
}
</script>
  <tr>
    <th>Name</th>
    <th align="left"><select name="select1" onchange="g();">
      <option value="" selected="selected">select</option>
      <?php $row=mysql_query("select Name from inv ");
while($row1=mysql_fetch_array($row))
{ ?>
      <option value="<?php echo  $row1['Name'];?>"><?php echo  $row1['Name'];?></option>
      <?php } ?>
    </select></th>
  </tr>
  <tr>
    <th>Address</th>
    <th align="left"><textarea name="Address"><?php echo $Address;?></textarea></th>
  </tr>
  <tr>
    <th>City</th>
    <th align="left"><input type="text" name="City" value='<?php echo $City;?>' /></th>
  </tr>
  <tr>
    <th>Pincode</th>
    <th align="left"><input type="text" name="Pincode"  value='<?php echo $Pincode;?>'></th>
  </tr>
  <tr>
    <th>No</th>
    <th align="left"><input type="text" name="No2" value='<?php echo $No;?>' readonly="" /></th>
  </tr>
  <tr>
    <th>Date</th>
    <th align="left"><input type="text" name="Date" value='<?php echo $Date;?>' readonly="" /></th>
  </tr>
  <tr>
    <th>DCNo</th>
    <th align="left"><input type="text" name="DCNo" value='<?php echo $DCNo;?>' readonly="" /></th>
  </tr>
  <tr>
    <th>DcDate:</th>
    <th align="left"><input type="text" name="DcDate" value='<?php echo $DcDate;?>' /></th>
  </tr>
  <tr>
    <th>YourOrderNo</th>
    <th align="left"><input type="text" name="YourOrderNo" value='<?php echo $YourOrderNo;?>' readonly="" /></th>
  </tr>
  <tr>
    <th>OrderDate</th>
    <th align="left"><input type="text" name="OrderDate" value='<?php echo $OrderDate;?>' readonly="" /></th>
  </tr>
  <tr>
<th width="80">VendorCode</th>
  <th width="1225" align="left"><input type="text" name="VendorCode"  value='<?php echo $VendorCode;?>' readonly="" /></th>
</tr>
  </table>
  <table width="1313" border="0">

    <tr>
      <td width="44">&nbsp;</td>
      <td width="71">SNO</td>
      <td width="527">DESCRIPTION</td>
      <td width="214">QUANTITY</td>
      <td width="214">RATE/UNIT</td>
      <td width="217">AMOUNT</td>
    </tr>
                <?php $i=1;  
        $row=mysql_query("select * from inv where Name='$nam'");
while($row1=mysql_fetch_array($row))
{ 
$descofgoods=$row1['descofgoods'];
    $Qty=$row1['Qty'];
    $Rate=$row1['Rate'];
    $Amount=$row1['Amount'];
?>
    <tr>
      <td><input type="checkbox" name="checkbox" value="checkbox" /></td>
      <td><input type="text" name="No" value='<?php echo $No;?>' readonly=""/></td>
      <td><input type="text" name="descofgoods" value='<?php echo $descofgoods;?>' /></td>
      <td><input type="text" name="qty" maxlength="50000000" id="qty"/></td>
      <td><input type="text" name="Rate"  value='<?php echo $Rate;?>' id="rate" onclick="ram()";></td>
      <td><input type="text" name="Amount"   id="amt"/></td>
    </tr>
     <?php  $i++;} ?>
    <tr>
      <th colspan="2"><a href="pp.php?msg=<?php echo $nam;?>">Print</a></th>
    </tr>
  </table>
  <label></label>
</form>
</body>
</html>
1
  • Please give more clarity to the question. Commented Jun 1, 2010 at 14:47

3 Answers 3

3

I didn't read all of your code but i think problem is with your tag id it must be unique.

var q=document.getElementById('qty').value;

var r=document.getElementById('rate').value;

document.getElementById('amt').value=q*r;

javascript didn't get the other tag as you have more than one Tag with id 'qty', 'rate', 'amt', so javascript only convert the tag which comes first on the page and only multiple it.

TO AVOID THIS YOU SHOULD MAKE SURE THAT YOUR id FOR EACH TAG MUST BE UNIQUE

EDITED

1] Change your javascript function like something

   function ram(id)
   {

   var q=document.getElementById('qty_'+id).value;

   var r=document.getElementById('rate_'+id).value;

   document.getElementById('amt_'+id).value=q*r;

   }

2] add suffix $i to each tag

<td><input type="text" name="qty" maxlength="50000000" id="qty_<?PHP echo($i) ?>"/></td>
      <td><input type="text" name="Rate"  value='<?php echo $Rate;?>' id="rate_<?PHP echo($i) ?>" onclick="ram('<?PHP echo($i) ?>')";></td>
      <td><input type="text" name="Amount"   id="amt_<?PHP echo($i) ?>"/></td>

3] pass argument of the row in onclick function

onclick="ram('<?PHP echo($i) ?>')"
Sign up to request clarification or add additional context in comments.

1 Comment

Yep, that may be it. Try adding a suffix to all the elements so there's nothing repeated, example: id="amt-<?php echo $ID; ?>"
1

The problem you are having is that you use getElementById for this situation where you have multiple rows. An Id should be unique, so therefor it will only get the "first" match when using getElementById.

Comments

0

Try using parseInt():

document.getElementById('amt').value= parseInt(q) * parseInt(r);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.