Comunidad de diseño web y desarrollo en internet online

Problema en página de modificación de registro

Citar            
MensajeEscrito el 10 Abr 2012 10:15 am
Hola a todos. Estoy haciendo un sencillo gestor de contenidos y consigo que se inserten correctamente los registros de la página de inserción: campos y áreas de texto y campo de archivo. Pero en la página de modificación, cuando envío el formulario, si no he cargado de nuevo un archivo, se borra la ruta previemente guardada; y esto es muy incómodo para el usuario.
Tengo la impresión de que se trata simplemente de poner alguna condición a la carga de archivos; pero con mis limitadísimos conocimientos de php no soy capaz de dar con ello.

Dejo la parte del código que hace referencia a la carga de archivos, a ver si algún alma caritativa me puede indicar dónde está el fallo o qué le falta al código.

Un saludo y mil gracias de antemano.


$ruta= "../imagenes_wSUA/" .$_FILES[ 'foto_notic_port' ]['name'];
move_uploaded_file($_FILES[ 'foto_notic_port' ]['tmp_name'], $ruta);
}

$updateSQL = sprintf("UPDATE noticias_portada SET titular_notic_port=%s, texto_notic_port=%s, foto_notic_port=%s, activar_notic_port=%s WHERE id_notic_port=%s",

GetSQLValueString($ruta, "text"),

.......................

<label for="foto_notic_port"></label>

<input name="foto_notic_port" type="file" id="foto_notic_port" maxlength="255">

Por tricarbonato

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Abr 2012 05:41 pm
Has intentado lo siguiente?:

Código PHP :

if (isset($_FILES['foto_notic_port'])){
     //Query donde actualizas unicamente el campo con el archivo
}

//Aqui afuera actualizas todo lo demás

Por Lexas

1207 de clabLevel

7 tutoriales

Genero:Femenino   Desarrollador de GAIA Premio_Secretos

Ilustración y desarrollo de software

firefox
Citar            
MensajeEscrito el 10 Abr 2012 06:33 pm
Llevo un rato intentando entender lo que me dices, y probando con el código, pero, seguro que debido a mi desconocimiento del lenguaje, ni siquiera soy capaz de que dreamweaver no me indique error de sintaxis.
A ver, el problema es que estoy haciendo todo el proyecto delegando en el dreamweaver en lo que se refiere al php, salvo unas cuántas líneas de código para subir y mover archivos y sus rutas; pero yo llego hasta donde llego; y estoy empezando a desesperarme.

Mil gracias por tu explicación, que estoy seguro me hubiera resultado útil si supiera php en condiciones.

Por tricarbonato

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Abr 2012 06:47 pm
No sé como se comporta DW, pero la linea que te ponia era simplemente para verificar si se habían realizado cambios en FILE, si es así, actualiza únicamente ese campo de la tabla de la base de datos. De lo contrario, solo introduce los demás datos.

Otra cosa que puedes hacer es hacer una consulta en la base de datos para rellenar el formulario completo de modificaciones y al aceptar los cambios que se escriba todo. Esto es la forma fácil, pero si necesitas más robustez te recomiendo que de igual forma verifiques cada uno de los campos para escribir únicamente lo que se modificó.

Por Lexas

1207 de clabLevel

7 tutoriales

Genero:Femenino   Desarrollador de GAIA Premio_Secretos

Ilustración y desarrollo de software

firefox
Citar            
MensajeEscrito el 10 Abr 2012 06:53 pm
Entiendo lo que me explicas, el problema es que no sé cómo colocar las piezas para hacer que funcione. Seguiré intentándolo, muchas gracias.

Por tricarbonato

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Abr 2012 06:57 pm
Me explico no sé qué código tendría que poner tras if (isset($_FILES['foto_notic_port'])){ para actualizar sólo en el caso de que se hubieran hecho cambios en el campo de archivo.

Por tricarbonato

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Abr 2012 12:03 am
Dentro del If pon una query como la que pusiste en el post principal, pero solo con el campo de la foto

Código PHP :

if (isset($_FILES['foto_notic_port'])){
     $updateSQL = sprintf("UPDATE noticias_portada SET foto_notic_port=%s WHERE id_notic_port=%s",
GetSQLValueString($ruta, "text"));
}

//Aqui afuera actualizas todo lo demás


Otro posible error que veo en tu código es que solo veo asignado GetSQLValueString($ruta, "text"), es decir, le está poniendo el valor almacenado en $ruta al campo titular_notic_port y todo lo demás lo deja en blanco.

No es recomendable que si quiera uses un IDE si aún no sabes qué está pasando debajo, primero aprende lo básico de PHP, un buen lugar para comenzar es http://www.w3schools.com/php/default.asp , luego para consultar cómo funciona cada función con la que te encuentras puedes consultar http://php.net/docs.php .

Por Lexas

1207 de clabLevel

7 tutoriales

Genero:Femenino   Desarrollador de GAIA Premio_Secretos

Ilustración y desarrollo de software

firefox
Citar            
MensajeEscrito el 11 Abr 2012 12:17 am
Gracias de nuevo por tu interés. El error que comentas, en realidad no es un error en sí; sólo incluí en el post"GetSQLValueString($ruta, "text")" para omitir lo que no hiciera referencia al campo de archivo; en el código completo el resto de campos extraen la información de su sitio correspondiente. Pero es cierto que así lo hice más confuso.

Voy a probar eso que dices, y si me funciona, te deberé un favor muy gordo.

Por tricarbonato

5 de clabLevel



 

opera
Citar            
MensajeEscrito el 11 Abr 2012 12:27 am
Lo siento, no me ha funcionado. Seguiré intentándolo. Cuando lo consiga, pondré aquí la solución, para ver qué te parece.

Por tricarbonato

5 de clabLevel



 

opera
Citar            
MensajeEscrito el 13 Abr 2012 12:54 am
Al final lo he resuelto de esta manera:

if(is_uploaded_file($_FILES[ 'foto_notic_port']['tmp_name']))
{ move_uploaded_file($_FILES[ 'foto_notic_port']['tmp_name'], $ruta);


$updateSQL = sprintf("UPDATE noticias_portada SET titular_notic_port=%s, texto_notic_port=%s, foto_notic_port=%s, activar_notic_port=%s WHERE id_notic_port=%s",
GetSQLValueString($_POST['titular_notic_port'], "text"),
GetSQLValueString($_POST['texto_notic_port'], "text"),
GetSQLValueString($ruta, "text"),
GetSQLValueString(isset($_POST['activar_notic_port']) ? "true" : "", "defined","'Y'","'N'"),
GetSQLValueString($_POST['id_notic_port'], "int"));
}

else{

$updateSQL = sprintf("UPDATE noticias_portada SET titular_notic_port=%s, texto_notic_port=%s, activar_notic_port=%s WHERE id_notic_port=%s",
GetSQLValueString($_POST['titular_notic_port'], "text"),
GetSQLValueString($_POST['texto_notic_port'], "text"),


GetSQLValueString(isset($_POST['activar_notic_port']) ? "true" : "", "defined","'Y'","'N'"),
GetSQLValueString($_POST['id_notic_port'], "int"));


}

Por tricarbonato

5 de clabLevel



 

opera
Citar            
MensajeEscrito el 13 Abr 2012 12:59 am
Le he dado al intro sin querer, y se ha publicado el post antes de tiempo. Creo que se entiende bien lo que he hecho. Funciona perfectamente, estoy muy contento.

Muchas gracias, Lexar.

Por tricarbonato

5 de clabLevel



 

opera
Citar            
MensajeEscrito el 13 Abr 2012 01:00 am
Perdón, Lexas; es que es muy tarde y estoy un poco atontado ya.

Por tricarbonato

5 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.