Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/02/2007, 15:09
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: duda con llamada a javascript desde php

Lo que tenés que comprender es que Javascript se ejecuta en el navegador, y PHP en el servidor.

en tu primer ejemplo, suponiendo que lo que pegaste fuera el código completo de la página, lo que sucede es que el servidor interpreta TODO el php, y el navegador recibe únicamente:

Código:
<script language="JavaScript" type="text/javascript"> 
function confirm_duplicatedata() { 
    var agree=confirm("You already have [valor de $rows] tests from object:    [valor de $object_id]. Click on Accept to continue with your insert."); 
    if (agree==true){ 
        return true ; 
    }     
    else { 
         window.location = "../../../insert.php"; 
         return false; 
    } 
} 
confirm_duplicatedata(); 
</script>
¿se entiende?

Es por eso que no importa lo que se seleccione en el confirm() porque el php ya fue ejecutado completamente.

Si lo que querés es tener que confirmar en una situación de error, lo ideal (y más simple) es recargar la misma página, sin hacer cambios, e indicando el error que sucede.
Por ejemplo, le ponés un enlace tipo "haga clic aquí para ingresar los datos de todas formas" que lleve a una url tipo tupagina.php?confirmado=1

Entonces, cuando procesás los datos, si $_GET['confirmado'] existe y vale 1, quiere decir que el usuario ya confirmó el ingreso de datos.

En resumen la estructura sería:

1.- página de ingreso de datos
2.- página de procesamiento
----- a.- si se necesita confirmación
----------- A.- si existe y vale 1 $_GET['confirmado'] (o la variable que vayas a usar) se continúa guardando
----------- B.- si no existe o no vale 1, se vuelve al punto 1 y se muestra el enlace que te comento antes
----- b.- si no se necesita, se continúa

Las páginas de los puntos 1 y 2 pueden ser la misma.


Si no querés dejar de usar el javascript, podés en vez de recargar al punto 1 en 2.a.B, mostrar una página que tenga el confirm, pero la forma correcta de usarlo es que:
si se cancela -> redirige a la página original
si se acepta -> vuelve a la página de procesamiento, con alguna variable que indique que se confirmó (igual que con el enlace)


Espero haberme sabido explicar y que me entiendas.

Saludos.