Foros del Web » Programando para Internet » PHP »

PHP con JavaScript

Estas en el tema de PHP con JavaScript en el foro de PHP en Foros del Web. hola, mi consulta es como hacer para llamar una funcion javascript. se que esta consulta la hicieron varias veces pero yo hice lo que recomendaron ...
  #1 (permalink)  
Antiguo 14/05/2009, 07:07
 
Fecha de Ingreso: octubre-2008
Mensajes: 151
Antigüedad: 15 años, 6 meses
Puntos: 1
PHP con JavaScript

hola, mi consulta es como hacer para llamar una funcion javascript.
se que esta consulta la hicieron varias veces pero yo hice lo que recomendaron pero no me funciona les dejo el codigo:

Código PHP:
if(isset($_POST["btsubmit"]))
    { 
        if($tipopago == 1)
        {
//Estas son validaciones            
$importet = 0;
            $incompleto = 0;
            if(($_POST["efectivo"] != ''))
            {
            
                $importet = $importet + ($_POST["efectivo"]);    
                
            } 
            if($_POST["cheque"] != '')
            {
                $importet =  $importet + ($_POST["cheque"]);
                
                if($_POST["num_ch"] == '' || $_POST["banco_cheque"] == '-1')
                {
                    $incompleto = 1;
                }
            
            }
            if($_POST["tarjeta"] != '')
            {
                $importet =  $importet + ($_POST["tarjeta"]);
                if($_POST["seltarjeta"] == "-1")
                {
                    $incompleto = 1;
                }
            }
            if($incompleto == 0)
            {
                if($importet == $importe)
                {    
                echo "esta bien";        
                //aca pongo directamente la funcion pero no me la ejecuta
                echo "
                <script>
                document.getElementById('btsubmit').value = 'Enviando...';

          document.getElementById('btsubmit').disabled = true;
            
        window.open('comprobante.php?id=<?php echo $id?>', 'windowname1', 'width=400, height=400');
        document.form1.submit();
          return true;
                </script>
                ";
                //header("Location: actualiza_pagos.php?id=".$id."&efectivo=".$_POST["efectivo"]);
                }
                else
                {
                
                echo "<font color = 'red'>Hay una diferencia en el importe</font>";
                }
            }else
            {
            echo "<font color = 'red'>Hay campos incompletos </font>";
            }
        }
        else
        {
            echo '<script languaje="javascript">
                return checkSubmit();
                </script>';
            header("Location: actualiza_pagos.php?id=".$id."&compro=".$_POST["compro"]);
        }
    }
probe tmb llamar a la funcion en vez de ponerla pero nada :(.

desde ya muchas gracias

saludos
  #2 (permalink)  
Antiguo 14/05/2009, 07:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: PHP con JavaScript

Dependiendo de dónde está ese código, se ejecutará antes de cargar los elementos y producirá error. Debes usar el evento onload para modificar elementos del DOM.

P.S.: No puedes enviar una salida (echo) y a la vez tratar de redireccionar enviando una cabecera Location (header())
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 14/05/2009, 07:29
 
Fecha de Ingreso: octubre-2008
Mensajes: 151
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: PHP con JavaScript

Cita:
Iniciado por David el Grande Ver Mensaje
Dependiendo de dónde está ese código, se ejecutará antes de cargar los elementos y producirá error. Debes usar el evento onload para modificar elementos del DOM.

P.S.: No puedes enviar una salida (echo) y a la vez tratar de redireccionar enviando una cabecera Location (header())
vos decis que llame a la funcion con el evento onload en el form?

osea algo asi:
Código PHP:
<form id="form1" name="form1" method="post" action="carga_pago.php?id=<? echo $id?>"onload = "return checkSubmit();"  >
pero sigue sin funcionar :S.
  #4 (permalink)  
Antiguo 14/05/2009, 07:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: PHP con JavaScript

No, no de esa manera. El evento onload pertenece al documento (en el body), no al tag form.

Además, puedes usar directamente Javascript para asignarlo:
Código Javascript:
Ver original
  1. window.onload = funcion_a_ejecutar;
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 14/05/2009, 07:42
 
Fecha de Ingreso: octubre-2008
Mensajes: 151
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: PHP con JavaScript

Cita:
Iniciado por David el Grande Ver Mensaje
No, no de esa manera. El evento onload pertenece al documento (en el body), no al tag form.

Además, puedes usar directamente Javascript para asignarlo:
Código Javascript:
Ver original
  1. window.onload = funcion_a_ejecutar;
a ya entendi, pero asi me lo ejecute en cuanto cargo la pagina yo quiero hacer una validacion y si esta todo okey me lo ejecute..
  #6 (permalink)  
Antiguo 14/05/2009, 07:47
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: PHP con JavaScript

En ese caso puedes usar el evento onsubmit del formulario (suponiendo que la validación la haces con Javascript). Si la validación la haces con PHP tienes que usar el evento onload, pero sólo enviar esa parte si no pasa la validación.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 14/05/2009, 07:56
 
Fecha de Ingreso: octubre-2008
Mensajes: 151
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: PHP con JavaScript

Cita:
Iniciado por David el Grande Ver Mensaje
En ese caso puedes usar el evento onsubmit del formulario (suponiendo que la validación la haces con Javascript). Si la validación la haces con PHP tienes que usar el evento onload, pero sólo enviar esa parte si no pasa la validación.
la validacion la hago con php pero no entiendo lo que me decis, podes ponerme un ejemplo?

muchas gracias.
  #8 (permalink)  
Antiguo 14/05/2009, 08:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: PHP con JavaScript

Un ejemplo:
Código php:
Ver original
  1. if (no_pasa_validacion) {
  2.     echo '<script type="text/javascript">window.onload = invalido;</script>';
  3. }
Donde en la función invalido() en Javascript tengas el código que quieres ejecutar en caso de que no pase la validación.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 14/05/2009, 08:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 151
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: PHP con JavaScript

Cita:
Iniciado por David el Grande Ver Mensaje
Un ejemplo:
Código php:
Ver original
  1. if (no_pasa_validacion) {
  2.     echo '<script type="text/javascript">window.onload = invalido;</script>';
  3. }
Donde en la función invalido() en Javascript tengas el código que quieres ejecutar en caso de que no pase la validación.
muchas gracias ya me funciono :),

pero ahora tengo otro problema despues de ejectuar esa funcion quiero redireccionar la pagina pasando variables obtenidas del post, si lo hago con php no me ejecutra la funcion java y no estyo seguro com hacerlo en javascript hice algo asi pero me tira error:

Código HTML:
 function checkSubmit() {

          document.getElementById("btsubmit").value = "Enviando...";

          document.getElementById("btsubmit").disabled = true;
			
		window.open('comprobante.php?id=<?php echo $id; ?>', 'windowname1', 'width=400, height=400');
		
		<meta HTTP-EQUIV="Refresh" CONTENT="0;URL=actualiza_pagos.php?id="<?php echo $id; ?>"&efectivo="<?php $_POST["efectivo"] ?>>;
          return true;
  
      }
y aca la llamo despues de validar (esto anda):

Código PHP:
echo '<script type="text/javascript">window.onload = checkSubmit;</script>';
//header("Location: actualiza_pagos.php?id=".$id."&efectivo=".$_POST["efectivo"]); 
perdon por molestar con tantos inconvenientes..
  #10 (permalink)  
Antiguo 14/05/2009, 08:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: PHP con JavaScript

header() no puedes usar después de haber enviado una salida al navegador. El metatag debe estar en el head, y debes especificarle algunos segundos de retardo, de lo contrario va a redireccionar antes de que puedas ver el contenido.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 14/05/2009, 08:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 151
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: PHP con JavaScript

Cita:
Iniciado por David el Grande Ver Mensaje
header() no puedes usar después de haber enviado una salida al navegador. El metatag debe estar en el head, y debes especificarle algunos segundos de retardo, de lo contrario va a redireccionar antes de que puedas ver el contenido.
la funcion la puse en el head y con tiempo 1 pero sigue isn andar, el codigo esta asi:

Código PHP:
<?
ob_start
();
?>

<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
<? 
$id 
$_GET["id"];
//
?>
<script>
 
      function checkSubmit() {

          document.getElementById("btsubmit").value = "Enviando...";

          document.getElementById("btsubmit").disabled = true;
            
        window.open('comprobante.php?id=<?php echo $id?>', 'windowname1', 'width=400, height=400');
        
        <meta HTTP-EQUIV="Refresh" CONTENT="0;URL=actualiza_pagos.php?id="<?php echo $id?>"&efectivo="<?php echo $_POST["efectivo"]; ?>>;
          return true;
  
      }
//estas son funciones para ver o no algunos div
    function mostrar_cheques()
    {
        var cheque = document.getElementById("cheque").value;
        
        if(cheque == '')
        {
        
        document.getElementById("banco_cheque").style.visibility = 'hidden';
            document.getElementById("bancoemisor").style.visibility = 'hidden';
        document.getElementById("num_ch").style.visibility = 'hidden';
        document.getElementById("numero").style.visibility = 'hidden';
        }else
        {
        document.getElementById("banco_cheque").style.visibility = '';
        document.getElementById("bancoemisor").style.visibility = '';
        document.getElementById("numero").style.visibility = '';
        document.getElementById("num_ch").style.visibility = '';
        }
    }
    function mostrar_tarjeta()
    {
        var tarjeta = document.getElementById("tarjeta").value;
        
        if(tarjeta == '')
        {
        
        document.getElementById("divtarjeta").style.visibility = 'hidden';
        document.getElementById("cuotas").style.visibility = 'hidden';
        
        }else
        {
        document.getElementById("divtarjeta").style.visibility = '';
        document.getElementById("cuotas").style.visibility = '';
        }
    }


</script>
</head>
el problema puede ser que mezcle el php con meta tag?
  #12 (permalink)  
Antiguo 14/05/2009, 08:50
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: PHP con JavaScript

El metatag no debe estar dentro del tag script.

Otra cosa, estás capturando la salida (ob_start()), debes enviarla después de terminar el contenido.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 19:32.