Problemas con formulario para update

Hola amigos tengo un formulario que realiza un Update a los campos que guardo en una base de datos, este formulario tiene para subir una imagen, pero yo deseo que el update de esta imagen sea opcional, al igual que los demás campos
Les dejo el código para ver si pueden ayudarme, de ante mano muchas gracias.
<?
$con = mysql_connect("***","***","***");
if (!$con)
{
die('Could not connect: ' . Mysql_error());
}
mysql_select_db("base_datos", $con);
$campo1=$_POST['campo1'];
$campo2=$_POST['campo2'];
$campo3=$_POST['campo3'];
$campo4=$_POST['campo4];
$campo5=$_POST['campo5'];
$campo6=$_POST['campo6'];
$nombre_archivo = $HTTP_POST_FILES["userfile"]["name"];
$tipo_archivo = $HTTP_POST_FILES["userfile"]["type"];
$tamano_archivo = $HTTP_POST_FILES["userfile"]["size"];
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")|| strpos($tipo_archivo, "png")) && ( $tamano_archivo < 1000000)))
{
echo "La extension o el tamaño de los archivos no es correcta. <br><br>
<table>
<tr>
<td>
<li>Se permiten archivos .gif o .jpg<br>
<li>se permiten archivos de 100 Kb maximo.</td>
</tr>
</table>
";
?>
<script language="javascript">
setTimeout("url()",3000);
function url()
{
window.history.back();
}
</script>
<?
}
else
{
$nom_img= $nombre_archivo;
$directorio = '../carpeta/imagenes';
if (move_uploaded_file($HTTP_POST_FILES['us. . "/" . $nom_img))
{
$diaactual= date("d");
$mesactual= date("m");
$anoactual= date("Y");
$fecha= $diaactual . "/" . $mesactual . "/" . $anoactual;
mysql_query("UPDATE tabla SET campo3='$campo3',campo2='$campo2',campo=. Fecha='$fecha' WHERE id = '$id'");
echo " se ah modificado con exito ";
}
{
echo "error al subir la foto";
}
}
mysql_close($con);
?>
En el momento de procesar el formulario sin actualizar la imagen me imprime este resultado:
La extensión o el tamaño de los archivos no es correcta.
Se permiten archivos .gif o .jpg
Se permiten archivos de 100 Kb máximo
1

1 respuesta

Respuesta
1
Para saber que quiso modificar el usuario, vamos a suponer que solo completó los campos que desea modificar. Es decir, que vamos a suponer que si deja un campo en "blanco", es porque no lo quiere modificar.
  Lo mismo con la imagen, vamos a suponer que si no SUBE ninguna imagen, es porque no quiere modificar la imagen.
En este caso vamos a reformar un poquito tu código.
<?php
$con = mysql_connect("***","***","***");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("base_datos", $con);
$campo1=$_POST['campo1'];
$campo2=$_POST['campo2'];
$campo3=$_POST['campo3'];
$campo4=$_POST['campo4'];
$campo5=$_POST['campo5'];
$campo6=$_POST['campo6'];
$error=false;
if ((isset($HTTP_POST_FILES['userfile']['name'])) and strlen($HTTP_POST_FILES['userfile']['name']))) {
  $nombre_archivo = $HTTP_POST_FILES["userfile"]["name"];
  $tipo_archivo = $HTTP_POST_FILES["userfile"]["type"];
  $tamano_archivo = $HTTP_POST_FILES["userfile"]["size"];
  if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")|| strpos($tipo_archivo, "png")) && ( $tamano_archivo < 1000000))) $error="La extension o el tamaño de los archivos no es correcta.";
  else {
    $nom_img= $nombre_archivo;
    $directorio = '../carpeta/imagenes';
    if (move_uploaded_file(......)) {
      //aca va la parte relacionada con el archivo, que no esta completa en tu codigo..
    } else $error="El archivo no pudo ser copiado al servidor";
  }
}
if (!$error) {
  $sql="UPDATE tabla SET ";
  $modificar="";
  if (strlen($campo1)) $modificar.=", campo1='{$campo1}' ";
  if (strlen($campo2)) $modificar.=", campo2='{$campo2}' ";
  //etceterea etcetera...
  if (strlen($modificar)) {
    $modificar=substr($modificar,1); //sacamos la primer coma (,)
    mysql_query("{$sql}{$modificar} where id='{$id}'");
    echo "Registro modificado con éxito";
  }
} else {
  echo "{$error}
<table>
<tr>
<td>
<li>Se permiten archivos .gif o .jpg<br>
<li>se permiten archivos de 100 Kb maximo.</td>
</tr>
</table>
";
  echo "
<script language=\"javascript\">setTimeout(\"url()\",3000);function url()\n{\nwindow.history.back();\n}\n</script>
";
}
mysql_close($con);
?>
Saludos. Pablo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas