Skip to content Skip to sidebar Skip to footer

Dynamic Row Values Wrongly Updated Into Mysql Php

Here i'm trying to edit & update my dynamic row values using php. This is my edit.php page coding. it fetch the dynamic row datas from mysql perfectly.. $uid = (int)$_GET['id']

Solution 1:

If you have many rows with same VoucherID_FkUPDATE set data for all this rows. You need have set TariffSlNo to WHERE condition

$e_tariff = "UPDATE ebvouchertariffs SET 
    TariffDate = '$e_date', 
    TariffParticulars = '$e_particulars', 
    NoOfNights = '$e_noofnights', 
    TariffRate = '$e_rate', 
    TariffPrice = '$e_price', 
    TariffTax = '$e_tax', 
    TariffNetTotal = '$e_nettotal', 
    TariffAddTotal = '$e_totalamount', 
    TariffFinalTotal = '$e_finaltotal', 
    ModifiedOn = NOW() 
WHERE
    TariffSlNo = '$e_slno' AND VoucherID_Fk = '$uid'";

Solution 2:

You are not executing the sql query inside the for loop. when the loop get finished it returns the last query and then execute the last sql query using mysql_query which is outside the loop.

Answer :

Execute "mysql_query($e_tariff)or die(mysql_error());" inside the for loop so that the query will get execute every the loop runs.

Example:

include("config.php");
if (isset($_POST['submit_val'])) {
    for ($_POST['slno'] as$key=>$slno) {
        // ....// rest of the code$e_tariff = "UPDATE ebvouchertariffs SET TariffSlNo = '$e_slno', TariffDate = '$e_date', TariffParticulars = '$e_particulars', NoOfNights = '$e_noofnights', TariffRate = '$e_rate', TariffPrice = '$e_price', TariffTax = '$e_tax', TariffNetTotal = '$e_nettotal', TariffAddTotal = '$e_totalamount', TariffFinalTotal = '$e_finaltotal', ModifiedOn = NOW() WHERE VoucherID_Fk = '$uid'";
        mysql_query($e_tariff)ordie(mysql_error());
    }

Hope this helps :-)

Solution 3:

try this code. I have commented where your error is and make it correct.

include("config.php");
if(isset($_POST['submit_val'])) {
   // $uid = (int)$_POST["edited"]; <-- this will get same id for all records there is no value for"edited" in $_POST so it will update all records.
   foreach( $_POST['slno'] as $key=>$slno ) {
        $uid = (int)$slno; // <-- Update it by slno this will work.
        $e_date = $_POST['date'][$key];
        $e_particulars = $_POST['particulars'][$key];
        $e_noofnights = $_POST['noofnights'][$key];
        $e_rate = $_POST['rate'][$key];
        $e_price = $_POST['price'][$key];
        $e_tax = $_POST['tax'][$key];
        $e_nettotal = $_POST['nettotal'];
        $e_totalamount = $_POST['totalamount'];
        $e_finaltotal = $_POST['finaltotal'];

        $e_slno = mysql_real_escape_string($slno); // <-- here you are doing mistake replace $e_slno by $slno

        $e_date = mysql_real_escape_string($e_date);
        $e_particualrs = mysql_real_escape_string($e_particulars);
        $e_noofnights = mysql_real_escape_string($e_noofnights);
        $e_rate = mysql_real_escape_string($e_rate);
        $e_price = mysql_real_escape_string($e_price);
        $e_tax = mysql_real_escape_string($e_tax);
        $e_nettotal = mysql_real_escape_string($e_nettotal);
        $e_totalamount = mysql_real_escape_string($e_totalamount);
        $e_finaltotal = mysql_real_escape_string($e_finaltotal);
        $e_tariff = "UPDATE ebvouchertariffs SET TariffSlNo = '$e_slno', TariffDate = '$e_date', TariffParticulars = '$e_particulars', NoOfNights = '$e_noofnights', TariffRate = '$e_rate', TariffPrice = '$e_price', TariffTax = '$e_tax', TariffNetTotal = '$e_nettotal', TariffAddTotal = '$e_totalamount', TariffFinalTotal = '$e_finaltotal', ModifiedOn = NOW() WHERE TariffSlNo = '$uid'";
    }
    mysql_query($e_tariff)ordie(mysql_error());
    mysql_close($link);
}

Solution 4:

As per your comment: for example if user want to edit a voucher. in that voucher already contains 5 rows. user can edit their row values and if they want add two more rows... then try this.

first delete the old data and then insert new one.

$deletequery  = "delete from `ebvouchertariffs` WHERE VoucherID_Fk = '$uid' ";

and then insert new data.

foreach( $_POST['slno'] as$key=>$slno ) {
   $insertquery  = "insert into `ebvouchertariffs`.......";
 }

Post a Comment for "Dynamic Row Values Wrongly Updated Into Mysql Php"