Foros del Web » Programando para Internet » PHP »

No me funciona la condicion if

Estas en el tema de No me funciona la condicion if en el foro de PHP en Foros del Web. Buenas a todos, Tengo una condicion if un tanto revelde, algo tengo mal, pero no consigo ver que es, a ver si me podeis ayudar. ...
  #1 (permalink)  
Antiguo 05/06/2007, 15:20
 
Fecha de Ingreso: diciembre-2006
Mensajes: 50
Antigüedad: 17 años, 4 meses
Puntos: 1
No me funciona la condicion if

Buenas a todos,
Tengo una condicion if un tanto revelde, algo tengo mal, pero no consigo ver que es, a ver si me podeis ayudar.
El funcionamiento es el siguiente:

el script php llama a una funcion javascript que hace una pregunta mediante un confirm, la funcion retorna true o false y ese valor se recoge en una variable que la paso a php para preguntar por su valor en una condicion if, pero el problema es que siempre me entra por el if en lugar de por el else.
e probado a mostrar por pantalla el valor de la variable y es el correcto, pero el if no hace caso.

Código:
<html> 
 <body>
  <script type="text/javascript">	
    function eliminar_cliente(){
       if(confirm("¿SEGURO QUE DESEA ELIMINAR ESTE CLIENTE?")) 		
	return true;
       else
	return false;
    }
   </script>
<?php 
 echo '<script type="text/javascript">var result = eliminar_cliente();</script>';
 $resultado = "<script>document.write(result)</script>";
 echo "Valor devuelto por funcion: ".$resultado;
 if ($resultado == true)
 {	
    echo '<script type="text/javascript">alert("VERDADERO");</script>';
    echo '\CLIENTE INSERTADO';
 }
 else
 {
    echo '<script type="text/javascript">alert("FALSO");</script>';
    echo '\CLIENTE BORRADO';
 }
?>
</body> 
</html>
MUCHAS GRACIAS.
  #2 (permalink)  
Antiguo 05/06/2007, 15:31
Avatar de gerson  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 481
Antigüedad: 19 años, 2 meses
Puntos: 4
Re: No me funciona la condicion if

Hola alhernandez7, pues el problema es php y javascript no pueden compartir variables simultaneamente puesto ambos lenguajes se ejecutan en diferentes sitios y en diferentes tiempos, pero no por esto es imposible combinarlos; si necesitas hacer que ambos trabajen de forma simultanea (por asi desirlo) tendrias q ver todo lo referente a AJAX.

saludos
__________________

  #3 (permalink)  
Antiguo 05/06/2007, 16:18
Avatar de b3nj4  
Fecha de Ingreso: febrero-2002
Mensajes: 168
Antigüedad: 22 años, 2 meses
Puntos: 3
Re: No me funciona la condicion if

PHP se ejecuta en el servidor, Javascript en el cliente.

Asi que la programacion que has puesto en PHP se ejecuta antes de que el cliente vea nada, y por eso no funciona.
__________________
¿Quieres programas de diseño web en PortalProgramas?
  #4 (permalink)  
Antiguo 05/06/2007, 20:29
 
Fecha de Ingreso: marzo-2007
Mensajes: 9
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: No me funciona la condicion if

como dice benja es asi... tienes que leer un poco de ajax
  #5 (permalink)  
Antiguo 08/06/2007, 03:46
 
Fecha de Ingreso: diciembre-2006
Mensajes: 50
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: No me funciona la condicion if

Bueno, gracias por contestar.
He estado leyendo un manual de Ajax y varios ejemplos, el concepto lo entiendo, pero es bastante complicado, e probado a meter el codigo necesario pero me da fallos.
De todas formas, para lo que yo quiero hacer no creo que sea necesario liarme tanto. pero mi principal problema es que necesito un popup como el confirm de javascript pero en php, no se si existe. Si se puede hacer con php, solucionaria mi problema, si no tendria que seguir intentando lo del Ajax, aunque me parece un poco absurdo ya que requiere muchas lineas de codigo.

Lo unico que necesito es que cuando aprieto a un boton se elimine el cliente seleccionado, que esto ya lo tengo hecho, pero quiero sacar un popup que pregunte si realmente desea eliminar el cliente y si la respuesta es true se elimina , sino pues no.

Espero que se pueda hacer con php.

Muchas gracias.
  #6 (permalink)  
Antiguo 08/06/2007, 07:55
Avatar de HMSJUAN  
Fecha de Ingreso: febrero-2007
Mensajes: 54
Antigüedad: 17 años, 2 meses
Puntos: 1
De acuerdo Re: No me funciona la condicion if

Un Novato Responde

Saludos VAmos A Ver Como esto Funciona..
Tu Variable Result De js te retorna un valor voleano (True O False) Esto esta bien hasta ahi. Tu problema esta con la variable resultado de PHP, cuando esta lo recibe lo recibe como un string, y al momento de preguntar
If $reultado==true.... ....... Es como si preguntaras si esta variable existe no si su valor es true.....
Por lo tanto vamos a ´ponerlo de esta forma

(If $reultado=="true" )

Creo Que esta solucionado
Código PHP:
<html> 
 <body>
  <script type="text/javascript">    
    function eliminar_cliente(){
    
       if (confirm("¿SEGURO QUE DESEA ELIMINAR ESTE CLIENTE?"))
       return true;
       else
    return false;
    }
   </script>
<?php 
 
echo "<script type=text/javascript>var result = eliminar_cliente();</script>";
 
$resultado "<script>document.write(result)</script>";
 echo 
"Valor devuelto por funcion: ".$resultado;
// Aqui esta el cambio que debes hacer
 
if ($resultado == "true")
 {    
    echo 
'<script type="text/javascript">alert("VERDADERO");</script>';
    echo 
'\CLIENTE INSERTADO';
 }
 else
 {
    echo 
'<script type="text/javascript">alert("FALSO");</script>';
    echo 
'\CLIENTE BORRADO';
 }
?>
</body> 
</html>
No se si te explique bien lo que pasaba....
tomate esta pastilla y si tu problema persiste hay que ver un especialista
  #7 (permalink)  
Antiguo 08/06/2007, 08:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: No me funciona la condicion if

HMSJUAN:

No es posible pasar una variable de javascript asi de esa forma, lo mas cercano es mandandolo via GET asi:
Código PHP:
<html> 
 <body>
  <script type="text/javascript">    
    function eliminar_cliente(idCliente){
       var url = "<?php echo $_SERVER['PHP_SELF']; ?>";
       if (confirm("¿SEGURO QUE DESEA ELIMINAR ESTE CLIENTE?")) {
           window.location = url + "?idCliente=" + idCliente + "&confirma=1";
       } else {
           window.location = url + "?idCliente=" + idCliente + "&confirma=0";
       }
    }
   </script>
<?php 
 $resultado 
$_GET['confirma'];
 if (
$resultado == "1")
 {    
    echo 
'<script type="text/javascript">alert("VERDADERO");</script>';
    echo 
'\CLIENTE INSERTADO';
 }
 else
 {
    echo 
'<script type="text/javascript">alert("FALSO");</script>';
    echo 
'\CLIENTE BORRADO';
 }
?>
</body> 
</html>
  #8 (permalink)  
Antiguo 08/06/2007, 08:08
Avatar de HMSJUAN  
Fecha de Ingreso: febrero-2007
Mensajes: 54
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: No me funciona la condicion if

Ok tu forma de deja de ser valida... Pero acabo de probar el codigo y a mi me funciona..... Veremos a ver que dice alhernandez
  #9 (permalink)  
Antiguo 08/06/2007, 08:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: No me funciona la condicion if

HSJUAN:
Cita:
Iniciado por gerson Ver Mensaje
Hola alhernandez7, pues el problema es php y javascript no pueden compartir variables simultaneamente puesto ambos lenguajes se ejecutan en diferentes sitios y en diferentes tiempos, pero no por esto es imposible combinarlos; si necesitas hacer que ambos trabajen de forma simultanea (por asi desirlo) tendrias q ver todo lo referente a AJAX.

saludos
Lo que tu propones simplemente no es posible, no hay forma de regresar una variable desde Javascript como lo estas proponiendo, esta la forma que lo puse yo, o en su caso desde AJAX.

Saludos.
  #10 (permalink)  
Antiguo 08/06/2007, 08:28
Avatar de HMSJUAN  
Fecha de Ingreso: febrero-2007
Mensajes: 54
Antigüedad: 17 años, 2 meses
Puntos: 1
De acuerdo Re: No me funciona la condicion if

Joven no entremos en controvercias no se si me equivoco peroacavo de provar esto y funciona para lo que el quiere. Es cierto no se puede como tu dices...
preo hay una forma de asignarles estos valores por ej....
$resultado = "<script>document.write(result)</script>";

en ves de imprimirce resul de java se asignara a a la variable result de php como un estring.....


Por Favor Has tu la prueba Y veras.....



Código PHP:
<html>  
 <body> 
  <script type="text/javascript">     
    function eliminar_cliente(){ 
     
       if (confirm("¿SEGURO QUE DESEA ELIMINAR ESTE CLIENTE?")) 
       return true; 
       else 
    return false; 
    } 
   </script> 
<?php  
 
echo "<script type=text/javascript>var result = eliminar_cliente();</script>"
 
$resultado "<script>document.write(result)</script>"
 echo 
"Valor devuelto por funcion: ".$resultado
// Aqui esta el cambio que debes hacer 
 
if ($resultado == "true"
 {     
    echo 
'<script type="text/javascript">alert("VERDADERO");</script>'
    echo 
'\CLIENTE INSERTADO'
 } 
 else 
 { 
    echo 
'<script type="text/javascript">alert("FALSO");</script>'
    echo 
'\CLIENTE BORRADO'
 } 
?> 
</body>  
</html>
  #11 (permalink)  
Antiguo 08/06/2007, 08:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: No me funciona la condicion if

Amigo, entiende tu estas viendo la interpretacion del codigo, si te fijas (viendo el codigo fuente cuando se genera la pagina), podras ver que lo que dice es:
Código:
Valor devuelto por funcion: true
Pero si ves el codigo fuente dice:
Código:
Valor devuelto por funcion: <script>document.write(result)</script>
Esto es porque PHP y Javascript se ejecutan en ambitos SEPARADOS, primero el parser PHP ejecuta la pagina, y genera el codigo HTML resultante, posteriormente el HTML resultante se envia al explorador web, donde si tiene scripts Javascript son ejecutados en el explorador (pero para este paso PHP ya termino de procesar y enviar la pagina).

Es por eso que no es posible hacer la forma que tu lo haces, $resultado NUNCA va a tener true o false, va a tener el valor primeramente asignado que es <script>document.write(result)</script>.

Saludos y te invito a que leas sobre la arquitectura cliente/servidor.
  #12 (permalink)  
Antiguo 08/06/2007, 08:46
Avatar de HMSJUAN  
Fecha de Ingreso: febrero-2007
Mensajes: 54
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: No me funciona la condicion if

Hazme Un Favor Prueba El Codigo que puse aqui Y Dime Que resultados obtienes.


Soy Un novato un poco obstinado.... Oye Please Yo lo probe en mi pc Y Me Resulto......... Hazlo por favor...

please please............
  #13 (permalink)  
Antiguo 08/06/2007, 08:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: No me funciona la condicion if

Si ya lo probe, y te digo NO FUNCIONA, pruebalo de nuevo en tu PC, dale boton derecho y dale Ver codigo de fuente, ve que valor es el que te dice cuando dice:
Valor devuelto por la funcion:

Veras que aunque en la pagina se imprime true o false, es porque es el resultado de la evaluacion HTML, ya que en el codigo fuente dice <script>document.write(result)</script>, esa sentencia de javascript indica que escriba en el documento la variable result.

Por lo cual PHP jamas va a recibir para PHP $result es igual a "<script>document.write(result)</script>".

Como te comente, te invito a que leas sobre la comunicacion cliente/servidor para que entiendas como PHP se procesa en el servidor y javascript en el cliente, y por ende porque NO es posible que se comuniquen de la forma que tu lo propones.

Saludos.
  #14 (permalink)  
Antiguo 08/06/2007, 09:02
Avatar de HMSJUAN  
Fecha de Ingreso: febrero-2007
Mensajes: 54
Antigüedad: 17 años, 2 meses
Puntos: 1
Re: No me funciona la condicion if

Lo lamento haber echo esto estava confundido


Gracias..........
  #15 (permalink)  
Antiguo 08/06/2007, 10:14
 
Fecha de Ingreso: diciembre-2006
Mensajes: 50
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: No me funciona la condicion if

Bueno tranquilos, lo del codigo que puse yo originalmente, es incorrecto, no se puede hacer asi, eso ya estaba fuera de dudas. Es cierto que por pantalla sale bien , pero no es correcto aunque parezca que si.
Mi pregunta es que unicamente necesito javascript por sacar por pantalla un confirm, al no poder relacionar el javascript con php en ese momento puesto que se ejecuta antes el codigo php que el javascript, a no ser con la ayuda de Ajax, se me ocurrió la opcion de hacer un tipo de confirm o popup con php, mi pregunta era que si esto es posible o solo se puede hacer con javascript.
Mediante Ajax se pueden hacer muchas cosas, pero para lo que yo quiero es complicarse demasiado, aunque si no hay mas remedio estudiaré a fondo Ajax.

Muchas gracias.
  #16 (permalink)  
Antiguo 08/06/2007, 11:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: No me funciona la condicion if

Prueba esta version:
Código PHP:
<html> 
 <body>
  <script type="text/javascript">    
    function eliminar_cliente(idCliente){
       var url = "<?php echo $_SERVER['PHP_SELF']; ?>";
       if (confirm("¿SEGURO QUE DESEA ELIMINAR ESTE CLIENTE?")) {
           window.location = url + "?idCliente=" + idCliente + "&confirma=1";
       } else {
           window.location = url + "?idCliente=" + idCliente + "&confirma=0";
       }
    }
   </script>
   <input type="button" name="test" value="Prueba" onclick="eliminarCliente(1);" />
<?php 
 $resultado 
$_GET['confirma'];
 
$cliente $_GET['idCliente'];
 if (
$resultado == "1")
 {    
    echo 
'<script type="text/javascript">alert("VERDADERO");</script>';
    echo 
'\CLIENTE INSERTADO';
    echo 
"Cliente: " $cliente;
 }
 else
 {
    echo 
'<script type="text/javascript">alert("FALSO");</script>';
    echo 
'\CLIENTE BORRADO';
    echo 
"Cliente: " $cliente;
 }
?>
</body> 
</html>
No necesitas ajax, y puedes ver la comunicacion PHP/Javascript.
  #17 (permalink)  
Antiguo 11/06/2007, 13:50
 
Fecha de Ingreso: diciembre-2006
Mensajes: 50
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: No me funciona la condicion if

Bueno GatorV, gracias pero no me funciona, pasa lo mismo que en mi codigo, primero se ejecuta el php y luego el javascript, a si que tampoco me sirve.
Estoy intentando buscar la manera de crear un popup con php. Si no lo consigo intentaré crear el codigo mediante dreamweaver, que creo que te permite hacer popups facilmete.
Gracias de todas formas.
  #18 (permalink)  
Antiguo 11/06/2007, 14:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: No me funciona la condicion if

Que es lo que estas tratando de hacer?
  #19 (permalink)  
Antiguo 11/06/2007, 14:37
 
Fecha de Ingreso: diciembre-2006
Mensajes: 50
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: No me funciona la condicion if

Mi intencion es hacer bajas de clientes.
una vez seleccionado el cliente a borrar pasa a una pantalla en la que se muestran los datos personales del cliente y un boton de borrar, cuando pulsas este boton salta un mensaje diciendo "ESTAS SEGURO DE BORRAR ESTE CLIENTE?" y si la respuesta es si , borrarlo y si no, cancelar el proceso de borrado.
El codigo simplificado es el del primer mensaje, e probado muchas cosas pero no doy con la solucion.

Gracias
  #20 (permalink)  
Antiguo 11/06/2007, 14:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: No me funciona la condicion if

mmm pues es bastante sencillo ej:
Código PHP:
<?php
$id 
$_GET['id'];

// Buscar todos los datos del cliente
?>
<form action="tuPaginadeBorrado.php" method="post">
<input type="hidden" name="id" value="<?php echo $id?>" />
Estas seguro de borrar al cliente <?php echo $cliente?>?
<input type="submit" name="borrar" value="Borrar" onclick="return confirmarBorrado();" /><input type="button" name="cancelar" value="Cancelar" onclick="window.history.go(-1);" />
</form>

<script type="text/javascript">
function confirmarBorrado() {
    if( confirm( "Estas seguro que deseas borrar al cliente?" ) ) {
        return true;
    } else {
        window.history.go(-1);
    }
}
</script>
Ya en tu pagina de borrado ya solo recuperas el ID y listo.

Saludos.
  #21 (permalink)  
Antiguo 12/06/2007, 10:48
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: No me funciona la condicion if

te recomiendo el siguiente enlace, pero es mejor que incurrar en el mundo de ajax , puesto a que el siguiente link , las vriables enviadas por php son visibles en el codigo fuente. muy peligroso si haces consultas importantes (users, passs)

http://www.forosdelweb.com/f18/variable-javascript-php-456890/
__________________
Album Fotos
Blog MisApuntes
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 07:19.