Ver Mensaje Individual
  #22 (permalink)  
Antiguo 14/09/2006, 01:58
LadyArwen
 
Fecha de Ingreso: agosto-2006
Mensajes: 91
Antigüedad: 17 años, 8 meses
Puntos: 0
hola a todos de nuevo. creía que había solucionado el problema con la última propuesta de nuestro amigo, pero me he dado cuenta que no y he estado varias semanas así hasta ahora que me he dado cuenta. el tema está en lo siguiente (os lo pongo de nuevo aunque me llaméis pesada). como os dije más arriba, tenía un formulario:
////////////////////////////////////////////////////////////////////////////////////
<FORM ENCTYPE="multipart/form-data" METHOD="POST" ACTION="add.php" name="NuevoPaciente" >
<table>
<tr>
<td>Nombre y Apellidos: </td>
<td><input type="text" name="nombre"></td>
</tr>
<tr>
<td>Datos: </td>
<td><input type="text" name="datos"></td>
</tr>
<tr>
<td>Imagen: (Sólo *.jpg)</td>
<td><input type="file" name="archivo" >
</tr>
</table>
/////////////////////////////////////////////////////////////////////////////////////
estos datos iban al archivo add.php, que era este:

////////////////////////////////////////////////////////////////////////////////////
<?php
$cnx = mysql_connect("servidor", "user", "pass");
mysql_select_db("pacientes", $cnx);
if($_FILES['archivo']['name'])
{
$local = $_FILES['archivo']['name'];
$remoto = $_FILES['archivo']['tmp_name'];
$extension = explode(".", $local);
$n = count($extension)-1;
$miext="jpg";
if(!strcasecmp($extension[$n], $miext))
{
// La variable para la BD
$ruta = "imagenes/" . $local;
if(is_uploaded_file($remoto))
{
if(move_uploaded_file($remoto, $ruta))
header("Location: exito.php");
else
header("Location: error.php");
}
else
header("Location: error.php");
mysql_query("INSERT INTO pacientes(nombre,datos,imagen) VALUES('$nombre,'$datos,'$ruta')");
}
else
header("Location: error.php");
}
else
header("Location: exito.php");
?>
/////////////////////////////////////////////////////////////////////////////////////

en la base de datos, el campo 'imagen' es un campo con las siguientes características:
VARCHAR(255) null .

bien. el amigo eits (gracias por tu ayuda, de verdad) propuso esta solución: hacer una consulta de tal forma que si el campo estaba vacío, metiera en dicho campo, el texto 'no imagen' en la base de datos. de tal forma que quedaría algo así:
/////////////////////////////////////////////////////////////////////////////////////

$cnx = mysql_connect("servidor", "user", "pass");
mysql_select_db("pacientes", $cnx);
if(empty($_post['imagen']))
{
$ruta="no imagen" ;
}
else
{
$error=false;
if($_FILES['archivo']['name'])
{
$local = $_FILES['archivo']['name'];
$remoto = $_FILES['archivo']['tmp_name'];
$extension = explode(".", $local);
$n = count($extension)-1;
$miext="jpg";
if(!strcasecmp($extension[$n], $miext))
{
// La variable para la BD
$ruta = "imagenes/" . $local;
if(is_uploaded_file($remoto))
{
if(!move_uploaded_file($remoto, $ruta))
{
$error=true;
}
}
else
{
$error=true;
}
}
else
{
$error=true;
}
}
}
if(!$error)//si no ocurrio error
{
//se inserta en la base de datos
//ruta tendra "no imagen" si la casilla esta vacia de lo contrario tendra la ruta de la imagen


mysql_query("INSERT INTO pacientes(nombre,datos,imagen) VALUES('$nombre,'$datos,'$ruta')");
header("Location: exito.php");
}
else
{
header("Location: error.php");
}
/////////////////////////////////////////////////////////////////////////////////////
hasta ahora creía que funcionaba, pues yo, al no meter imagen alguna en el campo correspondiente del formulario, en la base de datos se grababa el texto 'no imagen', que era lo que yo quería. pero he comprobado que si intento subir una imagen, la aplicación me dice que la sección se ha actualizado correctamente. sin embargo, en el campo 'imagen' me sigue metiendo el texto 'no imagen' y por lo tanto, la imagen no me la sube al directorio del servidor 'imagenes'.
es decir, antes mi aplicación lo que hacía era:
* si metía en el formulario una imagen, ésta se subía al directorio 'imagenes' que estaba en mi servidor. a su vez, en la base de datos, en el campo 'imagen' aparecía la ruta de la imagen, es decir, 'imagenes/nombre.jpg'.
* además, la aplicación estaba configurada para que las imágenes a subir sólo pudieran subirse en formato 'jpg', de tal forma que si intentaba subir una imagen en formato 'gif' por ejemplo (o en cualquier otro) me mandaba a error.php.
* por último, el problema que me encontraba entonces era que si en el formulario el campo imagen lo dejaba vacío, no me grababa los datos en la base de datos (ninguno: ni nombre, ni...) por eso pedía una solución para cuando no metiera ninguna imagen, internamente en la base de datos, en el campo 'imagen', se almacenara el dato 'no imagen'.

bien. la solución que me dio eits parecía funcionar pues cuando no insertaba en el campo imagen nada, en la base de datos aparecía el texto 'no imagen'. pero si trataba de insertar una imagen, seguía apareciendo el texto 'no imagen', es decir, no me la subía al servidor. además, si trataba de subir una imagen en formato 'gif' por ejemplo, seguía permitiéndolo, es decir, no me enviaba a la página error.php. y además no me subía la imagen.
por último, otra solución era que en el campo 'imagen' de la base de datos, pusiera por defecto 'no imagen'. el problema que tengo aquí es que si lo hago así, y en el formulario no pongo nada en el apartado imagen, el resto de datos no se me graban en la base de datos. por favor, ayúdenme. ahora sí que estoy desesperada. un saludo a todos. sé que no me defraudarán.