Foros del Web » Programando para Internet » PHP »

Sentencia UPDATE no funciona

Estas en el tema de Sentencia UPDATE no funciona en el foro de PHP en Foros del Web. Hola a todos, necesito solucionar un problema, no soy experto en PHP pero tengo algunos conocimientos. Tengo una base de datos, donde guardo datos de ...
  #1 (permalink)  
Antiguo 03/09/2014, 19:57
 
Fecha de Ingreso: diciembre-2012
Mensajes: 23
Antigüedad: 11 años, 4 meses
Puntos: 0
Exclamación Sentencia UPDATE no funciona

Hola a todos, necesito solucionar un problema, no soy experto en PHP pero tengo algunos conocimientos.

Tengo una base de datos, donde guardo datos de " Alumnos" (nombre , rut , curso , etc .. ) y todos tienen una id_alumno (obvio).

Ocurre que hice una aplicacion si se puede llamar asi, para subir fotos que corresponderan al alumno y la idea es actualizar los campos de la DB. osea guardar la ruta en la DB en cada id_alumno que obtuve por GET, ya que antes de eso hice un buscador que me busca al alumno y luego me envia la "id " por url.

Esto es mi codigo

Código PHP:
<?php 
$id 
$_GET['idModifica']; 

?>

<?php 
if(isset($_POST['btnGuardar'])){
    
    
$archivo $_FILES['flsImagen']['tmp_name'];
    
$destino "images/"$_FILES['flsImagen']['name'];
    
move_uploaded_file($archivo,$destino);
    
mysql_connect("localhost","root","");
    
mysql_select_db("alumnos");
    
mysql_query("UPDATE ficha SET nombre_imagen =  '$_POST[txtNombre]' WHERE id_alumno = $id");
}
?>
Mi problema es que al ponerle = $id en la sentencia WHERE , no me actualiza los valores en la DB, pero si por ejm le coloco manualmente el id_alumno, quedando por ejm WHERE id_alumno = 41 , si se me actualiza.

Ojala me puedan ayudar y hayan entendido, de antemano muchas gracias
  #2 (permalink)  
Antiguo 03/09/2014, 20:50
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Sentencia UPDATE no funciona

deberias poner siempre el error:

Código PHP:
Ver original
  1. mysql_query("UPDATE ficha SET nombre_imagen =  '".$_POST["txtNombre"]."' WHERE id_alumno = '{$id}'") or die(mysql_error());
  #3 (permalink)  
Antiguo 03/09/2014, 21:54
 
Fecha de Ingreso: diciembre-2012
Mensajes: 23
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Sentencia UPDATE no funciona

hola gracias por responder, Agregue eso que dijiste. y me salio esto

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Creo que ocupe bien la sintaxis o me habre equivocado
  #4 (permalink)  
Antiguo 03/09/2014, 22:26
 
Fecha de Ingreso: diciembre-2012
Mensajes: 23
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Sentencia UPDATE no funciona

Cita:
Iniciado por Patriarka Ver Mensaje
deberias poner siempre el error:

Código PHP:
Ver original
  1. mysql_query("UPDATE ficha SET nombre_imagen =  '".$_POST["txtNombre"]."' WHERE id_alumno = '{$id}'") or die(mysql_error());
Mira logre solucionar el error que me tiraba , modifcando esta linea.

Código PHP:
$id intval($_GET['idModifica']); 
Agregandole intval

Ya no me sale ese error , ademas lei por ahi que habia que agregar comillas simples al campo del WHERE

Código PHP:
 WHERE 'id_alumno' $id
Luego de esos cambios se me actualizo , pero se cambia en todos los campos nombre_imagen , como si ignorara la condicion WHERE , si ignorara la $id

Que podria ser :(
  #5 (permalink)  
Antiguo 03/09/2014, 23:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sentencia UPDATE no funciona

Probablemente no respete la condición porque esas comillas simples denotan que lo que hay entre ellas es una cadena de texto en lugar de un campo de la tabla. Quítalas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 04/09/2014, 07:50
 
Fecha de Ingreso: diciembre-2012
Mensajes: 23
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Sentencia UPDATE no funciona

Le quite las comillas como me has diicho, pero no me cambia el dato en la DB y tampoco me tira error de sql , no hace nada. Pero si en vez de $id, le coloco el numero manual del id_alumno que quiero modificar, si me lo cambia.

Código PHP:
<?php 
$id 
intval($_GET['idModifica']);
echo 
$id;
?>
le hice un echo para ver si estaba bien guardada la id_alumno y todo bien.
  #7 (permalink)  
Antiguo 04/09/2014, 08:12
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: Sentencia UPDATE no funciona

Lo primero que yo te día que hagas es validar si la query queda bien armada. Para eso nada mejor que ponerla en una variable que puedas mostrar antes de ejecutarla.
Código PHP:
Ver original
  1. <?php
  2. $id = $_GET['idModifica'];
  3. if(isset($_POST['btnGuardar'])){
  4.    
  5.     $archivo = $_FILES['flsImagen']['tmp_name'];
  6.     $destino = "images/". $_FILES['flsImagen']['name'];
  7.     move_uploaded_file($archivo,$destino);
  8.     mysql_connect("localhost","root","");
  9.     mysql_select_db("alumnos");
  10.     $sql = "UPDATE ficha SET nombre_imagen =  '$_POST[txtNombre]' WHERE id_alumno = $id";
  11.     // Verificamos en pantalla lo que contiene:
  12.     echo $sql;
  13.     // Recién entonces ejecutas, verificando que no falle en base:
  14.     mysql_query($sql) or die("Error al ejecutar la query: ".mysql_error());
  15. }
  16. ?>

Si está todo OK, si por ejemplo el $id contuviese "45", la query debería quedar así:
Código MySQL:
Ver original
  1. UPDATE ficha SET nombre_imagen =  'aca va el nombre indicado' WHERE id_alumno = 45

Normalmente sólo podría no midifcar nada si el ID que bsucas es nulo, vacío o no existen en la tabla. Caso contrario no hay razones para el problema
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 04/09/2014, 08:28
 
Fecha de Ingreso: diciembre-2012
Mensajes: 23
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Sentencia UPDATE no funciona

Hola gracias por responder, mira hice lo que me dijiste y me sale esto

Código PHP:
UPDATE ficha SET nombre_imagen 'mensajeprueba1' WHERE id_alumno 
Como que toma el valor $id como Nulo

y al usar la $id manualmente me sale bien y tira este mensaje.

Código PHP:
UPDATE ficha SET nombre_imagen 'mensajeprueba2' WHERE id_alumno 41 
Al usarla manualmente me refiero a que hago esto por si no se entiende

Código PHP:
$sql =("UPDATE ficha SET nombre_imagen =  '$nombre' WHERE id_alumno = 41"); 
  #9 (permalink)  
Antiguo 04/09/2014, 08:44
 
Fecha de Ingreso: diciembre-2012
Mensajes: 23
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Sentencia UPDATE no funciona

mira se me habia olvidado colocar el
Código PHP:
$id $_GET['idModifica']; 
dentro del codigo y antes del if(isset)

Ahora lo ejecuto y me sale este mensaje

UPDATE ficha SET nombre_imagen = 'nombredeprueba' WHERE id_alumno = Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
  #10 (permalink)  
Antiguo 04/09/2014, 09:08
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sentencia UPDATE no funciona

Me he dado cuenta de que recibes el dato de 'idModifica' a través del método GET pero solo ejecutas la actualización en la BD si recibes el dato de 'btnGuardar' que llega a través del método POST. Eso no es posible, o recibes el/los dato/s por un método u otro, no por ambos a la vez.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 04/09/2014, 09:27
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: Sentencia UPDATE no funciona

Exactamente ese es el problema, como te lo menciona Alexis88. El dato en un caso está llegando nulo, por lo que la query queda incompleta y dispara el error.
Unifica la forma de toma de datos.
__________________
¿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 04/09/2014, 12:20
 
Fecha de Ingreso: diciembre-2012
Mensajes: 23
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Sentencia UPDATE no funciona

hola denuevo , gracias por sus respuestas . Saben que logre hacerlo funcionar de otra manera. Me di cuenta que en el formulario , en el atributo action lo tenia para ir a otra pagina luego de enviar los datos ( form action = "index.php" ) , Pero lo deje sin rediccionamiento (form action ="" ) y ocurre que ahora así funciona y la verdad no entiendo el por que , cual seria la diferencia.

asi que al final el codigo me quedo así tal cual como gnzsoloyo me dijo

Código PHP:
<?php 
$id 
= ($_GET['idModifica']);
if(isset(
$_POST['btnGuardar'])){
    
    
$nombre $_POST['txtNombre'];
    
$archivo $_FILES['flsImagen']['tmp_name'];
    
$destino "images/"$_FILES['flsImagen']['name'];
    
move_uploaded_file($archivo,$destino);
    
mysql_connect("localhost","root","");
    
mysql_select_db("alumnos");
    
$sql ="UPDATE ficha SET nombre_imagen =  '$nombre', imagen = '$destino' WHERE id_alumno = '$id'";
    
    echo 
$sql;
    
    
mysql_query($sql) or die ("Error: ".mysql_error());
}
?>
y asi la etiqueta form

Código HTML:
<form action="" method="post" enctype="multipart/form-data" name="registrarImagen" > 
No se si será la mejor forma de solucionarlo , pero funciona. Gracias denuevo por sus respuestas y ayuda.

Etiquetas: mysql, select, sentencia, update
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 19:09.