Foros del Web » Programando para Internet » PHP »

Problema al actualizar datos de mysql con php

Estas en el tema de Problema al actualizar datos de mysql con php en el foro de PHP en Foros del Web. Hola, estoy haciendo un sistema en el cual hay una parte en la que se registran productos en una base de datos mysql, el formulario ...
  #1 (permalink)  
Antiguo 07/05/2014, 02:11
m18
 
Fecha de Ingreso: mayo-2014
Mensajes: 2
Antigüedad: 9 años, 10 meses
Puntos: 0
Pregunta Problema al actualizar datos de mysql con php

Hola, estoy haciendo un sistema en el cual hay una parte en la que se registran productos en una base de datos mysql, el formulario de registro de estos productos va acompañado de una imagen del mismo. A la hora de guardarlos no hay ningun problema.

Mi problema viene cuando deseo actualizar los datos del producto, ya que si actualizo por ejemplo el campo de la descripcion y dejo todos los demas tal y como estan y reviso si se actualizo, lo hace, pero la imagen del producto desaparece y no me la vuelve a mostrar.

Espero que me puedan ayudar; les pongo el codigo php que utilizo para ello

Formulario de insercion html:

Código HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1" />
<meta name="description" content="Sistema"/>
<title>Sistema</title>
<LINK REL="SHORTCUT ICON" HREF="imagenes/favicon.ico">


<link href="css/estilos.css" rel="stylesheet" type="text/css">
<link href="css/botones.css" rel="stylesheet" type="text/css" />
<link href="css/estilos_formularios.css" rel="stylesheet" type="text/css" />



</head>

<body>


<div id="wrapper">


<div id="titulo" align="center">Agregar Producto</div>

  <div id="contenido-agregar-cliente" align="center">
  
    
      <fieldset>

        <form method="POST" id="form1" action="proceso_guardar_producto.php" enctype="multipart/form-data">
          <table width="580" cellpadding="2" cellspacing="0">
            <tr>
              <td width="210"><span>Codigo del Articulo:</span></td>
              <td width="360"><input name="codigo_producto" type="text" placeholder="Escriba el codigo del articulo" title="Se requiere un codigo para el articulo" id="codigo_producto" value="" size="27"/>
                </td>
            </tr>
            <tr>
              <td><span>Nombre de Articulo:</span></td>
              <td><input type="text" name="nombre_prod" id="nombre_prod" value="" size="27" placeholder="Escriba el nombre del articulo" title="Se requiere un nombre para el articulo" required="required"/>
                </td>
            </tr>
            <tr>
              <td><span>Descripcion:</span></td>
              <td><input type="text" name="descripcion" id="descripcion" value="" size="27" placeholder="Escriba una descripcion corta" title="Se requiere una descripcion" required="required" />
                </td>
            </tr>
            <tr>
              <td><span>Cantidad:</span></td>
              <td><input type="text" name="cantidad" id="cantidad" value="" size="4" title="Se requiere una cantidad" required="required"/>
                </td>
            </tr>
            <tr>
              <td><span>Fecha de Ingreso:</span></td>
              <td><input name="fecha_ingreso" type="text" id="fecha_ingreso" title="Se requiere una fecha" value="" size="18" placeholder="Seleccione una fecha" required="required" />
              </td>
            </tr>
            <tr>
              <td><span>Precio de Proveedor:</span></td>
              <td><input type="text" name="precio_proveedor" id="precio_proveedor" value="" size="18" placeholder="Escriba el precio" title="Se requiere un precio" required="required" />
                
                
                
                </td>
            </tr>
            <tr>
              <td><span>Precio de Venta:</span></td>
              <td><input type="text" name="precio_venta" id="precio_venta" value="" size="18" placeholder="Escriba el precio" title="Se requiere un precio" required="required"/>
                
                
                
                </td>
            </tr>
            
            <tr>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td><span>Imagen:</span></td>
              <td><input type="file" name="imagen" id="imagen" size="32" />
                <br></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td align="right"><input name="enviar" type="submit" id="enviar" value="Agregar Producto" /></td>
            </tr>
          </table>
        </form>
        
      </fieldset>
 
  </div>
    
</div>



</body>
</html> 

Proceso_guardar_producto.php

Código PHP:

<?php  

include("conexion_bd/conexion.php");  


$codigo $_POST["codigo_producto"];
$nombre $_POST["nombre_prod"];
$descripcion $_POST["descripcion"];
$cantidad $_POST["cantidad"];
$fecha_ingreso $_POST["fecha_ingreso"];
$precio_proveedor $_POST["precio_proveedor"];
$precio_venta $_POST["precio_venta"];
$imagen $_FILES['imagen']['name']; 

            
$ruta "imagenes/imagenes_articulos/" $_FILES['imagen']['name']; 
            
$resultado move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta); 


$guardar_datos "INSERT INTO articulo (codigo_producto, nombre_prod, descripcion, cantidad, fecha_ingreso, precio_proveedor, precio_venta, imagen) VALUES ('$codigo', '$nombre', '$descripcion', '$cantidad', '$fecha_ingreso', '$precio_proveedor', '$precio_venta', '$imagen')"

mysql_query($guardar_datos); 
 

?>

Proceso_actualizar_producto.php


Código PHP:

<?php 
 
include("conexion_bd/conexion.php"); 

$nombre_prod $_POST['nombre_prod'];
$descripcion $_POST['descripcion'];
$cantidad $_POST['cantidad'];
$fecha_ingreso $_POST['fecha_ingreso'];
$precio_proveedor $_POST['precio_proveedor'];
$precio_venta $_POST['precio_venta'];
$imagen $_FILES['imagen']['name']; 

            
$ruta "imagenes/imagenes_articulos/" $_FILES['imagen']['name']; 
            
$resultado move_uploaded_file($_FILES["imagen"]["tmp_name"], $ruta); 


$id=$_GET['id_articulo'];

$actualizacion "UPDATE articulo SET nombre_prod='$nombre_prod', descripcion='$descripcion', cantidad='$cantidad', fecha_ingreso='$fecha_ingreso', precio_proveedor='$precio_proveedor', precio_venta='$precio_venta', imagen='$imagen' WHERE id_producto='$id'";

$resultados mysql_query($actualizacion);
    
    
?>
  #2 (permalink)  
Antiguo 07/05/2014, 02:22
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años
Puntos: 67
Respuesta: Problema al actualizar datos de mysql con php

Cuando haces el UPDATE, si no modificas la imagen no lo especifiques hay y no se guardará. Sólo actualiza lo que tu indiques en el UPDATE.

Saludos.
  #3 (permalink)  
Antiguo 07/05/2014, 10:34
m18
 
Fecha de Ingreso: mayo-2014
Mensajes: 2
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema al actualizar datos de mysql con php

Gracias por la pronta respuesta, pero creo que olvide mencionar que para hacer el update es por medio de otro formulario, en el cual el usuario puede o no modificar la imagen, asi que forzosamente lo debo especificar por si decide hacerlo.

Aqui esta el formulario de actualizacion, el cual muestra los datos dependiendo el id

Código PHP:

<?php 

include("conexion_bd/conexion.php");

$id=$_GET['id_articulo'];


$consulta mysql_query ("SELECT * FROM articulo WHERE id_producto = '$id'");
$resultados mysql_fetch_array($consulta);

?>


<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1" />
<meta name="description" content="Sistema"/>
<title>Sistema</title>
<LINK REL="SHORTCUT ICON" HREF="imagenes/favicon.ico">


<link href="css/estilos.css" rel="stylesheet" type="text/css">
<link href="css/botones.css" rel="stylesheet" type="text/css" />
<link href="css/estilos_formularios.css" rel="stylesheet" type="text/css" />



</head>

<body>


<div id="wrapper">


<div id="boton_atras"> <a href="busqueda_productos.php"><img src="imagenes/atras.png" width="51" height="51"></a></div>

<div id="titulo" align="center">Actualizacion de Datos</div>

  <div id="contenido-agregar-cliente" align="center">
  

    
      <fieldset>

        <form method="POST" id="form1" action="proceso_actualizar_producto.php?id_articulo=<?php echo $id?>" enctype="multipart/form-data">
          <table width="731" cellpadding="2" cellspacing="0" class="KT_tngtable">
            <tr>
              <td width="245">Codigo de articulo:</td>
              <td width="314"><input name="codigo_producto" type="text" placeholder="Escriba el codigo del articulo" title="Se requiere un codigo para el articulo" id="codigo_producto" value="<?php echo $resultados['codigo_producto'];?>" size="27" readonly="readonly"/>
              </td>
              <td width="158" align="center">Imagen Actual</td>
            </tr>
            <tr>
              <td>Nombre del art&iacute;culo:</td>
              <td><input type="text" name="nombre_prod" id="nombre_prod" value="<?php echo $resultados['nombre_prod'];?>" size="27"  placeholder="Escriba el nombre del articulo" title="Se requiere un nombre para el articulo" required="required" />
                </td>
              <td rowspan="6"><img src="imagenes/imagenes_articulos/<?php echo $resultados['imagen'];?>" width="156" height="156" /></td>
            </tr>
            <tr>
              <td>Descripci&oacute;n del art&iacute;culo:</td>
              <td><input type="text" name="descripcion" id="descripcion" value="<?php echo $resultados['descripcion'];?>" size="27"  placeholder="Escriba una descripcion corta" title="Se requiere una descripcion" required="required"/>
                </td>
            </tr>
            <tr>
              <td>Cantidad de art&iacute;culos:</td>
              <td><input type="text" name="cantidad" id="cantidad" value="<?php echo $resultados['cantidad'];?>" size="4" title="Se requiere una cantidad" required="required" />
                </td>
            </tr>
            <tr>
              <td>Fecha de ingreso:</td>
              <td><input type="text" name="fecha_ingreso" id="fecha_ingreso" value="<?php echo $resultados['fecha_ingreso'];?>" size="18" placeholder="Seleccione una fecha" required="required" />
              </td>
            </tr>
            <tr>
              <td>Precio de proveedor:</td>
              <td><input type="text" name="precio_proveedor" id="precio_proveedor" value="<?php echo $resultados['precio_proveedor'];?>" size="18" placeholder="Escriba el precio" title="Se requiere un precio" required="required" />
                
                </td>
            </tr>
            <tr>
              <td>Precio de venta:</td>
              <td><input type="text" name="precio_venta" id="precio_venta" value="<?php echo $resultados['precio_venta'];?>" size="18" placeholder="Escriba el precio" title="Se requiere un precio" required="required" />
                
                
                
                </td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td><span>Imagen:</span></td>
              <td><input type="file" name="imagen" id="imagen" size="32" />
                <br>
                </td>
              <td>&nbsp;</td>
            </tr>
            <tr>
              <td colspan="3">&nbsp;</td>
            </tr>
            <tr>
              <td colspan="3" align="right"><input name="enviar" type="submit" id="enviar" value="Actualizar Datos" /></td>
            </tr>
          </table>
        </form>

    </fieldset>
      

  </div>
    
</div>


</body>
</html>

Última edición por m18; 07/05/2014 a las 10:44
  #4 (permalink)  
Antiguo 07/05/2014, 10:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema al actualizar datos de mysql con php

Cita:
Iniciado por m18 Ver Mensaje
Gracias por la pronta respuesta, pero creo que olvide mencionar que para hacer el update es por medio de otro formulario, en el cual el usuario puede o no modificar la imagen, asi que forzosamente lo debo especificar por si decide hacerlo.
El rpoblema no es que especifiques o no, sino que debes validar si se modificó o no, antes de incluir ese campo en el UPDATE (recurda, por favor, que los formularios no realizan los UPDATEs, sino que los generas dinámicamente con PHP, donde creas la sentencia SQL, que se ejecuta en la BBDD).
Básicamente, te quedan dos posibilidades simples:
1) Verificas si el valor existente previamente para ese valor se modificó en el formulario, y en caso que no, no lo incluyes en el UPDATE.
2) Verificas si el valor que está llegando al UPDATE es: a) diferente del contenido actual del registro y además b) si contiene algo válido, y no un espacio o caracter vacío.

En cualquiera de los dos casos, lo que corresponde es que valides el dato que llega.

Por lo menos deberías hacer un echo leugo de esta línea:
Código PHP:
Ver original
  1. $actualizacion = "UPDATE articulo SET nombre_prod='$nombre_prod', descripcion='$descripcion', cantidad='$cantidad', fecha_ingreso='$fecha_ingreso', precio_proveedor='$precio_proveedor', precio_venta='$precio_venta', imagen='$imagen' WHERE id_producto='$id'";
  2.  
  3. echo $actualizacion ;
de modo de asegurarte qué es lo que está enviando a la base, y comprobar que no hay otro tipo de conflictos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: fecha, formulario, html, mysql, registro
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 22:43.