Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   vinculo que no deberia hacer nada...... (https://www.clubdelphi.com/foros/showthread.php?t=43769)

oracle 19-05-2007 19:23:06

vinculo que no deberia hacer nada......
 
hola amigos, tengo el siguiente problema:

Estoy generando una tabla con diferentes imagenes con vinculos (eliminar, modificar, etc) que gestionan los diferentes registros de la tabla....El asunto es que deseo que cuando seleccionen en el boton (imagen) eliminar muestre una ventana de confirmacion, he buscado y encontre que debe ser mas o menos asi:

Código PHP:

..."<a onClick=javascript:confirmar() href=../pages/Eliminarusuario.php?idusuario=".$cons[user]."><img src=../Images/ElimUsuario.png border=0 alt='Elimina el usuario y todos los registros asociados a el'></a>"... 

La funcion confirmar es la siguiente:

Código:

<script language="JavaScript" type="text/javascript">
        function confirmar()
        {
            var statusConfirm = confirm("¿Realmente desea eliminar este usuario?");
            if (statusConfirm == true)
            return true;
            else
              return false;
        }
    </script>

Y el asunto es que muestra muy bien el dialogo de ocnfirmacion, pero tanto si lo doy en OK como en Cancelar me elimina el registro igualmente. Quisiera saber donde esta el detalle si lo hay para resolver esto.......

Saludos

lucasarts_18 19-05-2007 20:11:53

Cita:

Empezado por oracle
Y el asunto es que muestra muy bien el dialogo de ocnfirmacion, pero tanto si lo doy en OK como en Cancelar me elimina el registro igualmente. Quisiera saber donde esta el detalle si lo hay para resolver esto.......

Pueden ser varias opciones, te day algunas pistas..
  • El form de tu formulario está apuntando al archivo php que hace la eliminación.
  • En vez de retornar true o false creo que en la función deberías hacer el action del formulario.
  • En el javascript de la imagen al parecer le falta algo para determinar una u otra acción.
A mí sucedió hace algunos días lo mismo que tu, no recuerdo como lo solucioné, y por ahora no tengo las fuentes como para poder ayudarte.

Pero lo que estoy seguro es que no uso href para direccionarlo a otra página, sino que lo direcciono en la misma función Javascript a traves de:

Código PHP:

<script language="JavaScript" type="text/javascript"
function 
confirmar() 

var 
statusConfirm confirm("¿Realmente desea eliminar este usuario?"); 
if (
statusConfirm == true
Form1.action 'elimina.php';
else
return 
false;

</script> 

Hasta Luego .-

oracle 19-05-2007 20:46:53

No tengo formulario en la pagina
 
No tengo dicho formulario en la pagina, es simplemente una tabla cuyos valores voy imprimiendo con codigo php.

La tarea del action del form en este caso lo esta asumiendo el href del vinculo. Claro. aun asi puede ser lo que me estas diciendo, pero en este caso como hago para referirme al "vinculo" dentro de la funcion javascript??

He tratado tambien de pasarle el parametro $cons[user] que originalmente utilizo en el href del vinculo a la funcion javascript y desde alli mismo redireccionar, pero tampoco nada, claro, acepto sugerencias...

Saludos

dec 19-05-2007 20:50:56

Hola,

Tal vez podamos usar el "return", pues, aunque habrá que probarlo en diferentes navegadores, creo que algo así es lo que uno podría esperar del navegador:

Código:

<a onclick="return confirm('Seguro?');"
 href="http://www.clubdelphi.com">ClubDelphi.com</a>

Es decir, "Confirma que el usuario quiere abrir el enlace". Si se confirma, "return value True", y el flujo "sigue" y el enlace es abierto. Si no se confirma "return vale False"... y ahí acaba la historia. :)

oracle 20-05-2007 00:04:38

Hola dec, también había probado con eso. Fijate que es casi el mismo principio de la otra via pero mucho mas corto, pero hace exactamente lo mismo. Manda el navegador para la pagina del href del vinculo. Creo que voy a meter la tabla dentro de un form y probar la via de nuestro amigo lucasarts_18, ya les dire entonces..............

dec 20-05-2007 00:21:11

Hola,

Es curioso... yo acabo de probarlo en Internet Explorer 7, Opera 9 y Firefox 2 y en estos tres navegadores funciona como se espera. ¿Probaste sólo el código que copié? A ver si lo haz mezclado con "algo" y por eso no va bien...

Código:

<a onclick="return confirm('Seguro?');"
 href="http://www.clubdelphi.com">ClubDelphi.com</a>

Copia ese código en un nuevo archivo y guarda este como documento HTML (.html)... debería funcionar... la lógica es la que antes he dicho: El "OnClick" del enlace se ejecuta antes que el propio enlace... es decir, antes de cargar el "href" se ejecuta el "OnClick".

Pues bien. Si este evento retorna "False", enlaces no se carga el enlace. Si retorna "True" se carga el enlace. Si quieres utilizar una función (porque tengas que comprobar alguna que otra cosa) puedes hacerlo también, pero, no habrás de olvidar el "return" en el evento "Onclick", de modo que el resultado de la función sea "True" o "False" y el efecto sea el mencionado arriba.

Nota: En Internet Explorer 7, curiosamente, te aparece una advertencia de seguridad... con sólo el código anterior... que ya es ser suspicaz, digo yo, y, si no permites la ejecución del contenido bloqueado... se cargará el enlace de marras si el usario lo pulsa. Si desbloqueas el contenido entonces todo va como se espera.

Ya digo, lo he probado en Internet Explorer 7, Opera 9 y Firefox 2.

oracle 20-05-2007 00:37:35

Hola, si, o he probado cuando lo posteaste y efectivamente me funciono:

Código PHP:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><!-- InstanceBegin template="/Templates/ultimo.dwt" codeOutsideHTMLIsLocked="false" -->
<
head>

<
title>Gestion de Datos del Usuario</title>
</
body>
 <
a onclick="return confirm('Seguro?');" 
href="http://www.clubdelphi.com">ClubDelphi.com</a>

</
body>

</
html


Lo he vuelto a probar en mi codigo y nada. Pero en fin no se si se han fijado en que el vinculo lo imprimo con un "echo" de php, y me parece que el problema es que cuando pongo <a onclick=return confirm('Seguro?').... el no asume el confirm().... dentro del onClick. probe anidarlo dentro de parentesis todo y tampoco. Ahora, le dejo solo el onclick=confirm('Seguro?') sin el return y muestra la ventana de confirmacion pero igualmente va para la siguiente pagina con cualquiera de las dos opciones. Fijate que en cualquier caso la diferencia con el tuyo son las comillas del onClick, ya que como te he dicho lo estoy imprimiendo con "echo".........


Saludos

dec 20-05-2007 00:53:55

Hola,

Bueno. Pero ahora tenemos un problema con las comillas o lo que sea: pero el caso es que funcionar ha de funcionar, es cuestión de encontrarle las vueltas al asunto, de modo que el código se imprima en condiciones:

Código PHP:


echo'
  <a href="http://www.clubdelphi.com/" 
   onclick="return confirm(\'¿Seguro que quieres continuar?\')">ClubDelphi</a>
'


Fíjate que "escapo" las comillas que contienen la cadena del mensaje para "confirm". Esto lo hago para que dichas comillas no interfieran con las del propio "echo". Empero, las comillas dobles, las del "href" y las del "onclick" no interfieren en absoluto y pueden dejarse tal cual (y aun deben, puesto que en estos casos es menester, para cumplir con el estándar XHTML, utilizar comillas dobles y no simples).

oracle 20-05-2007 01:25:56

Correcto!!!
 
Exacto Dec, era eso mismo. No sabia que se podían anidar de esa forma las comillas, siempre pense que la doble tenía cierta prioridad sobre la comilla simple. Muy ingenioso lo de los escapes.....y un agradecido saludo.....

dec 20-05-2007 01:39:33

Hola,

Cita:

Empezado por oracle
(...) siempre pense que la doble tenía cierta prioridad sobre la comilla simple.

Bueno. En realidad ocurre que el contenido de las comillas dobles es "procesado" por PHP, y las variables que se encuentren serán "expandidas". El contenido entre comillas simples no se procesa, sino que es "retornado" tal cual.

Código PHP:

$variable 'sus usuarios';

echo 
"El valor de $$variable está en $variable"

Imprime la cadena: El valor de $clubdelphi está en sus usuarios

Código PHP:

$variable 'sus usuarios';

echo 
'El valor de $$variable está en $variable'

Imprime la cadena: El valor de $$variable está en $variable

Pero, sí, puedes anidar comillas simples y dobles sin problemas... y a veces tienes que hacerlo porque no quede más remedio, o porque el resultado esperado lo haga necesario. :)

PD. Revisemos en todo caso el manual de PHP sobre "echo".

oracle 20-05-2007 02:31:38

Muy buenos los ejemplos del manual..........:D


La franja horaria es GMT +2. Ahora son las 19:19:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi