Foros del Web » Programando para Internet » PHP »

validar llave primaria al modificar datos con UDPATE

Estas en el tema de validar llave primaria al modificar datos con UDPATE en el foro de PHP en Foros del Web. buenas, he validado la existencia de llaves primarias al insertar datos, pero al modificarlo, necesito tambien realizar esa validacion y que me muestre un mensaje ...
  #1 (permalink)  
Antiguo 29/05/2009, 17:25
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
De acuerdo validar llave primaria al modificar datos con UDPATE

buenas, he validado la existencia de llaves primarias al insertar datos, pero al modificarlo, necesito tambien realizar esa validacion y que me muestre un mensaje qye me diga que ese codigo ya esta siendo utilizado,,,,,
envio a continuacion el codigo donde realizo la modificacion y guardo nuevamente en la tabla, ahi trate de hacerle un SELECT para que me validara la existencia de la llave pero no me la esta validando, agradeceria si alguien me colabora en este asunto...muchas gracias, solo necesito que me valida la existencia del codigo en la tabla investigaciones


<? $link = mysql_connect ("localhost","root","root");
if (!$link)
die("Error en la conexion con el DBMS");

mysql_select_db (idead,$link);

$resultado=mysql_query("SELECT cod_investigacion FROM investigaciones WHERE cod_investigacion='{$_POST['codigo']}'",$link);
$rows=mysql_num_rows($resultado);

if($rows>=1)
{
echo "El código que usted ingreso ya esta registrado, por favor utilice otro";

echo "<a href='investigaciones.php'><p>Regresar...</a></p>";
}
else
{



$qry = "UPDATE investigaciones SET cod_investigacion= '$codigo',
titulo = '$nombre',
cod_tipoinves = '$tipo',
cod_linea = '$linea',
cod_sub = '$sublinea ',
cod_estado = '$estado',
cod_presu = '$presupuesto ',
cod_registro = '$financiamiento',
tema = '$temas',
objetivo = '$objetivos ',

duracion = '$duraciones'
WHERE cod_investigacion = '$cod_investigacion '";




$qry2="UPDATE datosinvestigador SET cod_investigacion='$codigo'
WHERE cod_investigacion = '$cod_investigacion '";

}

if ( !mysql_select_db (idead, $link) )
die ("Error seleccionando la base de datos");

$resultado = mysql_query ($qry, $link);

$result = mysql_query ($qry2, $link);
if (!$resultado)
die ( mysql_error() );
if (!$result)
die ( mysql_error() );

$total_registros = mysql_affected_rows($link);

echo "<h3>El registro ha sido modificado </h3>";

echo "<br> <a href='updinvestigacion.php'>Modificar Otra Investigación.</a>";

?>
  #2 (permalink)  
Antiguo 29/05/2009, 17:26
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: validar llave primaria al modificar datos con UDPATE

debido a que esta modificacion la guardo en dos tablas, envio el codigo que modifica pero no me hace SELECT de la tabla investigaciones


<?
$qry = "UPDATE investigaciones SET cod_investigacion= '$codigo',
titulo = '$nombre',
cod_tipoinves = '$tipo',
cod_linea = '$linea',
cod_sub = '$sublinea ',
cod_estado = '$estado',
cod_presu = '$presupuesto ',
cod_registro = '$financiamiento',
tema = '$temas',
objetivo = '$objetivos ',

duracion = '$duraciones'
WHERE cod_investigacion = '$cod_investigacion '";




$qry2="UPDATE datosinvestigador SET cod_investigacion='$codigo'
WHERE cod_investigacion = '$cod_investigacion '";

$bd = mysql_connect ("localhost", "root", "root");
if ( !$bd )
die ("Error en la conexion con el DBMS");

$base_datos = "idead";
if ( !mysql_select_db ($base_datos, $bd) )
die ("Error seleccionando la base de datos");

$resultado = mysql_query ($qry, $bd);

$result = mysql_query ($qry2, $bd);
if (!$resultado)
die ( mysql_error() );
if (!$result)
die ( mysql_error() );

$total_registros = mysql_affected_rows($bd);

echo "<h3>El registro ha sido modificado </h3>";

echo "<br> <a href='updinvestigacion.php'>Modificar Otra Investigación.</a>";

?>
  #3 (permalink)  
Antiguo 29/05/2009, 17:43
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: validar llave primaria al modificar datos con UDPATE

el siguiente es el codigo original que me modifica pero no me valida la existencia de la llave primaria:

<?
$qry = "UPDATE investigaciones SET cod_investigacion= '$codigo',
titulo = '$nombre',
cod_tipoinves = '$tipo',
cod_linea = '$linea',
cod_sub = '$sublinea ',
cod_estado = '$estado',
cod_presu = '$presupuesto ',
cod_registro = '$financiamiento',
tema = '$temas',
objetivo = '$objetivos ',

duracion = '$duraciones'
WHERE cod_investigacion = '$cod_investigacion '";




$qry2="UPDATE datosinvestigador SET cod_investigacion='$codigo'
WHERE cod_investigacion = '$cod_investigacion '";

$bd = mysql_connect ("localhost", "root", "root");
if ( !$bd )
die ("Error en la conexion con el DBMS");

$base_datos = "idead";
if ( !mysql_select_db ($base_datos, $bd) )
die ("Error seleccionando la base de datos");

$resultado = mysql_query ($qry, $bd);

$result = mysql_query ($qry2, $bd);
if (!$resultado)
die ( mysql_error() );
if (!$result)
die ( mysql_error() );

$total_registros = mysql_affected_rows($bd);

echo "<h3>El registro ha sido modificado </h3>";

echo "<br> <a href='updinvestigacion.php'>Modificar Otra Investigación.</a>";

?>
  #4 (permalink)  
Antiguo 29/05/2009, 17:58
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: validar llave primaria al modificar datos con UDPATE

Explicate un poco: qué es lo que quieres hacer? no entiendo ese código, si lo que quieres es modificar datos... claro que el $cod_investigación debe existir!!! sino qué piensas modificar?, tu código está falto de lógica!!! haces una condicion del tipo:

si existe
error
si no existe
modificar

como piensas modificarlo si quieres que no exista?

Explica mejor qué es lo que quieres hacer...
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #5 (permalink)  
Antiguo 29/05/2009, 18:03
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: validar llave primaria al modificar datos con UDPATE

ah, por cierto, se me olvidaba.
1-> no tienes que escoger la base de datos cada que quieras hacer una consulta.
2-> en ninguna parte del código mostrado creas la variable $cod_investigacion
3-> usas directamente una variable $_POST en tu sql query, lo cual facilitaría una sql-inyection... para corregir esto usa mysqli::real_escape_string() y mejor utiliza la api mysqli.
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #6 (permalink)  
Antiguo 29/05/2009, 18:07
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: validar llave primaria al modificar datos con UDPATE

lo que quiero es que al modificar la investigacion, si el usuario digita un codigo que ya existe, cuando le de en el boton guardar modificacion me arroje un mensaje que me diga que ese codigo ya existe, y sino, que me guarde la modificacion
el codigo que muestro en el anterior mensaje me guarda correctamente la modifiacion, pero no me valida si el cod_investigacon que estoy modificando ya existe, es que precisamente eso es lo que me hace falta



<?
$qry = "UPDATE investigaciones SET cod_investigacion= '$codigo',
titulo = '$nombre',
cod_tipoinves = '$tipo',
cod_linea = '$linea',
cod_sub = '$sublinea ',
cod_estado = '$estado',
cod_presu = '$presupuesto ',
cod_registro = '$financiamiento',
tema = '$temas',
objetivo = '$objetivos ',

duracion = '$duraciones'
WHERE cod_investigacion = '$cod_investigacion '";




$qry2="UPDATE datosinvestigador SET cod_investigacion='$codigo'
WHERE cod_investigacion = '$cod_investigacion '";

$bd = mysql_connect ("localhost", "root", "root");
if ( !$bd )
die ("Error en la conexion con el DBMS");

$base_datos = "idead";
if ( !mysql_select_db ($base_datos, $bd) )
die ("Error seleccionando la base de datos");

$resultado = mysql_query ($qry, $bd);

$result = mysql_query ($qry2, $bd);
if (!$resultado)
die ( mysql_error() );
if (!$result)
die ( mysql_error() );

$total_registros = mysql_affected_rows($bd);

echo "<h3>El registro ha sido modificado </h3>";

echo "<br> <a href='updinvestigacion.php'>Modificar Otra Investigación.</a>";

?>

me hace falta esa condicion

si existe
error
si no existe
modificar

obviamente el registro ya existe, y lo que deeso es que me haga una consulta a la tabla investigaciones para verificar si ese codigo que estoy modificando ya se encuentra y sino que valla y me modifique

Última edición por oscarbt; 29/05/2009 a las 18:12
  #7 (permalink)  
Antiguo 29/05/2009, 18:09
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: validar llave primaria al modificar datos con UDPATE

en el momento de insertar yo utilice el siguiente codigo que si me valida que no se repitan codigos:

$resultado=mysql_query("SELECT cod_investigacion FROM investigaciones WHERE cod_investigacion='{$_POST['codigo']}'",$link);
$rows=mysql_num_rows($resultado);

if($rows>=1)
{
echo "El código que usted ingreso ya esta registrado, por favor utilice otro";

echo "<a href='investigaciones.php'><p>Regresar...</a></p>";
}
else
{
INSERT.......................
  #8 (permalink)  
Antiguo 29/05/2009, 18:10
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: validar llave primaria al modificar datos con UDPATE

intente hacer este mismo para UPDATE
  #9 (permalink)  
Antiguo 29/05/2009, 18:11
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: validar llave primaria al modificar datos con UDPATE

intente hacer este mismo para UPDATE pero no me funciono
  #10 (permalink)  
Antiguo 29/05/2009, 18:22
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: validar llave primaria al modificar datos con UDPATE

no se si soy yo que me cogió la de ser tonto o tu no te explicas bien:
si te fijas en el primero post haces una condicional de este tipo:

pelota exite?
si pelota existe
lanza error
si pelota no existe
pintar pelota de amarillo

pero... como pretendes pintar pelota de amarillo si pelota no existe? primero tendrás que crearla, no se si lo capte muy bien, pero creo que lo que tienes es:
una tabla donde guardas los datos de investigación,
otra donde guardas los datos de investigador.
y lo que quieres es:
si hay un investigador haciendo una invetigación, solo él puede modificarla

es esto cierto?

si no es cierto te pido que expliques en totalidad para qué quieres exactamente ese código, quiero ayudarte, pero no sé que es lo que quieres exactamente, una expresión logica de este tipo:

si existe
error
si no existe
modificar

es completamente irracional e ilógica, nunca podrás modificar algo que no existe, solo podrás crearlo.
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #11 (permalink)  
Antiguo 29/05/2009, 18:29
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: validar llave primaria al modificar datos con UDPATE

lo que sucede es que en la tabla investigaciones existen una serie de registros, cuando yo selecciono alguno de esos registros y quiero modificarlo, tengo que validar que ese registro no repita datos de los otros que hay en la tabla, es decir que si tengo en la tabla una investigacion A con codigo: 98 y al seleccionar por ejemplo la investigacion B que tiene codigo:90, si deseo cambiarle el codigo a la investigacion B y colocarle 98, me envie elmensaje de que no puedo usar ese codigo porque ya lo tiene otra investigacion (osea lo tiene A)...........no se si me estes entendiendo bien.. lo que quiero es que me haga una seleccion de los registros que tenga en la tabla investigaciones para evitar el duplicado de la llave primaria.........
  #12 (permalink)  
Antiguo 29/05/2009, 18:31
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: validar llave primaria al modificar datos con UDPATE

esa modificacion solo sera hecha por una persona......pero tengo que advertirle que si ingresa un cod_investigacion que ya esta en la tabla, me muestre el mensaje de error diciendome que ese cod_investigacion ya lo tiene otro registro
  #13 (permalink)  
Antiguo 29/05/2009, 18:38
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: validar llave primaria al modificar datos con UDPATE

ah!!! ahora te entiendo, modifica la tabla,

ALTER TABLE investigaciones ADD PRIMAY KEY(cod_investigacion);

Con esto cuando un valor de cod_investigacion se repita, mysql lanzará un error diciendo que solo puede haber una fila con dicho valor...

espero que esto te funcione, si tienes más dudas intentaré ayudarte como pueda...
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #14 (permalink)  
Antiguo 29/05/2009, 18:56
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: validar llave primaria al modificar datos con UDPATE

pero en q parte de el codigo que te muestro lo coloco? y como lanzo el error, que pena soy novato en estos temas....
  #15 (permalink)  
Antiguo 29/05/2009, 18:59
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: validar llave primaria al modificar datos con UDPATE

es que yo estaba era usando 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 12:57.