Foros del Web » Programando para Internet » PHP »

Problemas al actualizar registro en base de datos mysql

Estas en el tema de Problemas al actualizar registro en base de datos mysql en el foro de PHP en Foros del Web. Hola tengo un problema cuando voy a actualizar un registro en mi base de datos, ya que aparentemente el registro se actualiza, pero cuando voy ...
  #1 (permalink)  
Antiguo 05/01/2009, 14:14
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Exclamación Problemas al actualizar registro en base de datos mysql

Hola tengo un problema cuando voy a actualizar un registro en mi base de datos, ya que aparentemente el registro se actualiza, pero cuando voy y miro en las tblas de mysql, el registro sigue igual, es decir, realmente no se ha realizado la actualizacion.

LA logica usada es la siguiente:

tengo una pagina llamada ActCliente.php, basicamente lo que esta pagina hace es pedir el numero de identificacion del usuario que deseo actualizar atraves de un pequeño formulario, y una vez pulsado el boton "enviar", la pagina me envia a otra pagina llamada visualizarC.php

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Actualizar Cliente</title>
<style type="text/css">
<!--
body {
	background-color: #D3D0AF;
}
-->
</style></head>

<body class="sub">
<form action="visualizarC.php" method="post" name="form1">
<table width="252" border="0" align="center">
  <tr>
    <td width="246" height="157" bgcolor="#D3D0AF"><p>Digite identificacion del Cliente que desea Actualizar</p>
      <form id="form1" name="form1" method="post" action="">
        <label>Identificacion
          <input type="text" name="identificacion" />
        </label>
    </form>      
    </td>
  </tr>
</table>
<label>
      	<div align="center">
      	  <input name="enviar" type="submit" id="enviar" value="Enviar" />
          <input name="cancelar" type="reset" id="cancelar" value="Cancelar" />
</div>
</label>
  </FORM>
</body>
</html> 

*****visualizarC.php****
esta pagina muestra el contenido de los registros pertencientes a el id digitado anteriormente, y a traves de un enlace lo envia (dependiendo de lo que el ususrio quiera modificar) a otra pagina llamada NewId.php (en este caso quiero modificar el id, por eso lo envia a esa pagina)

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Visualizar</title>
[PHP]<?php
require_once('conexion.php');
$id=$_POST["identificacion"];
$sql= "SELECT identificacion, nombre, direccion, telefono FROM cliente WHERE identificacion='$id'";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
if ($row)
{
$name = $row["nombre"];
$dir = $row["direccion"];
$tel = $row["telefono"];
 
 printf("<td><font face=Tahoma color=#000000><b>Identificacion:</b></font></td><td>&nbsp;%s</td>", $id);

//envio a traves de un enlace (cambiar) el id del usuario que quiero modificar
 echo '<a href="NewId.php?id='.$id.'">cambiar</a>'; 
 printf("<td><font face=Tahoma color=#000000><b>Nombre:</b></font></td><td>&nbsp;%s</td>", $name); 
 echo '<a href="actNm.php?id='.$id.'">cambiar</a>'; 
 printf("<td><font face=Tahoma color=#000000><b>Direccion:</b></font></td><td>&nbsp;%s</td>", $dire); 
 echo '<a href="actDr.php?id='.$id.'">cambiar</a>'; 
 printf("<td><font face=Tahoma color=#000000><b>Telefono:</b></font></td><td>&nbsp;%s</td>", $tel); 
 echo '<a href="actTel.php?id='.$id.'">cambiar</a>'; 
 
 
 
 	
}
else 
echo"<script>alert ('Registro  no encontrado en la Base de Datos');
		   </script>";
    
	
?>[/PHP]<style type="text/css">
<!--
body {
	background-color: #D3D0AF;
}
-->
</style></head>

<body>
</body>
</html> 

******NewId.pnp******
Esta pagina contiene un formulario en donde solicito el nuevo id y que se vuelva a digitar el nuevo id, para efectos de confirmacion

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
[PHP]<?php
require_once('conexion.php');
$id=$_GET["identificacion"];
$nId=$_POST["nuevoId"];
$cId= $_POST["confId"];
$tabla= 'cliente';
if($nId!= NULL || $cId != NULL)

{
  if($nId==$cId)
  {
  	 $resul=mysql_query("UPDATE $tabla SET identificacion='$nId' WHERE identificacion='$id'");
	 //$resul2=mysql_query("Update cliente Set identificacion='$nId' Where identificacion='$id'");
	 if ($resul )
	echo "<script languaje='javascript' type='text/javascript'>  
                  alert(\"Actualizacion exitosa\"); 
                  
          </script>"; 

  }
else
 echo "<script languaje='javascript' type='text/javascript'>  
                  alert(\"La identificacion y el numero de confirmacion no coinciden\"); 
                  
          </script>"; 
		  }
  
 

	
?>[/PHP]

<style type="text/css">
<!--
body {
	background-color: #D3D0AF;
}
-->
</style>

</head>

<body class="sub">
<form action="NewId.php" method="POST" name="form1"></form>
<table width="387" border="0" align="center" bgcolor="#D3D0AF">
  <tr>
    <td width="381"><label>Digite nuevo <br />
      numero
      de identificacion
      <input type="text" name="nuevoId" />
          <br />
          <br />
      Confirme Numero
      <input type="text" name="confId" />
      <br />
      </label>
    </td>
  </tr>
</table>
<p align="center">
  <input name="enviar" type="submit" id="enviar" value="Enviar" />
  <input name="cancelar" type="reset" id="cancelar" value="Cancelar" />
</p>

</body>
</html> 

MI GRAN PROBLEMA ES QUE AL EJECUTARLO ME VALIDA TODO Y HACE TODO APARENTEMENTE BIEN, ES DECIR REALIZA TODAS LAS VALIDACIONES, Y CUANDO VOY A ACTUALIZAR Y CUMPLE CON TODAS LAS NORMAS ME DICE QUE L AOPERACION FUE EXITOSA, PERO, SI MIRO EN LA TABLA DE MYSQL, EL REGISTRO SIGUE IGUAL!!!!!!

AYUDENME POR FAVOR, LO NECESITO CON MUCHA URGENCIA!!!!!!!!!!
  #2 (permalink)  
Antiguo 05/01/2009, 17:00
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Problemas al actualizar registro en base de datos mysql

Esta un poco largo su codigo para hacerle seguimiento.

Lo que se me ocurre es que en vez de
if ($resul )
coloque
if (mysql_affected_rows($resul) > 0) echo "braaaaavo";


si debio actualizarse pero realmente no se actualizo le toca imrimir el update generado para ver si es que esta quedando con algun error o con alguna condicion erronea.



Con esto verfica realmente si se actualizo o no el registro.
  #3 (permalink)  
Antiguo 05/01/2009, 18:24
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: Problemas al actualizar registro en base de datos mysql

Código PHP:
// Cambia esta linea:
      
$resul=mysql_query("UPDATE $tabla SET identificacion='$nId' WHERE identificacion='$id'");
// Por:
      
mysql_query("UPDATE cliente SET identificacion='$nId' WHERE identificacion='$id'") or die(mysql_error()); 
Si hay algun error en tu consulta con esto debiera aparecer, pero te recomiendo verificar si existe el registro que deseas modificar:
Código PHP:
$result mysql_query("SELECT identificacion FROM cliente WHERE identificacion = '$id'");
if(
mysql_num_rows($result) > 0) {
    
$basura mysql_result($result); // solo para liberar el controlador
    // Ahora revisa que no exista el nuevo ID en la base de datos
    
$result mysql_query("SELECT identificacion FROM cliente WHERE identificacion = '$nId'");
    if(
mysql_num_rows$result) > 0) {
        
$basura mysql_result($result); // solo para liberar el controlador
        // Avisas al usuario que esa ID ya esta asignada a otro cliente
    
} else {
        
// Aqui haces la actualizacion
    
}

__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 05/01/2009, 18:32
 
Fecha de Ingreso: enero-2009
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problemas al actualizar registro en base de datos mysql

Hola , Gracias por responder a mi inquietud

utilice la siguiente linea de codigo, para ver si realmente actualiza algo
printf("Actualizaciones: %d\n", mysql_num_rows());


y el resultado fue cero, es decir, es como si no encontrara algun registro en la tabla, no se si es que tengo algun error al pasar las variables de una pagina a otra...

ya que hice los cambios que me dijeron, y como les mencione antes, el problema es que mysql_num_rows() me arroja como resultado cero

Agradezco cualquier ayuda que me puedan dar

Última edición por Maye422; 05/01/2009 a las 18:40
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 17:02.