Foros del Web » Programando para Internet » PHP »

errores con una actualizacion

Estas en el tema de errores con una actualizacion en el foro de PHP en Foros del Web. Hola alguien me puede decir en que fallo con este script de actualizacion de los datos de un usuario: Código PHP: <?php include ( "configuracion.php" ); ...
  #1 (permalink)  
Antiguo 06/04/2009, 07:28
 
Fecha de Ingreso: enero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 0
errores con una actualizacion

Hola alguien me puede decir en que fallo con este script de actualizacion de los datos de un usuario:
Código PHP:
<?php
include ("configuracion.php");
$nickantiguo=$_SESSION['nick'];
$query="select * from usuarios where nombre='".$nickantiguo."'";
$resultado=mysql_query ($query);
$row mysql_fetch_array ($resultado);
echo 
$row['nick'];
if (!
$_POST['contrasena'])
{
  if (
$_POST['contrasena']!=$_POST['contrasena2'])
  {
      echo 
'<p class="fallo">Las contraseñas no coinciden</p><p class="fallo">Introducelas de nuevo.</p>';
      
$contrase&#241;a=$_POST['contrasena'];
      
$contrase&#241;a= sha1($contraseña);
  
}
}
//cambiamos el nick
if ($_POST['nick']!=NULL)
        
$row["nick"]=$_POST['nick'];
//cambiamos el nombre
if ($_POST['nombre']!=NULL)
        
$row["nombre"]=$_POST['nombre'];
//cambiamos los apellidos
if ($_POST['apellidos']!=NULL)
        
$row["apellidos"]=$_POST['apellidos'];
//cambiamos la contraseña
if ($_POST['contrasena']!=NULL)
        
$row["contrasena"]=$contrase&#241;a;
//cambiamos la direccion
if ($_POST['direccion']!=NULL)
        
$row["direccion"]=$_POST['direccion'];        
//cambiamos la cuidad
if ($_POST['ciudad']!=NULL)
        
$row["ciudad"]=$_POST['ciudad'];
//cambiamos el email
if ($_POST['email']!=NULL)
        
$row["email"]!=$_POST['email'];
$sql "UPDATE usuarios SET nick = '".$row["nick"]."', nombre = '".$row["nombre"]."', apellidos = '".$row["apellidos"]."',";
$sql .= "contrasena = '".$row["contrasena"]."', direccion = '".$row["direccion"]."', ciudad = '".$row["ciudad"]."',";
$sql .= "email = '".$row["email"]."' WHERE nick = '".$nickantiguo."' LIMIT 1 ";
$ok=mysql_query($sql);
bueno el script continua pero nada mas que para comprobar si actualiza o no. el caso es que lo hace pero con todos los campos del formulario en blanco excepto los que ya hemos cubierto y no le doy encontrado la solucion porque no me parece correcto obligar a un usuario a actualizar todos sus datos si estos no han cambiado
  #2 (permalink)  
Antiguo 06/04/2009, 08:24
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: errores con una actualizacion

Cuando vas a actualizar no cargas los datos actuales del usuario en el formulario?

Por lo que veo, en la sentencia update actualizas todos los campos con $row[variable]. Los únicos que les llenas información, son efectivamente los que los igualas con lo que traes del $_POST.

Si no me equivoco, tu cargas el formulario de actualización en blanco, por lo que si es null, evita el if y la igualación al $_POST. Por defecto, el $row[variable] también será null.

Solución:
Cuando llames al formulario actualización, carga toda la información actual del usuario en los campos del formulario. Así el usuario cambia lo que necesita y no vas a tener problemas al actualizar.

Sin embargo, pregunta en el foro de php, o espera que el moderador mueva el tema. ahí recibirás una mejor solución.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 06/04/2009, 09:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: errores con una actualizacion

Tema trasladado desde MySQL.

http://www.forosdelweb.com/f21/funci...-datos-413499/
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 23:55.