Hola, que tal?
Tengo un formulario para editar registros en la BD, que contiene 3 campos de texto (titulo, descripción y texto) y 2 campos file (imagen y miniatura).
Le puse unas condicionales para que si los input file estaban vacíos, no ejecute el cambio de la imagen en el campo blob de la bd.
Según como hago la condicional, funcionan ciertas cosas y otras no. Por ejemplo:
Si uso:
Código PHP:
if(isset($_POST['imagen'])){
//Todo lo que tiene que hacer con la imagen
}
Se guardan los cambios en los campos de texto, pero no en la imagen.
Si uso:
Código PHP:
if(isset($_FILES['imagen'])){
//Todo lo que tiene que hacer con la imagen
}
Se guardan los cambios en la imagen, pero no en los campos de texto. Y el script se corta en cierto momento ya que queda la pantalla en blanco. Pero no me da ningún error. Por eso me imagino que no está guardando los otros campos en la BD, porque no llega a ejecutar esa consulta.
Les dejo el código completo para que vean si he hecho algo mal, porque ya probé muchísimas cosas y no le encuentro la vuelta.
Ah, también probé con if(!empty($_FILES['imagen']['tmp_name'])) y pasaba lo mismo que con el segundo ejemplo que di.
Bueno, el código completo es el siguiente:
Código PHP:
<?php
# Nombre temporal de las thumbnails
define("TEMP_THUMB", "thumb");
# Nombre temporal de las fotos
define("TEMP_FOTO", "foto");
// Mime types permitidos
$mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png");
if(!isset($_POST['guardar']) && !isset($_GET['idServ'])){
header("Location: servicios.php");
}
if(isset($_GET['idServ'])){
$idServ = $_GET['idServ'];
}
if(isset($_POST['guardar'])){
include('incluir/config.php');
$nombre = $_POST['nombre'];
$descripcion = $_POST['descripcion'];
$texto = addslashes($_POST['texto']);
if(isset($_POST['imagen'])){
$tmpNameFoto = $_FILES['imagen']['tmp_name'];
$fileTypeFoto = $_FILES['imagen']['type'];
//Guardo las fotos y las thumbnails en la BD
// Verificamos si el archivo es una imagen válida
if(!in_array($fileTypeFoto, $mimetypes)){
$message = "El archivo que subiste no es una imagen válida";
return $message;
}
switch($fileTypeFoto){
case $mimetypes[0]:
case $mimetypes[1]:
$foto = imagecreatefromjpeg($tmpNameFoto);
break;
case $mimetypes[2]:
$foto = imagecreatefromgif($tmpNameFoto);
break;
case $mimetypes[3]:
$foto = imagecreatefrompng($tmpNameFoto);
break;
}
switch($fileTypeFoto) {
case $mimetypes[0]:
case $mimetypes[1]:
imagejpeg($foto, TEMP_FOTO);
break;
case $mimetypes[2]:
imagegif($foto, TEMP_FOTO);
break;
case $mimetypes[3]:
imagepng($foto, TEMP_FOTO);
break;
}
// Extrae los contenidos de las fotos
# contenido de la foto original
$fp = fopen(TEMP_FOTO, "rb");
$tfoto = fread($fp, filesize(TEMP_FOTO));
$tfoto = addslashes($tfoto);
fclose($fp);
// Borra archivos temporales si es que existen
@unlink($tmpNameFoto);
@unlink(TEMP_FOTO);
$cons = mysql_query("UPDATE servicios SET foto = '$tfoto', typeFoto = '$fileTypeFoto' WHERE idServ = '$idServ' LIMIT 1;", $link) or die('Error MySQL: '.mysql_error($link));
mysql_close($link);
}
if(isset($_POST['thumb'])){
$tmpNameThumb = $_FILES['thumb']['tmp_name'];
$fileTypeThumb = $_FILES['thumb']['type'];
//Guardo las fotos y las thumbnails en la BD
// Verificamos si el archivo es una imagen válida
if(!in_array($fileTypeThumb, $mimetypes)){
$message = "El archivo que subiste no es una imagen válida";
return $message;
}
switch($fileTypeThumb){
case $mimetypes[0]:
case $mimetypes[1]:
$thumb = imagecreatefromjpeg($fileTypeThumb);
break;
case $mimetypes[2]:
$thumb = imagecreatefromgif($fileTypeThumb);
break;
case $mimetypes[3]:
$thumb = imagecreatefrompng($fileTypeThumb);
break;
}
switch($fileTypeThumb) {
case $mimetypes[0]:
case $mimetypes[1]:
imagejpeg($thumb, TEMP_THUMB);
break;
case $mimetypes[2]:
imagegif($thumb, TEMP_THUMB);
break;
case $mimetypes[3]:
imagepng($thumb, TEMP_THUMB);
break;
}
// Extrae los contenidos de las fotos
# contenido de la foto original
$fp = fopen(TEMP_THUMB, "rb");
$tthumb = fread($fp, filesize(TEMP_THUMB));
$tthumb = addslashes($tthumb);
fclose($fp);
// Borra archivos temporales si es que existen
@unlink($fileTypeThumb);
@unlink(TEMP_THUMB);
$cons = mysql_query("UPDATE servicios SET thumb = '$tthumb', typeThumb = '$fileTypeThumb' WHERE idServ = '$idServ' LIMIT 1;", $link) or die('Error MySQL: '.mysql_error($link));
if(!$cons){
$resultado = 'error';
} else {
$resultado = 'ok';
mysql_close($link);
}
}
$cons = mysql_query("UPDATE servicios SET nombre = '$nombre', descripcion = '$descripcion', texto = '$texto' WHERE idServ = '$idServ' LIMIT 1;", $link) or die('Error MySQL: '.mysql_error($link));
if(!$cons){
$resultado = 'error';
} else {
$resultado = 'ok';
}
header("Location: editarServicio.php?idServ=".$idServ."&resultado=".$resultado);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Panel de Administración</title>
<link href="incluir/estilos.css" rel="stylesheet" type="text/css" />
<script src="incluir/SpryValidationTextField.js" type="text/javascript"></script>
<link href="incluir/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../ckeditor/ckeditor.js"></script>
<script type="text/javascript">
window.onload = function()
{
CKEDITOR.replace( 'texto',
{
customConfig : 'incluir/ckeditor_config.js',
filebrowserUploadUrl : 'incluir/upload.php'
});
};
</script>
</head>
<body>
<?php include('incluir/header.php'); ?>
<div id="contenido">
<h2>Editar servicio </h2>
<?php
include('incluir/config.php');
$cons = mysql_query("SELECT * FROM servicios WHERE idServ= '$idServ' LIMIT 1;", $link) or die('Error MySQL: '.mysql_error($link));
while($row = mysql_fetch_array($cons)){
?>
<form action="editarServicio.php?idServ=<?php echo $row['idServ']; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table width="960" border="0" cellspacing="2" cellpadding="3">
<tr>
<td width="231" valign="top" bgcolor="#EEE">Nombre</td>
<td valign="top" bgcolor="#EEE"><span id="sprytextfield1">
<label>
<input name="nombre" type="text" id="nombre" value="<?php echo $row['nombre']; ?>" />
</label>
<span class="textfieldRequiredMsg">Se necesita un valor.</span></span></td>
</tr>
<tr>
<td valign="top" bgcolor="#EEE">Descripción</td>
<td valign="top" bgcolor="#EEE"><label>
<textarea name="descripcion" id="descripcion" cols="45" rows="5"><?php echo $row['descripcion']; ?></textarea>
</label></td>
</tr>
<tr>
<td valign="top" bgcolor="#EEE">Texto</td>
<td valign="top" bgcolor="#EEE"><label>
<textarea name="texto" id="texto" cols="45" rows="5"><?php echo $row['texto']; ?></textarea>
</label></td>
</tr>
<tr>
<td valign="top" bgcolor="#EEE">Foto o Imagen (780x250)<?php if($row['foto'] != ''){ ?><br /><img src="foto.php?idServ=<?php echo $row['idServ']; ?>" width="200" height="65" /><?php } ?></td>
<td valign="top" bgcolor="#EEE"><label>
<input type="file" name="imagen" id="imagen" />
</label></td>
</tr>
<tr>
<td valign="top" bgcolor="#EEE">Imagen miniatura (370x150)<?php if($row['thumb'] != ''){ ?><br /><img src="thumb.php?idServ=<?php echo $row['idServ']; ?>" width="150" height="60" /><?php } ?></td>
<td valign="top" bgcolor="#EEE"><label>
<input type="file" name="thumb" id="thumb" />
</label></td>
</tr>
<tr>
<td colspan="2" valign="top" bgcolor="#EEE"><label>
<input type="submit" name="guardar" id="guardar" value="Guardar" />
</label></td>
</tr>
</table>
</form>
<?php
}
?>
</div>
<?php include('incluir/pie.php'); ?>
<script type="text/javascript">
<!--
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1");
//-->
</script>
</body>
</html>
Muchas gracias. Saludos!