Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No puedo editar una base de datos

Estas en el tema de No puedo editar una base de datos en el foro de PHP en Foros del Web. Hola amigos del Foro, necesitaría si alguien me podría ayudar, soy nuevo en esto de programación, le comento tengo una base de datos de noticias, ...
  #1 (permalink)  
Antiguo 20/03/2014, 21:25
 
Fecha de Ingreso: junio-2012
Mensajes: 30
Antigüedad: 11 años, 10 meses
Puntos: 0
No puedo editar una base de datos

Hola amigos del Foro, necesitaría si alguien me podría ayudar, soy nuevo en esto de programación, le comento tengo una base de datos de noticias, no tengo problema a la hora de subir o eliminar un registro de la base de datos, pero a la hora de querer modificar o editar un dato no me modifica en la base de dato, le paso los códigos de como lo tengo escrito.

La base de datos es:

Código MySQL:
Ver original
  1. TABLE `noticia` (
  2.   `titulo` varchar(255) NOT NULL default '',
  3.   `subtitulo` text NOT NULL,
  4.   `detalle` text NOT NULL,
  5.   `fuente` varchar(255) NOT NULL default '',
  6.   `categoria_id` int(1) NOT NULL,
  7.   `subcategoria_id` int(1) NOT NULL,
  8.   `foto` blob NOT NULL,
  9.   `thumb` blob NOT NULL,
  10.   `mime` varchar(40) NOT NULL default '',
  11.   PRIMARY KEY  (`id`)
  12. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;

Este es el archivo que me cargar los datos para editar:
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.
Y este es el archivo que sube las modificaciones:


Código SQL:
Ver original
  1. SELECT * FROM noticia WHERE id = $id;
Código MySQL:
Ver original
  1. UPDATE `ecosargentinos`.`noticia`
  2. SET `titulo` = '$titulo', `subtitulo` = '$subtitulo',
  3. `detalle` = '$detalle', `foto` = '$foto', `categoria_id` = '$categoria_id',
  4. `subcategoria_id` = '$subcategoria_id'


Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.
Y es en este archivo el que no modifica nada y no muestra ningún error, por favor necesito de la ayuda y me guíen donde puede estar el error. Muchas gracias.

Última edición por gnzsoloyo; 21/03/2014 a las 05:00
  #2 (permalink)  
Antiguo 21/03/2014, 01:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: No puedo editar una base de datos

Código MySQL:
Ver original
  1. UPDATE `ecosargentinos`.`noticia`
  2.    SET `titulo` = '$titulo',
  3.           `subtitulo` = '$subtitulo',
  4.           `detalle` = '$detalle',
  5.           `foto` = '$foto',
  6.           `categoria_id` = '$categoria_id',
  7.           `subcategoria_id` = '$subcategoria_id'

esa query modifica TODOS los registros de `ecosargentinos`.`noticia` le faltaria seleccionar que notícia que vas a editar


Código MySQL:
Ver original
  1. UPDATE `ecosargentinos`.`noticia`
  2.    SET `titulo` = '$titulo',
  3.           `subtitulo` = '$subtitulo',
  4.           `detalle` = '$detalle',
  5.           `foto` = '$foto',
  6.           `categoria_id` = '$categoria_id',
  7.           `subcategoria_id` = '$subcategoria_id'
  8.            where `id`=$id

En el codigo no queda claro donde das valores a las variables que sirven para actualizar los campos, ni para que seleccionas priemero la noticia

http://dev.mysql.com/doc/refman/5.0/es/update.html

Código MySQL:
Ver original
  1. //??????Por que haces esto
  2. SELECT * FROM noticia WHERE id = $id
  3. ////??????
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 21/03/2014 a las 06:40
  #3 (permalink)  
Antiguo 21/03/2014, 18:50
 
Fecha de Ingreso: junio-2012
Mensajes: 30
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: No puedo editar una base de datos

Gracias quimfv por tu comentario. Le hice un arreglo al query pero me sigue sin editar y no sube las modificaciones, pero me da el mensaje del alert "Los datos de la noticia fueron modificados correctamente" pero cuando reviso no se modifico nada le paso el código, por favor ayuda.
Código PHP:
//print_r($_POST);
require_once("../conexion/conexion.php");;
$sql="update noticia
set
categoria_id='"
.$_POST["categoria_id"]."',
subcategoria_id='"
.$_POST["subcategoria_id"]."',
titulo='"
.$_POST["titulo"]."',
subtitulo='"
.$_POST["subtitulo"]."',
detalle='"
.$_POST["detalle"]."',
foto'"
.$_POST["foto"]."',
fuente'"
.$_POST["fuente"]."'
where
id="
.$_POST["id"]."";
//echo $sql;
$res=mysql_query($sql,$con);
echo 
"<script type=''>
    alert('Los datos de la noticia fueron modificados correctamente');
    window.location='administrador-noticias.php';
</script>"

Desde ya muchas gracias

Última edición por gnzsoloyo; 21/03/2014 a las 19:48
  #4 (permalink)  
Antiguo 21/03/2014, 19:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo editar una base de datos

OFF TOPIC en MySQL.

El problema no es de sintaxis de SQL, sino de datos.
Muevo a PHP para que te asistan en el problema.

Como nota: No estás verificando en ningún momento si la consulta se ejecutó realmente. Tal y como está ese código, el mensaje "Los datos de la noticia fueron modificados correctamente" se mostrará aunque la ejecución hubiese devuelto un error.
Al menos deberías verificar el valor de $res, y no lo estás haciendo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/03/2014, 20:06
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: No puedo editar una base de datos

`categoria_id` = '$categoria_id',
`subcategoria_id` = '$subcategoria_id'


categoria_id y subcategoria_id en la base de datos son enteros estas pasando string no enteros.
  #6 (permalink)  
Antiguo 21/03/2014, 20:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo editar una base de datos

No es muy relevante. MySQL realiza una conversión implícita en ese caso.
Puede afectar la performance en inserts masivos, pero no genera errores del tipo planteado.

Pero veo este error:
Código PHP:
Ver original
  1. foto'".$_POST["foto"]."',
  2. fuente'".$_POST["fuente"]."'
donde debiera ser:
Código PHP:
Ver original
  1. foto = '".$_POST["foto"]."',
  2. fuente = '".$_POST["fuente"]."'
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 21/03/2014, 20:13
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: No puedo editar una base de datos

un echo a $sql ahi se sabe de inmediato que datos son los que estas pasando
y ejecutar en la base directamente.
  #8 (permalink)  
Antiguo 21/03/2014, 20:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo editar una base de datos

Esa es una excelente idea. Y además meterle esto:
Código PHP:
Ver original
  1. $res=mysql_query($sql,$con) or die("Error: ".mysql_error());

Así al menos sabría qué responde MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 21/03/2014, 20:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo editar una base de datos

Creo que el código que debería probar sería:
Código PHP:
Ver original
  1. //print_r($_POST);
  2. require_once("../conexion/conexion.php");
  3. $sql="update noticia
  4. set categoria_id='".$_POST["categoria_id"]."',
  5. subcategoria_id='".$_POST["subcategoria_id"]."',
  6. titulo='".$_POST["titulo"]."',
  7. subtitulo='".$_POST["subtitulo"]."',
  8. detalle='".$_POST["detalle"]."',
  9. foto= '".$_POST["foto"]."',
  10. fuente= '".$_POST["fuente"]."'
  11. where id=".$_POST["id"];
  12.  
  13. echo $sql;
  14.  
  15. $res=mysql_query($sql,$con) or die("Error: ".mysql_error());
  16.  
  17. if($res)
  18.     {echo "<script type=''>
  19.    alert('Los datos de la noticia fueron modificados correctamente');
  20.    window.location='administrador-noticias.php';
  21.    </script>";  
  22. }
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 21/03/2014, 20:17
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: No puedo editar una base de datos

POrque censuran el código PHP, si estamos en programacion PHP??? Moderador??
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #11 (permalink)  
Antiguo 21/03/2014, 20:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo editar una base de datos

Cita:
Iniciado por loncho_rojas Ver Mensaje
POrque censuran el código PHP, si estamos en programacion PHP??? Moderador??
Porque, si lees con cuidado, acabo de mover el post DESDE el foro de MYSQL al foro de PHP...
Y fue en el foro de MySQL donde se eliminó ese código...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 21/03/2014, 20:20
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: No puedo editar una base de datos

y si no quiere hacer nada de lo que decimos,

que acorte la query

que haga un update a un solo a campo y si funciona agrega el otro y asi etc...
  #13 (permalink)  
Antiguo 21/03/2014, 20:27
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: No puedo editar una base de datos

Asi mismo señor moderador...


- Cualquier código, de cualquier lenguaje, que sea posteado en un hilo, será removido sin previo aviso (Política de uso FDW 1.2).

- En caso de no poder borrar el código sin perder elementos fundamentales del problema planteado por el forista, se moverá el post al foro del lenguaje correspondiente o el más adecuado al caso.

Justamente esa norma hace que el post inicial pierda un poco de "hilo" o sea, yo miro el code y no se cual es el problema, ya que el PHP era lo que le daba sentido a esto... se hubiera pasado directo y una advertencia..

en fin, saludos.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #14 (permalink)  
Antiguo 21/03/2014, 20:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: No puedo editar una base de datos

Para que quede claro, el tema se planteó en el foro de MySQL, y se trató de solucionarlo desde la optica del MySQL. Por ende, todo lo que no fuera SQL se editó y eliminó.
Pero al avanzar con el problema se veía que no había problema realmente de SQL en el asunto, o al menos no parecía haberlos. Por eso decidí moverlo a PHP.
Infortunadamente, todo lo que se elimina al editar un post es irrecuperable. No se puede deshacer, y por eso trato de ser cuidadoso a la hora de eliminar código en el foro que podero (a pesar de las veladas criticas que se infieren en tus palabras).
Es sólo por eso que no puedes ver el tema tal y como se planteó de origen.

¿Resulta más claro ahora?

Te insisto con una cosa: Trato de ser cuidadoso para resolver editar los posts. No lo hago caprichosamente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 22/03/2014, 21:07
 
Fecha de Ingreso: junio-2012
Mensajes: 30
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: No puedo editar una base de datos

Hola a todos y muchas gracias a todos. He probado el código de gnzsoloyo funcionó solo le hice una modificación en el where id=".$_POST["id"]; por where id=$id"; entonces el código quedo así:

Código PHP:
Ver original
  1. //print_r($_POST);
  2. require_once("../conexion/conexion.php");
  3. $sql="update noticia
  4. set categoria_id='".$_POST["categoria_id"]."',
  5. subcategoria_id='".$_POST["subcategoria_id"]."',
  6. titulo='".$_POST["titulo"]."',
  7. subtitulo='".$_POST["subtitulo"]."',
  8. detalle='".$_POST["detalle"]."',
  9. foto= '".$_POST["foto"]."',
  10. fuente= '".$_POST["fuente"]."'
  11. where id=$id";
  12.  
  13. echo $sql;
  14.  
  15. $res=mysql_query($sql,$con) or die("Error: ".mysql_error());
  16.  
  17. if($res)
  18.     {echo "<script type=''>
  19.    alert('Los datos de la noticia fueron modificados correctamente');
  20.    window.location='administrador-noticias.php';
  21.    </script>";  
  22. }

Ahora bien, se modifica todo menos la foto no se carga, es como si borraría la que estaba cuando la quiero cambiar por otra, no se si tiene algo que ver por las fotos en base de datos son del "tipo blob", le hago mostrar la base de datos:

Código MySQL:
Ver original
  1. TABLE `noticia` (
  2.   `titulo` varchar(255) NOT NULL default '',
  3.   `subtitulo` text NOT NULL,
  4.   `detalle` text NOT NULL,
  5.   `fuente` varchar(255) NOT NULL default '',
  6.   `categoria_id` int(1) NOT NULL,
  7.   `subcategoria_id` int(1) NOT NULL,
  8.   `foto` blob NOT NULL,
  9.   `thumb` blob NOT NULL,
  10.   `mime` varchar(40) NOT NULL default '',
  11.   PRIMARY KEY  (`id`)
  12. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;

He probado dejando que se modifique todo menos la foto y se modifica bien y no se borra la foto, se muestra la foto con que se subió la noticia, no se cual sea el problema, como dije anteriormente gracias a todos por ayudarme.
  #16 (permalink)  
Antiguo 22/03/2014, 21:51
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: No puedo editar una base de datos

si vas a levantar imagenes en la etiqueta FORM de html debes tener enctype="multipart/form-data" y lo subes con el campo tipo FILE

Hay funciones PHP que mueven los archivos a carpetas y solo deberías guardar las URL de las imagenes... ya sea para hacer insert o update

http://norfipc.com/inf/como-subir-fo...rvidor-web.php
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #17 (permalink)  
Antiguo 01/04/2014, 13:16
 
Fecha de Ingreso: junio-2012
Mensajes: 30
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: No puedo editar una base de datos

Muchas gracias a todos por su ayuda, y por sobre todas las cosas por ayudarme a aprender. Gracias

Etiquetas: mysql, null, registro, select, sql
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 16:32.