Foros del Web » Programando para Internet » PHP »

Problemas para tomar los valores

Estas en el tema de Problemas para tomar los valores en el foro de PHP en Foros del Web. El problema que tengo es que tengo 2 funciones en javascript y las cuales tiene una variable en comun y al ejecutarlar cualquiera de ellas, ...
  #1 (permalink)  
Antiguo 03/08/2012, 07:37
 
Fecha de Ingreso: octubre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 3
Problemas para tomar los valores

El problema que tengo es que tengo 2 funciones en javascript y las cuales tiene una variable en comun y al ejecutarlar cualquiera de ellas, toma el valor de la segunda. Mi consulta es como es posible hacer que al ejecutar la primera funcion guarde y muestre el valor de la primera, y al ejecutar la segunda funcion guarde y muestre el valor de la segunda?

Aca les dejo el enlace del codigo (cortito) por si lo quieren descargar
http://dl.dropbox.com/u/351999/funciones-js-php.zip

Son dos archivos

Contenido del archivo1.php

Código PHP:
<?php 
session_start
();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> Insert title here</title >
<script type="text/javascript">
function primerafuncion(url) {
    <?php 
        $_SESSION
["demo"] = "Este es el valor de la primera funcion llamada primerafuncion";
        
$_SESSION["desde_archivo1"] = "SI";
    
?>
    alert("ejecutando funcion primerafuncion");
    window.location=url;
}
function segundafuncion(url) {
    <?php 
        $_SESSION
["demo"] = "ESTE ES EL VALOR SEGUNDA FUNCION LLAMADA segundafuncion";
        
$_SESSION["desde_archivo1"] = "SI";
    
?>
    alert("ejecutando funcion segundafuncion");
    window.location=url;
}
</script>
</head>
<body>
<a href="javascript:void(0)" onclick="primerafuncion('archivo2.php');">Ejecutar primerafuncion</a><br />
<a href="javascript:void(0)" onclick="segundafuncion('archivo2.php');">Ejecutar segundafuncion</a>
</body>
</html>
Contenido del archivo2.php

Código PHP:
<?php 
session_start
();
if (isset(
$_SESSION["demo"])){
    
$demo $_SESSION["demo"];
}else{
    
$demo false;
}
if (isset(
$_SESSION["desde_archivo1"])){
    
$desde_archivo1 $_SESSION["desde_archivo1"];
}else{
    
$desde_archivo1 false;
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> Archivo 2</title >
</head>
<body>
<h1>Muestro las variables de sesion</h1>
<?php 
echo "<br /> - La variable \$demo tiene el siguiente valor >>";
    echo 
$demo;
    echo 
"<br /> - Y la variable \$desde_archivo1 >>";
    echo 
$desde_archivo1;
    unset(
$_SESSION["demo"]);
    unset(
$_SESSION["desde_archivo1"]);
?>
</body>
</html>
  #2 (permalink)  
Antiguo 03/08/2012, 09:01
Avatar de Karmac  
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 12 años, 8 meses
Puntos: 34
Respuesta: Problemas para tomar los valores

Que yo sepa estas sobreescribiendo la variable. Prueba a cambiar de nombre o utilizar un array:
$_SESSION['demo'][1] = 'funcion1';
$_SESSION['demo'][2] = 'funcion2';
Luego lo compruebas con un if

Saludos.
  #3 (permalink)  
Antiguo 03/08/2012, 19:32
 
Fecha de Ingreso: octubre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 3
Respuesta: Problemas para tomar los valores

Gracias amigo por responder. Pero me encantaria enterder mas, que sucede con este codigo, cosas tales como;
  • ¿Como es posible que apesar de que la funcion no es llamada ejecute lo que tiene adentro?
  • ¿Pero como lo puedo hacer para que esa variable no la sobre escriba?
  • ¿es un tema de ambitos de las variables?
  #4 (permalink)  
Antiguo 04/08/2012, 02:02
Avatar de Karmac  
Fecha de Ingreso: agosto-2011
Ubicación: Bilbao
Mensajes: 196
Antigüedad: 12 años, 8 meses
Puntos: 34
Respuesta: Problemas para tomar los valores

La variable se va a sobrescribir si le asignas otros valor, y la función se ejecuta porque $_SESSION['demo'] está siempre definido.

Mira usa mejor a ver si te sirve:
En vez de:
<a href="javascript:void(0)" onclick="primerafuncion('archivo2.php');">Ejecutar primerafuncion</a>

Pones:
<a href="javascript:void(0)" onclick="primerafuncion('archivo2.php?func=1');">E jecutar primerafuncion</a>

Y luego en PHP compruebas la variable para ejecutar una cosa u otra:
if ( $_GET['func'] == 1 ) {*}

Saludos.
  #5 (permalink)  
Antiguo 04/08/2012, 12:02
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problemas para tomar los valores

Amigo, debes leer mas sobre PHP y Javascript, lo que pretendes hacer esta completamente mal, Javascript no interactua de esa forma con PHP, al ejecutar tu archivo PHP desecha todo el código HTML, y unicamente ejecuta el código PHP, para que sea mas facil de entender, cuando ejecutas archivo1.php PHP solo ve los siguiente:
Código PHP:
Ver original
  1. <?php  
  2.  
  3.         $_SESSION["demo"] = "Este es el valor de la primera funcion llamada primerafuncion";
  4.         $_SESSION["desde_archivo1"] = "SI";
  5.         $_SESSION["demo"] = "ESTE ES EL VALOR SEGUNDA FUNCION LLAMADA segundafuncion";
  6.         $_SESSION["desde_archivo1"] = "SI";
  7. ?>

Todo el código HTML PHP lo ignora por completo, para poder hacer lo que pretendes será necesario 1 de dos

a) implementar ajax para llamar a un archivo PHP
b) reedireccionar a un archivo php

En cualquiera de las dos será necesario enviar una variable GET para que sepas cual función es la que ha hecho la petición y saber que valor guardar en la variable de sesión
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #6 (permalink)  
Antiguo 10/08/2012, 08:25
 
Fecha de Ingreso: octubre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 3
Respuesta: Problemas para tomar los valores

Cita:
Iniciado por Karmac Ver Mensaje
La variable se va a sobrescribir si le asignas otros valor, y la función se ejecuta porque $_SESSION['demo'] está siempre definido.

Mira usa mejor a ver si te sirve:
En vez de:
<a href="javascript:void(0)" onclick="primerafuncion('archivo2.php');">Ejecutar primerafuncion</a>

Pones:
<a href="javascript:void(0)" onclick="primerafuncion('archivo2.php?func=1');">E jecutar primerafuncion</a>

Y luego en PHP compruebas la variable para ejecutar una cosa u otra:
if ( $_GET['func'] == 1 ) {*}

Saludos.
Gracias amigo, lo probare, gracias.

Cita:
Iniciado por Nemutagk Ver Mensaje
Amigo, debes leer mas sobre PHP y Javascript, lo que pretendes hacer esta completamente mal, Javascript no interactua de esa forma con PHP, al ejecutar tu archivo PHP desecha todo el código HTML, y unicamente ejecuta el código PHP, para que sea mas facil de entender, cuando ejecutas archivo1.php PHP solo ve los siguiente:
Código PHP:
Ver original
  1. <?php  
  2.  
  3.         $_SESSION["demo"] = "Este es el valor de la primera funcion llamada primerafuncion";
  4.         $_SESSION["desde_archivo1"] = "SI";
  5.         $_SESSION["demo"] = "ESTE ES EL VALOR SEGUNDA FUNCION LLAMADA segundafuncion";
  6.         $_SESSION["desde_archivo1"] = "SI";
  7. ?>

Todo el código HTML PHP lo ignora por completo, para poder hacer lo que pretendes será necesario 1 de dos

a) implementar ajax para llamar a un archivo PHP
b) reedireccionar a un archivo php

En cualquiera de las dos será necesario enviar una variable GET para que sepas cual función es la que ha hecho la petición y saber que valor guardar en la variable de sesión
Excelente respuesta, voy a buscar informacion sobre interaccion entre javascript y php, aunque si tienes alguna referencia a algun articulo o pagina en donde se explique esto, seria genial.

Etiquetas: html, tomar, variables
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 11:38.