Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Error en confirm con foreach

Estas en el tema de Error en confirm con foreach en el foro de Javascript en Foros del Web. ¡Hola a tod@s! Estoy encontrándome con un problema que no sé solucionar en mi blog. A ver si podéis ayudarme a encontrar qué estoy haciendo ...
  #1 (permalink)  
Antiguo 09/07/2017, 07:15
 
Fecha de Ingreso: marzo-2016
Ubicación: Madrid
Mensajes: 31
Antigüedad: 8 años, 1 mes
Puntos: 1
Error en confirm con foreach

¡Hola a tod@s!
Estoy encontrándome con un problema que no sé solucionar en mi blog. A ver si podéis ayudarme a encontrar qué estoy haciendo mal. Gracias de antemano.
Tengo una página de administrador donde paso un foreach que me muestra un par de entradas por página y debajo de cada una se ven los botones de eliminar entrada y editar entrada. Con php soy capaz de hacer que cumplan su función. El código que funciona es éste.
Código PHP:
<?php foreach ($posts as $post): ?>
                        <div class="post">
                            <div class="post-heading">
                                <h3><a href="detalle.php?id=<?php echo $post['id']; ?>"><?php echo $post['titulo'] ; ?></a></h3>
                            </div>
                            <p><?php echo $post['textobreve'] ; ?></p>
                            <div class="bottom-article">
                              <ul class="meta-post">
                                <a href="editarentrada.php?id=<?php echo $post['id']; ?>" class="btn btn-info"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> Editar</a>
                                <a href="eliminarentrada.php?id=<?php echo $post['id']; ?>" class="btn btn-danger"><i class="fa fa-times" aria-hidden="true"></i> Eliminar</a>
                              </ul>
                            </div> 
                      <?php endforeach; ?>
Pero yo quiero que antes de eliminar una entrada tras darle al botón, por ejemplo, aparezca un confirm. Lo he intentado de estas dos maneras:
La primera:
Código:
<a href='javascript:seguroEliminar("eliminarentrada.php?id=<?php echo $post['id']; ?>")' class="btn btn-danger"><i class="fa fa-times" aria-hidden="true"></i> Eliminar</a>
La segunda:
Código:
<button onclick = "seguroEliminar()" class="btn btn-danger" id="botonEliminar"><i class="fa fa-times" aria-hidden="true"></i>Eliminar</button>
Y éste es el script:
Código:
<script type="text/javascript">
                                  function seguroEliminar() {
                                    var seguroEliminar = confirm("¿Seguro que quieres eliminar esta entrada? (Esta acción no se puede deshacer).");
                                    if (seguroEliminar == true) {
                                      alert("Has eliminado la entrada");
                                      window.location.href="eliminarentrada.php?id=<?php echo $post['id']; ?>";
                                    }
                                    else {
                                      alert("No has eliminado la entrada");
                                    }
                                  }
                                </script>
El problema radica en que, con ambos códigos, al pulsar el botón de eliminar entrada de la entrada más reciente, se elimina la entrada menos reciente de las dos.
Es decir, si tengo dos entradas en la página con id 114 y 115 y hago click en el botón eliminar de la número 115, se elimina la 114.
Esto no ocurre si hago click en la menos reciente. Por ejemplo: si tengo la 109 y la 108 y hago clic en eliminar entrada en el botón de la 108, ésta se elimina correctamente.
¿Qué puede estar fallando?
Saludos.
  #2 (permalink)  
Antiguo 09/07/2017, 07:21
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: Error en confirm con foreach

Código HTML:
Ver original
  1. <button onclick = "seguroEliminar(this.id)" class="btn btn-danger" id="AQUI LA ID DE TU REGISTRO EN
  2. LA BD"><i class="fa fa-times" aria-hidden="true"></i>Eliminar</button>

Código Javascript:
Ver original
  1. function seguroEliminar(X) {
  2.                                     var seguroEliminar = confirm("¿Seguro que quieres eliminar esta entrada? (Esta acción no se puede deshacer).");
  3.                                     if (seguroEliminar == true) {
  4.                                       alert("Has eliminado la entrada");
  5.                                       window.location.href="eliminarentrada.php?id="+X;
  6.                                     }
  7.                                     else {
  8.                                       alert("No has eliminado la entrada");
  9.                                     }
  10.                                   }

como puedes ver en ese cambios, lo estas haciendo mal, deberias de asignar al boton como id la que rescatas de la base de datos, luego enviarla a la funcion y es alli que te deberia de funcionar, ve esos cambios y prueba de nuevo.

NOTA: por otro lado, yo realizaria la peticion a php con ajax para eliminar el registro, de esa manera se veria mas dinamico el proceso al no recargar la pagina.
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 09/07/2017, 09:50
 
Fecha de Ingreso: marzo-2016
Ubicación: Madrid
Mensajes: 31
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: Error en confirm con foreach

Lo primero, gracias por la ayuda xfxstudios. Soy bastante novato en Javascript...

No he interpretado bien tu código, porque ahora no elimina ninguna entrada. Éste es el código que he puesto:

Código:
<button onclick = "seguroEliminar(this.id)" class="btn btn-danger" id="<?php echo $post['id']; ?>"><i class="fa fa-times" aria-hidden="true"></i> Eliminar</button>

                                <!-- Script para confirmar que una entrada se elimina -->
                                <script type="text/javascript">
                                  function seguroEliminar(X) {
                                    var seguroEliminar = confirm("¿Seguro que quieres eliminar esta entrada? (Esta acción no se puede deshacer).");
                                    if (seguroEliminar == true) {
                                      alert("Has eliminado la entrada");
                                      window.location.href="eliminarentrada.php?id"+X;
                                    }
                                    else {
                                      alert("No has eliminado la entrada");
                                    }
                                  }
                                </script>
  #4 (permalink)  
Antiguo 09/07/2017, 10:09
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: Error en confirm con foreach

esta linea
window.location.href="eliminarentrada.php?id"+X;

por esta
window.location.href="eliminarentrada.php?id="+X;
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 09/07/2017, 10:18
 
Fecha de Ingreso: marzo-2016
Ubicación: Madrid
Mensajes: 31
Antigüedad: 8 años, 1 mes
Puntos: 1
Respuesta: Error en confirm con foreach

Solucionado. Funciona perfectamente.
¡Muchas gracias!

Etiquetas: confirm, foreach, javascript+php
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 23:38.