Foros del Web » Programando para Internet » PHP »

Ejecutar query al pulsar en DIV

Estas en el tema de Ejecutar query al pulsar en DIV en el foro de PHP en Foros del Web. Hola a todos, Estoy haciendo una página donde editar registros de una base de datos, así como eliminarlos. Ya muestro los resultados, y los tengo ...
  #1 (permalink)  
Antiguo 13/11/2015, 17:52
 
Fecha de Ingreso: noviembre-2015
Ubicación: Valencia
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Ejecutar query al pulsar en DIV

Hola a todos,
Estoy haciendo una página donde editar registros de una base de datos, así como eliminarlos. Ya muestro los resultados, y los tengo paginados.
Ahora, quiero hacer una función que al pulsar en un DIV(eliminar) elimine ese registro.

La función sería algo como:

Código PHP:
function eliminar(){
global 
$ID;
$borrar=mysqli_query($con"DELETE FROM contenido WHERE ID=$ID");

Y el código de mi página es el siguiente:

Código PHP:
<!-- PROTEJER WEB -->
<?php

include_once('conexion.php');
include_once(
"security.php");



//CONEXIÓ A LA BBDD
$con=conect(); 
//OBTINDRE RESULTATS BBDD I EL NUMERO TOTAL
$entradas mysqli_query($con"SELECT ID FROM contenido ");
$total mysqli_num_rows($entradas);
//RESULTATS PER PAGINA
$resultados5;
$url="editar3.php";
$pagina$_GET["pagina"];
if(!
$pagina){
    
$inicio=0;
    
$pagina=1;
}
else{
    
$inicio= ($pagina 1) * $resultados;
}
$total_paginasceil($total $resultados);
$conulta"SELECT * FROM contenido ORDER BY Fecha DESC LIMIT  ".$inicio.","$resultados ."" ;
//$conulta= "SELECT * FROM contenido LIMIT  ".$inicio.",". $resultados ." ORDER BY Fecha DESC" ;
$rsmysqli_query($con$conulta);

/*
function eliminar(){
global $ID;
$borrar=mysqli_query($con, "DELETE FROM contenido WHERE Titulo=$ID");
}
*/


?>
<!doctype html>
<link rel="stylesheet" href="http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<link href="editar.css" rel="stylesheet" type="text/css">
<html>
<head>
<meta charset="utf-8">
<title>Editar Contenido</title>
</head>

<body>
<h1>EDITAR CONTENIDO</h1>



<?php foreach ($rs as $row): ?>
<div id="registro">
<div id="contenido">
<?php $id=$row["ID"];
$desc=$row["Descripcion"];
$desc_curt substr("$desc"058); 
 
?>
<?php 
echo $row["Titulo"]; ?><BR>
<?php 
if(strlen($desc_curt)>57){
echo 
"$desc_curt...";
}
else{
    echo 
$desc_curt;
}
//echo $row["Descripcion"]; 
?>

</div>

<div id="editar">
</div>

<div id="eliminar"> <!-- LLAMAR FUNCIÓN ELIMINAR AL PULSAR EN ESTE DIV -->

</div>
</div>
<?php endforeach ?> 
<?php
if ($total_paginas 1) {
   if (
$pagina != 1)
      echo 
'<a href="'.$url.'?pagina='.($pagina-1).'"><img src="images/izq.gif" border="0"></a>';
      for (
$i=1;$i<=$total_paginas;$i++) {
         if (
$pagina == $i)
            
//si muestro el índice de la página actual, no coloco enlace
            
echo $pagina;
         else
            
//si el índice no corresponde con la página mostrada actualmente,
            //coloco el enlace para ir a esa página
            
echo '  <a href="'.$url.'?pagina='.$i.'">'.$i.'</a>  ';
      }
      if (
$pagina != $total_paginas)
         echo 
'<a href="'.$url.'?pagina='.($pagina+1).'"><img src="images/der.gif" border="0"></a>';
}
?>
</body>
</html>
Muchas gracias por vuestra ayuda :)
  #2 (permalink)  
Antiguo 13/11/2015, 18:03
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Ejecutar query al pulsar en DIV

es mas facil con un enlace href o un button ya que puedes configurar un onClick y llamar al js para que ejecute la funcion, no se porque usaste divs para esas funciones
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 13/11/2015, 18:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ejecutar query al pulsar en DIV

Definitivamente es más fácil con enlaces.

Además no tendrías que usar Javascript, es todo más natural.

Y a propósito, por favor no dupliques temas: http://www.forosdelweb.com/f18/ejecu...r-div-1141851/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 14/11/2015, 14:56
 
Fecha de Ingreso: noviembre-2015
Ubicación: Valencia
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Ejecutar query al pulsar en DIV

Hola a todos, y muchas gracias por vuestras respuestas.
En primer lugar, siento haber duplicado el tema. Lo siento. No ha sido a propósito, la página se colgó al enviar el tema, y parece que se publicó dos veces. Intentaré ser más cuidadoso para próximas veces :)

En cuanto al motivo de mi tema, me parece correcto, me serviría con un link.
Podría alguno de los dos ponerme algún ejemplo de como se haría? O si no es pedir mucho, como se haría en mi caso concreto?

Desde ya, muchísimas gracias!
  #5 (permalink)  
Antiguo 14/11/2015, 14:58
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Ejecutar query al pulsar en DIV

Código HTML:
Ver original
  1. <a href="eliminar.php?id=<?php echo $row['id']; ?>">Eliminar Registro</a>
asi amigo, ya con css le das estilos de boton y todo eso
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 15/11/2015, 05:43
 
Fecha de Ingreso: noviembre-2015
Ubicación: Valencia
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Ejecutar query al pulsar en DIV

Gracias por la ayuda, pero me temo que no va a ser suficiente...
He modificado el div eliminar de la siguiente manera:

Código PHP:
Ver original
  1. <div id="eliminar">
  2. <a href="eliminar.php?id=<?php echo $row['id']; ?>">Eliminar Registro</a>
  3. </div>

Y eh creado un archivo PHP llamado eliminar.php, con el siguiente código.

Código PHP:
Ver original
  1. <?php
  2. include_once('conexion.php');
  3. include_once("security.php");
  4. $con=conect();
  5. $borrar=mysqli_query($con, "DELETE FROM contenido WHERE ID=='73'");
  6.  
  7. ?>

Tengo varios problemas, yo lo que quiero es que se ehecute la función es decir, que borre el registro, y recargue la pagina donde se muestran todos los registro. Con lo que pongo arriba, se va eliminar.php y se queda en blanco.

Además, no me coge el id del registro correspondiente, la verdad, no se como hacerlo... Fíjate como hago un bucle foreach para imprimir todos los registros y guardo el id en una variable, pero tu código pese a usar esa variaboe, no muestra el id en la barra. Muestra lo siguiente:

http://localhost/web/eliminar.php?id=%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20index:%20id%20in%20%3Cb%3EC :\xampp\htdocs\WEB\editar3.php%3C/b%3E%20on%20line%20%3Cb%3E82%3C/b%3E%3Cbr%20/%3E

Finalmente, he querido probar si mi función era capaz de eliminar algun registro, por eso, he probado a poner el ID==73 que está en la tabla, pero tampoco funciona...

La verdad, no se que estará fallando, a ver si me podéis echar un cable.
  #7 (permalink)  
Antiguo 15/11/2015, 07:17
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Ejecutar query al pulsar en DIV

pues con un simple header luego del codigo lo haces amigo, claro condicionandolo y me parece raro que no te fuere suficiente el enlace sindo este la manera mas utilizada para esto, pero bueno realiza el header y listo ya lo tienes o puedes inprimir un alert y luego redireccionar

Código PHP:
Ver original
  1. header('location:lista.php');

deberia de ser asi:

Código PHP:
Ver original
  1. <?php
  2. include_once('conexion.php');
  3. include_once("security.php");
  4.  
  5. //recibes la variable o no borrara nada
  6. $id = $_get['id'];
  7.  
  8. $con=conect();
  9. $borrar=mysqli_query($con, "DELETE FROM contenido WHERE ID = '$id'");
  10.  
  11. if($borra){
  12. header('location:lista.php');
  13. } else{
  14. //AQUI LO QUIE QUIERAS QUE HAGA SI NO BORRA
  15. }
  16.  
  17. ?>
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 16/11/2015, 03:28
 
Fecha de Ingreso: noviembre-2015
Ubicación: Valencia
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Ejecutar query al pulsar en DIV

Hola, lo acabo de probar, he avanzado un poco, pero aún no funciona del todo. Siento ser tan torpe, estoy aprendiendo y me cuesta...

Con tu código no he conseguido borrar automáticamente, pero si que ya puedo borrar poniendo en la consulta el número del ID. Por ejemplo: "DELETE FROM contenido WHERE ID = 76"
Tenía dos problemas, el header y que en la consulta hacía where ID == 76 (con dos =) cuando es con 1.

Ahora por tanto, el problema que tengo es el recoger la variable $id. Algún problema hay que no se pasa bien. He probado a hacer un echo de esa variable y el eliminar.php me saca el siguiente mensaje:

Notice: Undefined index: id in C:\xampp\htdocs\WEB\editar3.php on line 82

Si vamos al archivo ediar3.php (que es el que tu habías nombrado como lista.php) esta es la línea:
<a href="eliminar.php?id=<?php echo $row['id']; ?>">Eliminar Registro</a>

Y es que realmente en la barra del navegador aparece esto:
http://localhost/web/eliminar.php?id=%3Cbr%20/%3E%3Cb%3ENotice%3C/b%3E:%20%20Undefined%20index:%20id%20in%20%3Cb%3EC :\xampp\htdocs\WEB\editar3.php%3C/b%3E%20on%20line%20%3Cb%3E82%3C/b%3E%3Cbr%20/%3E

Voy a poner el actual código de los dos archivos:
Editar3.php

Código PHP:
Ver original
  1. <!-- PROTEJER WEB -->
  2. <?php
  3.  
  4. include_once('conexion.php');
  5. include_once("security.php");
  6.  
  7.  
  8.  
  9. //CONEXIÓ A LA BBDD
  10. $con=conect();
  11. //OBTINDRE RESULTATS BBDD I EL NUMERO TOTAL
  12. $entradas = mysqli_query($con, "SELECT ID FROM contenido ");
  13. $total = mysqli_num_rows($entradas);
  14. //RESULTATS PER PAGINA
  15. $resultados= 5;
  16. $url="editar3.php";
  17. $pagina= $_GET["pagina"];
  18. if(!$pagina){
  19.     $inicio=0;
  20.     $pagina=1;
  21. }
  22. else{
  23.     $inicio= ($pagina - 1) * $resultados;
  24. }
  25. $total_paginas= ceil($total / $resultados);
  26. $conulta= "SELECT * FROM contenido ORDER BY Fecha DESC LIMIT  ".$inicio.",". $resultados ."" ;
  27. //$conulta= "SELECT * FROM contenido LIMIT  ".$inicio.",". $resultados ." ORDER BY Fecha DESC" ;
  28. $rs= mysqli_query($con, $conulta);
  29.  
  30. function eliminar(){
  31. global $id;
  32. $borrar=mysqli_query($con, "DELETE FROM contenido WHERE ID==73");
  33. }
  34.  
  35. if( isset( $_GET['call'] ) && $_GET['call'] == 'eliminar' ) {
  36.     eliminar(); // Se llama a eliminar
  37. }
  38. ?>
  39.  
  40.  
  41.  
  42.  
  43. <!doctype html>
  44. <link rel="stylesheet" href="http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css">
  45. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  46. <link href="editar.css" rel="stylesheet" type="text/css">
  47. <html>
  48. <head>
  49. <meta charset="utf-8">
  50. <title>Editar Contenido</title>
  51. </head>
  52.  
  53. <body>
  54. <h1>EDITAR CONTENIDO</h1>
  55.  
  56.  
  57.  
  58. <?php foreach ($rs as $row): ?>
  59. <div id="registro">
  60. <div id="contenido">
  61. <?php $id=$row["ID"];
  62. $desc=$row["Descripcion"];
  63. $desc_curt = substr("$desc", 0, 58);
  64.  ?>
  65. <?php echo $row["Titulo"]; ?><BR>
  66. <?php
  67. if(strlen($desc_curt)>57){
  68. echo "$desc_curt...";
  69. }
  70. else{
  71.     echo $desc_curt;
  72. }
  73. //echo $row["Descripcion"];
  74. ?>
  75.  
  76. </div>
  77.  
  78. <div id="editar">
  79. </div>
  80.  
  81. <div id="eliminar">
  82. <a href="eliminar.php?id=<?php echo $row['id']; ?>">Eliminar Registro</a>
  83. </div>
  84. </div>
  85. <?php endforeach ?>
  86. <?php
  87. if ($total_paginas > 1) {
  88.    if ($pagina != 1)
  89.       echo '<a href="'.$url.'?pagina='.($pagina-1).'"><img src="images/izq.gif" border="0"></a>';
  90.       for ($i=1;$i<=$total_paginas;$i++) {
  91.          if ($pagina == $i)
  92.             //si muestro el índice de la página actual, no coloco enlace
  93.             echo $pagina;
  94.          else
  95.             //si el índice no corresponde con la página mostrada actualmente,
  96.             //coloco el enlace para ir a esa página
  97.             echo '  <a href="'.$url.'?pagina='.$i.'">'.$i.'</a>  ';
  98.       }
  99.       if ($pagina != $total_paginas)
  100.          echo '<a href="'.$url.'?pagina='.($pagina+1).'"><img src="images/der.gif" border="0"></a>';
  101. }
  102. ?>
  103. </body>
  104. </html>

eliminar.php:

Código PHP:
Ver original
  1. <?php
  2. include_once('conexion.php');
  3. include_once("security.php");
  4. $con=conect();
  5. //recibes la variable o no borrara nada
  6. $id = $_GET['id'];
  7. $borrar=mysqli_query($con, "DELETE FROM contenido WHERE ID = $id");
  8.  
  9. if($borrar){
  10. header('location:editar3.php');
  11. } else{
  12.     echo "No se puede borrar";
  13.     echo $id;
  14. //AQUI LO QUIE QUIERAS QUE HAGA SI NO BORRA
  15. }
  16.  
  17. ?>

Como el tema ha cambiado de tema radicalmente, si prefieres que abra otro tema lo entenderé :)
Muchas gracias por todo lo que ya has hecho, crack!
  #9 (permalink)  
Antiguo 16/11/2015, 10:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ejecutar query al pulsar en DIV

Ese es el error, "ID" e "id" no son lo mismo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 16/11/2015, 12:00
 
Fecha de Ingreso: noviembre-2015
Ubicación: Valencia
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Ejecutar query al pulsar en DIV

Gracias por la respuesta, voy un poco justo de tiempo entre esto y la universidad... He echado un vistazo al código, centrándome en el nombre ID y id, pero no he encontrado el error.
Serías tan amable de decirme exactamente dónde está el error si ya lo has encontrado?
Muchas gracias compi.

Etiquetas: fecha, html, mysql, pulsar, query, registro, select, sql
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 01:11.