elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  saber en que fila seleccione
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: saber en que fila seleccione  (Leído 4,492 veces)
MaLkAvIaN_NeT

Desconectado Desconectado

Mensajes: 213


MaLkAvIaN_NeT


Ver Perfil WWW
saber en que fila seleccione
« en: 6 Octubre 2008, 07:23 am »

hola amigos del foro necesito su gran ayuda.

cargo en una tabla los datos de un registro de mi base de datos:


quiero que al hacer click en el boton se elimine el registro seleccionado, en otras palabras quiero saber como puedo hacer para ver que fila se selecciono para poder actualizarlo desde mi eliminar.php

espero me ayuden



En línea

a por las buenas ideas
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: saber en que fila seleccione
« Respuesta #1 en: 6 Octubre 2008, 08:52 am »

Pon el id en el link del boton y en tu php de eliminación haz un query delete where id=numero.


En línea

MaLkAvIaN_NeT

Desconectado Desconectado

Mensajes: 213


MaLkAvIaN_NeT


Ver Perfil WWW
Re: saber en que fila seleccione
« Respuesta #2 en: 6 Octubre 2008, 18:58 pm »

ok muchas gracias voy a intentarlo cualquier problema lo pondré en el foro.


gracias por su tiempo
En línea

a por las buenas ideas
Hadess_inf
Desesperado
Colaborador
***
Desconectado Desconectado

Mensajes: 2.048


Nueva Vida


Ver Perfil WWW
Re: saber en que fila seleccione
« Respuesta #3 en: 6 Octubre 2008, 21:43 pm »

Código
  1. <?
  2. while($row = mysql_fetch_array($que))
  3. {
  4. ?>
  5. <input type='button' value='eliminar' onclick="javascript:document.location.href='elimina.php?id=<? echo $row['codigo]']; ?>';">
  6. <?
  7. }
  8. ?>
« Última modificación: 6 Octubre 2008, 21:45 pm por hadess_inf » En línea

MaLkAvIaN_NeT

Desconectado Desconectado

Mensajes: 213


MaLkAvIaN_NeT


Ver Perfil WWW
Re: saber en que fila seleccione
« Respuesta #4 en: 10 Octubre 2008, 07:02 am »

que de cierto hay con lo q no es recomendable usar java script como en la validaciones porque hay manera q desde el lado del cliente se pueda saltar el o pasar por alta la ejecución del java script
En línea

a por las buenas ideas
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: saber en que fila seleccione
« Respuesta #5 en: 10 Octubre 2008, 07:46 am »

Todas las validaciones de tu sistema debes hacerlas con PHP y ayudarte para otras cosas con JS, por ejemplo, si quieres que en un campo como nombre de usuario no se introduzcan números juegas con keycode JS, si falla, PHP, otro ejemplo al contrario, seria si en un campo como DNI quieres que se introduzcan solo números y si falla PHP y bla, bla, puedes deshabilitar el botón de envió si los campos están vacíos y activarlos cuando no sea así, hay varias formas de no hacer tanto uso de él y aun así conseguir hacer lo que quieres.

Para lo que tú planteas, yo prefiero hacerlo así:

Código
  1. echo "<td class='link' align=\'center\'><a href='$sVinculo?Id=$Id'>$sTexto</a></td>";

Eso es parte una función que tengo para listar el contenido de ciertas tablas en un sistema que desarrollo, ese echo va justamente al final de cada columna, a medida que listo, el link se arma con el vinculo que le pase, el id del registro y el texto que llevará dicho link. Unas veces necesito que diga eliminar otras modificar… y luego para saber cual eliminará, capturas el id y lo demás supongo lo sabes.

Es solo una idea, saludos
En línea

MaLkAvIaN_NeT

Desconectado Desconectado

Mensajes: 213


MaLkAvIaN_NeT


Ver Perfil WWW
Re: saber en que fila seleccione
« Respuesta #6 en: 10 Octubre 2008, 08:55 am »

pero esto no sería inseguro ya que mandaría un ID por el navegador, dime hay alguna forma de cifrar estos datos como se hace en asp.net.


pero que no sea con MD5 o SHA1 porque no podría recuperar el valor originario.

gracias por su tiempo.

saludos
« Última modificación: 10 Octubre 2008, 08:58 am por MaLkAvIaN_NeT » En línea

a por las buenas ideas
MaLkAvIaN_NeT

Desconectado Desconectado

Mensajes: 213


MaLkAvIaN_NeT


Ver Perfil WWW
Re: saber en que fila seleccione
« Respuesta #7 en: 10 Octubre 2008, 21:03 pm »

tengo otra forma:

Código:
$id=array_keys($_POST['borrar']);


$sql="DELETE FROM ... WHERE id=$id[0]";

pero como podría saber en cual item del arreglo se hizo click, alguna forma??


gracias por su tiempo.
« Última modificación: 10 Octubre 2008, 21:09 pm por MaLkAvIaN_NeT » En línea

a por las buenas ideas
MaLkAvIaN_NeT

Desconectado Desconectado

Mensajes: 213


MaLkAvIaN_NeT


Ver Perfil WWW
Re: saber en que fila seleccione
« Respuesta #8 en: 11 Octubre 2008, 07:42 am »

Gracias a mi amigo foráneo francisco para que sugirió hacerlo con unos check. aquí pongo el código para aquellos que alguna ves lo necesiten usar como en esta oportunidad lo necesité yo.

aquí mi store procedure para modificar.
Código:
CREATE DEFINER=`root`@`localhost` PROCEDURE `t_persona_cambiar_estado`(int_persona int,int_estado tinyint)
update persona set estado=int_estado where id_persona=int_persona$$

codigo del form

Código:
<td><input type='checkbox' name='id[]' value='<? echo"$row['tuVariableId']"?>'

código para modificar.php
Código
  1. $arreglo=$_POST["id"];
  2.  
  3. for($i=0;$i<count($arreglo);$i++)
  4. {    
  5.    $obj_persona->id_persona=$arreglo[$i];
  6.    $obj_persona->modificar($objBd);    
  7. }
  8. $objBd->desconectar();
  9. $obj_servicios->ir_a("persona.php");

mi metodo modificar en la clase persona:

Código
  1. function modificar($cnn)
  2. {
  3. $consulta="call t_persona_cambiar_estado (".$this->id_persona.",".$this->estado.");";
  4. $cnn->ejecutar_consulta($consulta);
  5. }  


saludos y gracias por su tiempo.
En línea

a por las buenas ideas
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: saber en que fila seleccione
« Respuesta #9 en: 12 Octubre 2008, 20:28 pm »

Creo que ya estubo mas que claro en las primeras dos respuestas,

Citar
Pon el id en el link del boton y en tu php de eliminación haz un query delete where id=numero.
Citar
<?
while($row = mysql_fetch_array($que))
{
?>
<input type='button' value='eliminar' onclick="javascript:document.location.href='elimina.php?id=<? echo $row['codigo]']; ?>';">
<?
}
?>

Utilizar javascript no tiene nada de inseguro, la seguridad depende del programador para validar esa entrada, por ejemplo se supone que solo tu tendrás acceso a modificar aquellas filas o a quien tu designes con algún tipo de sesión, etc. Si quieres evitar alguna inyección de tipo SQL podrías establecer que la variable sea solo numérico (int)$id, el javascript que expuso haddes lo único que hace es una pequeña redirección para validar la entrada en metodo GET elimina.php?id=[id] y si alguien decide modificar ese ID podrá hacerlo desde el formulario de todas formas, la idea no es restringir desde el explorador sino desde el servidor si es que quieres evitar problemas de seguridad, todo esta en la buena programación php accediendo a eliminar la fila solamente si el usuario es permitido y/o el id realmente existe para evitar devolver valores nulos.

Piendo que lo que buscas está mas ayá de lo que expones.


Código
  1. <?php
  2. // .. ..
  3.  
  4. if($_GET['borrar']){
  5. $referer = @explode("?",$_SERVER[HTTP_REFERER]);
  6. if($_POST and !eregi($referer[0], "http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF])){
  7.  header("Ataque-detenido: XSRF");
  8.  header("location: http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF]);
  9.  exit(1);
  10. }
  11. if(verifica_eliminar()){
  12.  header('Estado: Columna eliminada');
  13.  header('location: http://'.$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF]);
  14.  exit(0);
  15. }else{
  16.  header('Estado: Sin acciones');
  17.  header('location: http://'.$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF]);
  18. exit(1);
  19. }
  20. }else{
  21. include('formulario.php');
  22. exit(0);
  23. }
  24.  
  25. function verifica_eliminar(){
  26. if($_SESSION['es_admin']){
  27.  $sql = 'DELETE FROM `database` WHERE `tabla`.`id` = \''.(int)$_GET['borrar'].'\';';
  28.  if(mysql_query($sql,$conectar_sql)){
  29.   return true;
  30.  }else{
  31.   return false;
  32.  }
  33. }else{
  34.   return false;
  35. }
  36. }
  37.  
  38. // .. ..
  39. ?>
« Última modificación: 12 Octubre 2008, 20:33 pm por WHK » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines