Foros del Web » Programando para Internet » PHP »

error actualizando registros

Estas en el tema de error actualizando registros en el foro de PHP en Foros del Web. Hola a todos. Bien, tengo una lista en la cual me muestra todos los registros, los cuales puedo actualizar o eliminar. Para actualizar utilizo el ...
  #1 (permalink)  
Antiguo 03/02/2009, 20:34
 
Fecha de Ingreso: diciembre-2007
Mensajes: 38
Antigüedad: 16 años, 4 meses
Puntos: 0
error actualizando registros

Hola a todos.
Bien, tengo una lista en la cual me muestra todos los registros, los cuales puedo actualizar o eliminar. Para actualizar utilizo el siguiente codigo php:
Código php:
Ver original
  1. <?php require_once('Connections/control_estudios.php'); ?>
  2. <?php
  3. if (!function_exists("GetSQLValueString")) {
  4. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  5. {
  6.   $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  7.  
  8.   $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  9.  
  10.   switch ($theType) {
  11.     case "text":
  12.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  13.       break;    
  14.     case "long":
  15.     case "int":
  16.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  17.       break;
  18.     case "double":
  19.       $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
  20.       break;
  21.     case "date":
  22.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  23.       break;
  24.     case "defined":
  25.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  26.       break;
  27.   }
  28.   return $theValue;
  29. }
  30. }
  31. $editFormAction = $_SERVER['PHP_SELF'];
  32. if (isset($_SERVER['QUERY_STRING'])) {
  33.   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  34. }
  35. $colname_ObtenerUsuario = "text";
  36. if (isset($_GET['contrasena'])) {
  37.   $colname_ObtenerUsuario = $_GET['contrasena'];
  38. }
  39. mysql_select_db($database_control_estudios, $control_estudios);
  40. $query_ObtenerUsuario = sprintf("SELECT * FROM usuario WHERE contrasena = %s", GetSQLValueString($colname_ObtenerUsuario, "text"));
  41. $ObtenerUsuario = mysql_query($query_ObtenerUsuario, $control_estudios) or die(mysql_error());
  42. $row_ObtenerUsuario = mysql_fetch_assoc($ObtenerUsuario);
  43. $totalRows_ObtenerUsuario = mysql_num_rows($ObtenerUsuario);
  44.  
  45. // *** Redirecciona si el nombre de usuario existe
  46. //Array vacio
  47. $error = array();
  48. //validar entrada al formulario
  49. $MM_flag="MM_update";
  50. if (isset($_POST[$MM_flag])) {
  51.   //comprobar nombre
  52.   if (empty($_POST['apellido_usuario'])||empty($_POST['nombre_usuario'])||empty($_POST['ci_usuario'])||empty($_POST['contrasena'])||empty($_POST['direccion_usuario'])||empty($_POST['telefono_usuario'])){$error['datos']='Por favor, escribe los datos que aprecen con un asterisco. Son obligatorios';
  53.   }
  54.   //configurar un indicador que asume que la contraseña esta correcta
  55.   $contbien=true;
  56.   //Eliminar espacios en blanco al principio y al final
  57.   $_POST['contresena']=trim($_POST['contrasena']);
  58.   //si el campo de contraseña esta vacio se utiliza la contraseña que esta en la base de datos
  59.   if (empty($_POST['contrasena'])) {
  60.   $_POST['contrasena']=$row_ObtenerUsuario['contrasena'];
  61.   }
  62.   //en otro caso, realizar comprobacion normal
  63.   else{  
  64.   //Si tiene menos de 6 caracteres, creamos una alerta y configuramos el indicador como false
  65.   if (strlen($_POST['contrasena'])<6){
  66.   $error['contrasena_tam']='La contraseña debe tener por lo mìnimo 6 caracteres';
  67.   $contbien=false;
  68.   }
  69.   //Si la contraseña esta bien la encriptamos
  70.   if ($contbien){
  71.   $_POST['contrasena']=sha1($_POST['contrasena']);
  72.   }
  73.   }
  74.   //comprobar nombre de usuario
  75.   $_POST['utiliza_nombre']=trim($_POST['utiliza_nombre']);
  76.   $loginUsername = $_POST['utiliza_nombre'];
  77.   $loginUsername = $_POST['utiliza_nombre'];
  78.   if (strlen($_POST['utiliza_nombre'])<6){
  79.   $error['utiliza_nombre_tam']='El nombre de usuario debe tener por lo mìnimo 6 caracteres';
  80.    }
  81.   $LoginRS__query = sprintf("SELECT utiliza_nombre FROM usuario WHERE utiliza_nombre=%s AND contrasena !=" .$_POST['contrasena'], GetSQLValueString($loginUsername, "text"));
  82.   mysql_select_db($database_control_estudios, $control_estudios);
  83.   $LoginRS=mysql_query($LoginRS__query, $control_estudios) or die(mysql_error());
  84.   $loginFoundUser = mysql_num_rows($LoginRS);
  85.  
  86.   //if there is a row in the database, the username was found - can not add the requested username
  87.   if($loginFoundUser){
  88.    $error['utiliza_nombre']="$loginUsername ya està en uso. Por favor, elige un nombre de usuario diferente.";
  89.   }
  90.   }
  91. if (!$error){
  92. if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  93.   $updateSQL = sprintf("UPDATE usuario SET ci_usuario=%s, nombre_usuario=%s, apellido_usuario=%s, direccion_usuario=%s, telefono_usuario=%s, cargo_usuario=%s, foto_usuario=%s, utiliza_nombre=%s WHERE contrasena=%s",
  94.                        GetSQLValueString($_POST['ci_usuario'], "text"),
  95.                        GetSQLValueString($_POST['nombre_usuario'], "text"),
  96.                        GetSQLValueString($_POST['apellido_usuario'], "text"),
  97.                        GetSQLValueString($_POST['direccion_usuario'], "text"),
  98.                        GetSQLValueString($_POST['telefono_usuario'], "int"),
  99.                        GetSQLValueString($_POST['cargo_usuario'], "text"),
  100.                        GetSQLValueString($_POST['foto_usuario'], "text"),
  101.                        GetSQLValueString($_POST['utiliza_nombre'], "text"),
  102.                        GetSQLValueString($_POST['contrasena'], "text"));
  103.  
  104.   mysql_select_db($database_control_estudios, $control_estudios);
  105.   $Result1 = mysql_query($updateSQL, $control_estudios) or die(mysql_error());
  106.  
  107.   $updateGoTo = "lista_usuarios.php";
  108.   if (isset($_SERVER['QUERY_STRING'])) {
  109.     $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
  110.     $updateGoTo .= $_SERVER['QUERY_STRING'];
  111.   }
  112.   header(sprintf("Location: %s", $updateGoTo));
  113. }
  114. }
  115. ?>
Mi Base de datos es: control_estudios en mysql
Mi tabla:usuario
y la clave primaria:contrasena
El problema esta, cuando intento actualizar mi registro y me pasa a otra pagina con lo siguiente:
Unknown column '2485a8b02e2686701a8a0f501eb51a274e9aa335' in 'where clause'
y no se a que se deba......por favor............ayudaaaaaaaaaaaa:' (

Última edición por GatorV; 04/02/2009 a las 09:43
  #2 (permalink)  
Antiguo 04/02/2009, 02:53
Avatar de jfl_freak  
Fecha de Ingreso: enero-2009
Ubicación: Guatemala
Mensajes: 96
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: error actualizando registros

Bueno antes que todo deberias de poner tu codigo con las etiquetas, asi es mas facil la lectura
Estaba viendo tu codigo y no se, pero creo q talvez aca esta el error:

Código PHP:
$LoginRS__query sprintf("SELECT utiliza_nombre FROM usuario WHERE utiliza_nombre=%s AND contrasena !=" .$_POST['contrasena'], GetSQLValueString($loginUsername"text")); 
Hace falta el cierre de comilla en contrasena !=" .$_POST['contrasena']"

Espero sea ese el problema

Saludos
  #3 (permalink)  
Antiguo 04/02/2009, 07:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 38
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: error actualizando registros

Hola,
la proxima colocare el codigo con las etiquetas, gracias por la observacion, ademas, gracias por responder pero ya lo intente y ese no es el problema puesto que no tengo una comilla de apertura para hacer una de cierre. La que tengo el en ("Select y se cierra en contrasena !=" Alguna otra idea por favor, por favor. Ayuda, ayuda, ayuda, ayuda
  #4 (permalink)  
Antiguo 04/02/2009, 09:42
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: error actualizando registros

De hecho si necesitas las comillas ya que si no el parser de la consulta SQL va a ver algo asi:
Código sql:
Ver original
  1. SELECT utiliza_nombre FROM usuario WHERE utiliza_nombre='test' AND contrasena != 2485a8b02e2686701a8a0f501eb51a274e9aa335

Como contrasena es un campo de texto necesitas ponerlo entre comillas simples (tal como esta utiliza_nombre.

Saludos
  #5 (permalink)  
Antiguo 04/02/2009, 11:16
 
Fecha de Ingreso: diciembre-2007
Mensajes: 38
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: error actualizando registros

gracias por responder y disculpa pero donde es exactamente que tengo que poner las comillas. Quedaria algo asi?:
PHP]$LoginRS__query = sprintf("SELECT utiliza_nombre FROM usuario WHERE utiliza_nombre=%s AND 'contrasena' !=" .$_POST['contrasena'],[[/PHP]
  #6 (permalink)  
Antiguo 04/02/2009, 11:43
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: error actualizando registros

No, las comillas van en el valor de la columna en la que comparas en el WHERE no en el nombre de la columna:
Código php:
Ver original
  1. $LoginRS__query = sprintf("SELECT utiliza_nombre FROM usuario WHERE utiliza_nombre=%s AND contrasena!='" .$_POST['contrasena'] . "'",

Saludos
  #7 (permalink)  
Antiguo 04/02/2009, 16:32
 
Fecha de Ingreso: diciembre-2007
Mensajes: 38
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: error actualizando registros

Muy bien, gracias por tu ayuda
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 21:47.