valores de fila dynamics actualizados erróneamente en mysql php

Aquí bash editar y actualizar mis valores dynamics de fila usando php. Esta es mi encoding de página edit.php. capta perfectamente los datos dynamics de la fila de mysql.

$uid = (int)$_GET['id']; $tariff_query = mysql_query("SELECT * FROM ebvouchertariffs WHERE VoucherID_Fk = $uid"); if(mysql_num_rows($tariff_query)>=1) { echo ""; while($t_row = mysql_fetch_array($tariff_query)) { echo ""; } }

Esta es mi encoding de la página update.php. actualiza los datos incorrectamente.

Antes de la actualización:

enter image description here

Después de la actualización :

enter image description here

Edité todas las filas y columnas y cuando actualicé el voucher siempre actualiza los últimos valores de la fila en todas las filas. puedes ver en esa imagen. Pero estoy usando la opción de edición y actualización para el campo de texto único. funciona bien Valores de fila dynamics actualizados erróneamente en la base de datos. para generar filas dinámicas estoy usando javascript … ¿cómo resolver este problema?

 include("config.php"); if(isset($_POST['submit_val'])) { $uid = (int)$_POST["edited"]; foreach( $_POST['slno'] as $key=>$slno ) { $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); $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 VoucherID_Fk = '$uid'"; } mysql_query($e_tariff)or die(mysql_error()); mysql_close($link); } 

He publicado otra pregunta aquí Aquí está el enlace para otra pregunta

Si tiene muchas filas con el mismo VoucherID_Fk UPDATE configure los datos para todas estas filas. Necesita haber establecido TariffSlNo en la condición WHERE

 $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'"; 

No estás ejecutando la consulta sql dentro del ciclo for. cuando se completa el ciclo, devuelve la última consulta y luego ejecuta la última consulta SQL utilizando mysql_query que está fuera del ciclo.

Solución:

Ejecute “mysql_query ($ e_tariff) o die (mysql_error ());” dentro del bucle for para que la consulta se ejecute cada ciclo que se ejecute.

Ejemplo:

 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)or die(mysql_error()); } 

Espero que esto ayude 🙂

prueba este código He comentado dónde está tu error y lo corrijo.

 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)or die(mysql_error()); mysql_close($link); } 

Según su comentario: 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... 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... 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... entonces intente esto.

primero borre los datos antiguos y luego inserte uno nuevo.

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

y luego inserte datos nuevos.

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

SL.NO DATE PARTICULARS NO OF NIGHTS RATE PRICE TAX %
"; echo ""; echo "" . $t_row['NoOfNights'] . ""; echo ""; echo "1 2 20"; echo ""; echo "