Foros del Web » Programando para Internet » PHP »

UPDATE campo individual desde un formulario

Estas en el tema de UPDATE campo individual desde un formulario en el foro de PHP en Foros del Web. Hola, Quiero editar una serie de campos en forma individual pero no logro hacerlo: De esta manera lo he intentado en vano: Código PHP: //Conecto y selecciono la base de datos ...
  #1 (permalink)  
Antiguo 19/01/2011, 00:48
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 1 mes
Puntos: 21
UPDATE campo individual desde un formulario

Hola,

Quiero editar una serie de campos en forma individual pero no logro hacerlo:

De esta manera lo he intentado en vano:

Código PHP:
//Conecto y selecciono la base de datos

//recibo los dato del formulario
$titulo $_POST['title'];
$descripcion $_POST['description'];
$thumbsnail $_FILES['img_thumb']['name'];
$identidad $_FILES['img_identidad']['name'];

//Compruebo si los campos no estan vacíos y actualizo base de dats y muevo imágenes
if (!empty($titulo) && !empty($descripcion)  && !empty($thumbsnail) && !empty($identidad)) {

mysql_query("UPDATE detalles SET 
        img_identidad='proyectos/identidad/$identidad', 
    img_thumb='proyectos/thumb/$thumbsnail', 
    description='$descripcion', 
    title='$titulo',
    id='$ID' WHERE id = '$ID'"
$link) or die(mysql_error());

$move =  move_uploaded_file($_FILES['img_thumb']['tmp_name'], "proyectos/thumb/" $_FILES['img_thumb']['name']);

$move =  move_uploaded_file($_FILES['img_identidad']['tmp_name'], "proyectos/identidad/" $_FILES['img_identidad']['name']);
}

//cierro conexión
// redirecciono al index. 
  #2 (permalink)  
Antiguo 19/01/2011, 00:53
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: UPDATE campo individual desde un formulario

De donde sale la variable $ID?... no veo que le estes asignando un valor.

Aparte y por cuestiones de seguridad, recuerda siempre escapar los datos antes de incluirlos en una consulta:

$dato = mysql_real_escape_string($_POST['dato']);

Aun cuando solo seas tu quien vaya a capturar informacion, evitarias errores si en descripcion incluyes alguna comilla u otro caracter especial.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 19/01/2011, 01:04
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 1 mes
Puntos: 21
Respuesta: UPDATE campo individual desde un formulario

Si, la variable id esta definida, pero no la puse.

aca esta:
Código PHP:
$ID $_POST['id']; 

Gracias por el dato de seguridad, lo tomaré en cuenta para cuando avance un poco más.
  #4 (permalink)  
Antiguo 19/01/2011, 01:10
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: UPDATE campo individual desde un formulario

Y entonces el problema es:

1- MySQL devuelve un mensaje de error?
2- No hace nada... simplemente redirecciona al index?

1- Que error?
2- Intenta asignando la consulta a una variable:
$query = "UPDATE bla bla bla WHERE bla bla bla";

Antes de ejecutarla haces un die($query); solo para ver si la estas armando correctamente, verifica sobre todo la parte del WHERE

Si todo esta como debe (dudolo), entonces elimina la linea del die y prueba nuevamente.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 19/01/2011, 01:17
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 1 mes
Puntos: 21
Respuesta: UPDATE campo individual desde un formulario

1. No devuelve error.
2. Claro simplemente redirecciona.

Con respecto al WHERE, tengo que especificar una columna y un valor y actualizar con los nuevos. Pero esto me limita para lo que yo quiero hacer. Igualmente pruebo para ver si funciona con un where a una columna y un valor especifico.

EDITO: tengo definido un WHERE que indica que hay que actualizar segun el id.

Última edición por opzina; 19/01/2011 a las 01:25
  #6 (permalink)  
Antiguo 19/01/2011, 01:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: UPDATE campo individual desde un formulario

Cita:
Iniciado por opzina
Con respecto al WHERE, tengo que especificar una columna y un valor y actualizar con los nuevos. Pero esto me limita para lo que yo quiero hacer. Igualmente pruebo para ver si funciona con un where a una columna y un valor especifico.

EDITO: tengo definido un WHERE que indica que hay que actualizar segun el id.
De hecho siempre debe ser asi para actualizar, precisamente por eso es que te pido que hagas un echo de la consulta... si quieres ponlo aqui para tratar de averiguar que esta pasando.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 19/01/2011, 01:42
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 1 mes
Puntos: 21
Respuesta: UPDATE campo individual desde un formulario

si le saco:
Código PHP:
Ver original
  1. if (!empty($titulo) && !empty($descripcion)  && !empty($thumbsnail) && !empty($identidad)) {

Se actualiza el campo que modifique en el formulario, pero se resetea o borra todo los otros campos. Es como que toma un update Global.


Hice un die($query);

pero no sale ningún error.

Utilicé ini_set ('error_reporting', E_ALL);
y tampoco salen errores
  #8 (permalink)  
Antiguo 19/01/2011, 02:58
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: UPDATE campo individual desde un formulario

Cita:
Iniciado por opzina
Se actualiza el campo que modifique en el formulario, pero se resetea o borra todo los otros campos. Es como que toma un update Global.
Ok, aqui el problema es que no estas siguiendo el procedimiento adecuado... que es:

1- Tomar la ID del registro a modificar... ya lo estas haciendo con $ID = $_POST['id'];
2- Verificar que el registro realmente existe: SELECT * FROM tabla WHERE id = $ID, ver si hay resultados con mysql_num_rows() y, si existe, el correspondiente mysql_fetch_assoc()
3- Asignar los valores del formulario desde la lectura del registro ejemplo: $titulo = $row['titulo'];
4- Ver que es lo que obtienes en $_POST:
Código PHP:
Ver original
  1. // Creas una matriz para la consulta
  2. $query = array();
  3.  
  4. // Para cada campo, revisas si se modifico o si esta vacio:
  5. if($_POST['titulo'] != '' && $_POST['titulo'] != $titulo) {
  6.     $titulo = mysql_real_escape_string($_POST['titulo']);
  7.     $query[] = "titulo = '$titulo'";
  8. }
  9.  
  10. // En el caso de los archivos, es parecido:
  11. if($_FILES['img_thumb']['name'] != '') {
  12.     // Primero mueves el archivo:
  13.     $move = move_uploaded_file(bla bla bla);
  14.     if(!$move) {
  15.         // Hubo un error... que vas a hacer aqui?, no se debe modificar el registro
  16.         // Finalizas con die, exit, regresas al formulario o lo que prefieras
  17.     }
  18.     $query[] = "img_thumb = 'ruta/{$_FILES['img_thumb']['name']}'";
  19. }
  20.  
  21. // Hubo cambios?
  22. if(count($query) > 0) {
  23.     // Si, hay que actualizar el registro
  24.     $query = "UPDATE tabla SET " . implode(', ', $query) . " WHERE id = $ID";
  25.     mysql_query($query) or die("Error en la consulta:<br />$query<br />" . mysql_error());
  26.     // Rediriges a otra pagina, das un mensaje o lo que quieras... aqui acaba todo
  27. }
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 19/01/2011, 14:05
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 1 mes
Puntos: 21
Respuesta: UPDATE campo individual desde un formulario

entiendo lo que hace el código, pero no se pq al copiar y pegar eclipse me marca tantos errores.

Etiquetas: update, formulario, campos
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 06:31.