Foros del Web » Programando para Internet » PHP »

Problema con codigo de actualizar tabla de BBDD mysql

Estas en el tema de Problema con codigo de actualizar tabla de BBDD mysql en el foro de PHP en Foros del Web. Hola a todos/as Tengo el siguiente codigo Código PHP: print_r  ( $_POST [ 'prefacturas_operario_facturas' ]); if (empty( $_POST [ 'prefacturas_operario_facturas' ])) { echo  'El arreglo no tiene elementos' ; } ...
  #1 (permalink)  
Antiguo 04/01/2008, 02:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 4 meses
Puntos: 0
Problema con codigo de actualizar tabla de BBDD mysql

Hola a todos/as

Tengo el siguiente codigo


Código PHP:
print_r ($_POST['prefacturas_operario_facturas']);

if (empty(
$_POST['prefacturas_operario_facturas']))
{
echo 
'El arreglo no tiene elementos';
}
else
{
    foreach (
$_POST['prefacturas_operario_facturas'] as $prefacturas_operario_facturas){ 
        
mysql_query("UPDATE facturas SET estado='F',fecha_facturacion='$fecha' WHERE id_factura='$id_factura'") or die (mysql_error());
echo 
"Pasa por aqui";
            list(
$id_factura,$numero) = explode("|"$prefacturas_operario_facturas);

                echo 
$numero."<br>";
                echo 
"$id_operario";
echo 
"$id_factura";
    }  
}



 
// Recorremos el array de contratos insertando y mostrando sus valores
print_r ($_POST['prefactura_operario_contratos']);
if (empty(
$_POST['prefactura_operario_contratos']))
{
echo 
'El arreglo no tiene elementos';
}
else
{
    foreach (
$_POST['prefactura_operario_contratos'] as $prefactura_operario_contratos){ 
        echo 
$id_contrato;
        
mysql_query("UPDATE contratos SET estado='F',fecha_facturacion='$fecha' WHERE id_contrato='$prefactura_operario_contratos'") or die (mysql_error());

        } 

Y mi problema es que si llegan los datos, la tabla existe y demas, pero la tabla factura no me la actualiza es como si estuviera bloqueada, auque si intento hacerle un update desde el phpmysql pues me lo hace , y la sin embargo lo curioso es que la tabla contratos me la actualiza sin ningun problema, y este codigo lo tengo en otra pagina que hace lo mismo y sin embargo pues en esa si me la actualiza.

Alguna idea para saber o averiguar el motivo del por que no me lo actualiza.

Muchas gracias por todo y feliz navidad.
  #2 (permalink)  
Antiguo 04/01/2008, 02:30
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Problema con codigo de actualizar tabla de BBDD mysql

Código PHP:
    foreach ($_POST['prefacturas_operario_facturas'] as $prefacturas_operario_facturas){ 
        
mysql_query("UPDATE facturas SET estado='F',fecha_facturacion='$fecha' WHERE id_factura='$id_factura'") or die (mysql_error());
echo 
"Pasa por aqui";
            list(
$id_factura,$numero) = explode("|"$prefacturas_operario_facturas); 
En el mysql_query() usas $id_factura, pero parece que ese dato lo obtienes en la linea siguiente con el explode. Si no has calculado antes el valor de $id_factura, en el mysql_query() sera una cadena vacia, que no correspondera a ningun registro y por eso no actualiza ningun registro.
  #3 (permalink)  
Antiguo 04/01/2008, 02:40
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problema con codigo de actualizar tabla de BBDD mysql

Cita:
Iniciado por DarkJ Ver Mensaje
Código PHP:
    foreach ($_POST['prefacturas_operario_facturas'] as $prefacturas_operario_facturas){ 
        
mysql_query("UPDATE facturas SET estado='F',fecha_facturacion='$fecha' WHERE id_factura='$id_factura'") or die (mysql_error());
echo 
"Pasa por aqui";
            list(
$id_factura,$numero) = explode("|"$prefacturas_operario_facturas); 
En el mysql_query() usas $id_factura, pero parece que ese dato lo obtienes en la linea siguiente con el explode. Si no has calculado antes el valor de $id_factura, en el mysql_query() sera una cadena vacia, que no correspondera a ningun registro y por eso no actualiza ningun registro.
Hola

Pero como comento si te fijas en el codigo del apartado de contratos si me lo actualiza y esta exactamente igual, de ahi que me extrañe ademas este mismo codigo lo utilizo en otras 3 partes de la aplicación tal cual lo pongo y va perfecto, ademas de rapido.

Se te ocurre alguna idea para separar datos antes del foreach, ya que con un list no me deja hacerlo.

Saludos
  #4 (permalink)  
Antiguo 04/01/2008, 04:30
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Problema con codigo de actualizar tabla de BBDD mysql

Pero en el query de contratos usas "WHERE id_contrato='$prefactura_operario_contratos'", y $prefactura_operario_contratos le das valor con el foreach ($_POST['prefactura_operario_contratos'] as $prefactura_operario_contratos).

Como te he dicho, prueba a poner el list() antes del mysql_query() dentro del foreach.

Y que el mismo trozo de codigo te funcione en otro sitio no indica nada. El codigo depende de los datos. El mismo codigo con los mismos datos siempre funciona igual, mismo codigo con distintos datos puede fallar a veces. Y me refiero a datos en general, valores de las variables, constantes, etc. En esos otros puntos donde dices que el mismo codigo te funciona, puede ser porque antes de ese codigo has hecho algo que haga que el estado de las variables sea diferente.

Es mas, en este mismo trozo de codigo, prueba a ver que pasa si $_POST['prefacturas_operario_facturas'] tiene 2 o mas elementos.
  #5 (permalink)  
Antiguo 04/01/2008, 09:19
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problema con codigo de actualizar tabla de BBDD mysql

Cita:
Iniciado por DarkJ Ver Mensaje
Pero en el query de contratos usas "WHERE id_contrato='$prefactura_operario_contratos'", y $prefactura_operario_contratos le das valor con el foreach ($_POST['prefactura_operario_contratos'] as $prefactura_operario_contratos).

Como te he dicho, prueba a poner el list() antes del mysql_query() dentro del foreach.

Y que el mismo trozo de codigo te funcione en otro sitio no indica nada. El codigo depende de los datos. El mismo codigo con los mismos datos siempre funciona igual, mismo codigo con distintos datos puede fallar a veces. Y me refiero a datos en general, valores de las variables, constantes, etc. En esos otros puntos donde dices que el mismo codigo te funciona, puede ser porque antes de ese codigo has hecho algo que haga que el estado de las variables sea diferente.

Es mas, en este mismo trozo de codigo, prueba a ver que pasa si $_POST['prefacturas_operario_facturas'] tiene 2 o mas elementos.
Hola Darkj

Efectivamente tenias toda la razon, esto me ha pasado por estar toda la noche programando no se lo aconsejo a nadie la verdad, jejejeje

Lo dicho mil gracias por tu info y por ayudarme a razonar con el codigo.

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:18.