Foros del Web » Programando para Internet » PHP »

Duda con (if: else: endif; )

Estas en el tema de Duda con (if: else: endif; ) en el foro de PHP en Foros del Web. Hola a todos, tengo una página con un formulario simple, en esa misma página valido los datos para avisar al usuario si algo ha ido ...
  #1 (permalink)  
Antiguo 12/09/2011, 16:45
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 12 años, 7 meses
Puntos: 30
Duda con (if: else: endif; )

Hola a todos, tengo una página con un formulario simple, en esa misma página valido los datos para avisar al usuario si algo ha ido mal, y si no pues lo guardo en la bd y muestro n mensaje, eso me funciona bien, me gustaria que, al terminar el form saliera otro, al montarlo me salta en dreamweaver una línea de error, en esa línea no hay error alguno en realidad, es como si detectara que hay alguna etiqueta o instrucción sin finalizar por alguna parte... creo que no estoy utilizando bien la estructura del if.

Resumo un poco el código (pseudocódigo mas bien jejejjeje):

1º compruebo si ya se han enviado datos del primer formulario y los guardo en variables, si todo ha ido bien creo una variable ($status = 1)

Entonces, si $status no tiene valor me muestra el primer formulario, si $status tiene valor, muestra el segundo.


Código PHP:

<?php if(!isset($status)): ?>
        
<form id="form1" action="index.php"  method="post">
  ..... formulario ......    
</form>
<?php else: ?>
<?php    
<?php if(!isset($status_2)): ?>

        
<form id="form2" action="index.php"  method="post">
  ..... segundo formulario ......    
</form>


<?php else: ?>
//aqui recojo las variables con los datos de los 2 formularios y los meto en la bd
              <h2>datos de los dos formularios guardados</h2>
<?php endif; ?>
<?php 
endif; ?>
Alguien puede orientarme con la forma de trabajar con 'if else endif '?

Gracias de antemano.
  #2 (permalink)  
Antiguo 12/09/2011, 16:51
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Duda con (if: else: endif; )

Saludos

Debes llevar el siguiente orden

Código PHP:
Ver original
  1. //Comparacion Principal
  2. if(){
  3. }elseif(){
  4. }elseif(){
  5. }elseif(){
  6. }else{
  7. }
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 12/09/2011, 16:54
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Duda con (if: else: endif; )

hola que tal.

Te recomiendo que leas el manual con referencia a elseif

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #4 (permalink)  
Antiguo 12/09/2011, 18:06
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 12 años, 7 meses
Puntos: 30
Respuesta: Duda con (if: else: endif; )

Hola a todos, no consigo hacer que finalice el formulario y pueda guardar los datos, cuando termino el segundo paso, vuelve a mostrarme el primer paso, y asi todo el rato...

lo he simplificado para poder ver que es lo que ocurre, pero no tengo ni idea!! ¿Por qué no termina nunca?

Código PHP:
<body>
<?php 
$nombre 
"";
$apellidos "";

if(isset(
$_POST['continuar'])){ 
    
$nombre = ($_POST['nombre']);
    
$status 1;
}

if(isset(
$_POST['finalizar'])){ 
    
$apellidos = ($_POST['apellidos']);
    
$status_2 1;
}

?>

<?php if(!isset($status)): ?>

<form action="prueba_step.php"  method="post">
 nombre<input type="text" name="nombre" value="" size="20">
 <input type="submit" value="Continuar" name="continuar" >
</form>

<?php else: ?>

<?php if(!isset($status_2)): ?>

<form action="prueba_step.php"  method="post">
 apellidos<input type="text" name="apellidos" value="" size="20">
 <input type="submit" value="Finalizar" name="finalizar" >
</form>

<?php else: ?>
<?php 
echo $nombre.$apellidos?>


    <?php endif; ?>
            <?php endif; ?>



</body>
  #5 (permalink)  
Antiguo 12/09/2011, 18:16
 
Fecha de Ingreso: marzo-2011
Mensajes: 88
Antigüedad: 13 años
Puntos: 17
Respuesta: Duda con (if: else: endif; )

Hace poco escribí un mensaje preguntando como se podría hacer algo similar a lo que tienes en mente, pero como no di con la solución estoy intentando con ajax a ver que tal (aun no he logrado terminarlo). He probado el ultimo codigo que has puesto y la verdad, no se por qué vuelve a la primera parte Si consigues encontrar la respuesta me gustaría saberla porque me parece interesante la manera en la que lo has enfocado, yo soy un poco nulo para esto pero si logro hacerlo funcionar escribiré.

Un saludo y gracias amiga por la idea, a ver si alguien te echa una mano.
  #6 (permalink)  
Antiguo 12/09/2011, 18:32
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 12 años, 7 meses
Puntos: 30
Respuesta: Duda con (if: else: endif; )

Hola Follow, yo no tengo ni idea de como seguir con esto, me he quedado ahí atrapada jejeje pero no te preocupes que si alguien me indica por qué no para de repetirse o encuentro la solución, pondré el ejemplo simple aquí y el código completo incluso si quieres (no lo he puesto con la validación y todo eso porque es bastante código), un saludo amigo jejeje
  #7 (permalink)  
Antiguo 12/09/2011, 19:49
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Duda con (if: else: endif; )

Creo que el problema es que para mostrar el paso 1 requieres que no este definido $status y, al declarar $status_2, tambien deberias declarar $status... es decir, no son tus estructuras de if: else: endif:, sino la logica.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 13/09/2011, 03:48
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 12 años, 7 meses
Puntos: 30
Respuesta: Duda con (if: else: endif; )

Cita:
Iniciado por Triby Ver Mensaje
Creo que el problema es que para mostrar el paso 1 requieres que no este definido $status y, al declarar $status_2, tambien deberias declarar $status... es decir, no son tus estructuras de if: else: endif:, sino la logica.
Gracias Triby, gracias a tu respuesta por lo menos he podido hacer que no me vuelva a mostrar el formulario 1, pero ahora al terminar el segundo, en vez de mostrarme los datos recogidos de los dos formularios solo me recoge el del 2º:

Código PHP:
<body>
<?php 
$nombre 
"";
$apellidos "";

if(isset(
$_POST['continuar'])){ 
    
$nombre = ($_POST['nombre']);
    
$status 1;

}

if(isset(
$_POST['finalizar'])){ 
    
$muestranombre=$nombre;
    
$apellidos = ($_POST['apellidos']);
    
$status_2 1;
    
$status 1;
}

?>

<?php if(!isset($status)): ?>

<form action="prueba_step.php"  method="post">
        nombre<input type="text" name="nombre" value="" size="20">
        <input type="submit" value="Continuar" name="continuar" >
</form>
<?php else: ?>

<?php if(!isset($status_2)):  ?>

<form action="prueba_step.php"  method="post">
       apellidos<input type="text" name="apellidos" value="" size="20">
      <input type="submit" value="Finalizar" name="finalizar" >
</form>

<?php else: ?>
<?php 
echo $muestranombre.$apellidos?>


    <?php endif; ?>
            <?php endif; ?>



</body>
¿A que puede ser debido? No me salta ningún error, simplemente solo me muestra 'apellidos'
  #9 (permalink)  
Antiguo 13/09/2011, 04:33
 
Fecha de Ingreso: marzo-2011
Mensajes: 88
Antigüedad: 13 años
Puntos: 17
Respuesta: Duda con (if: else: endif; )

Hola theScript, veo que has dormido igual de poco que yo!!
¡¡Anda que vaya lio por una cosa que aparentemente es una chorrada!!g

Lo he estado mirando ahora y la verdad es que es una paranoia, es como si los datos del primer formulario al procesar el segundo desaparecieran, no se darle explicacion porque al estar declarado en el mismo archivo una vez que contiene valor deberia de mostrarse donde tu quisieras no? (hablo como siempre desde la mas profunda ignorancia jejejejejej)

Yo he probrado a crear sesiones y mostrar los datos al final pero sigue sin mostrar los del form 1, no se que mas probar
  #10 (permalink)  
Antiguo 13/09/2011, 04:48
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 12 años, 7 meses
Puntos: 30
Respuesta: Duda con (if: else: endif; )

Hola follow, pues si, comparto tu . No consigo salir de esto y me está poniendo de los nervios. El dato que introduzco en el primer form se va de paseo

Haciendo pruebas y mas pruebas solo consigo que:

Cita:
Relleno el primer formulario, me pasa al segundo.

Me muestra el segundo, y justo debajo de este formulario me muestra el dato que puse en el primer formulario.

Le doy a enviar y me muestra solo el dato del segundo formulario.
En fin, sigo con ello, hay que ver que chorrada mas gorda para todo el tiempo que llevo con ello.

Un saludo follow y gracias por acompañarme en el camino
  #11 (permalink)  
Antiguo 13/09/2011, 05:19
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Duda con (if: else: endif; )

el error esta que siempre que cargas el codigo de limpia las variables

Código PHP:
Ver original
  1. $nombre = "";
  2. $apellidos = "";

entonces uno comienza metiendo el nombre y le da al boton Continuar al hacer esto te envia a pedir el apellido porque ya activaste la variable

$status = 1;

y esta es diferente a $status_2

entonces vienes y llenas apellido y al darle al boton finalizar buscara el nombre de esta forma

$muestranombre=$nombre;

y si te das cuenta el valor de $nombre es nulo porque tu al principio del codigo asi lo declaras.

Solucion al problema?

crea una session para que te guarde el nombre, quedaria mas o menos asi

Código PHP:
Ver original
  1. <?php
  2. $nombre = "";
  3. $apellidos = "";
  4.  
  5. if(isset($_POST['continuar'])){
  6.     $_SESSION['nombre'] = ($_POST['nombre']);
  7.     $status = 1;
  8.  
  9. }
  10.  
  11. if(isset($_POST['finalizar'])){
  12.     $_SESSION['apellidos'] = ($_POST['apellidos']);
  13.     $status_2 = 1;
  14.     $status = 1;
  15. }
  16.  
  17. ?>
  18.  
  19. <?php if(!isset($status)): ?>
  20.  
  21. <form action="formulario.php"  method="post">
  22.         nombre<input type="text" name="nombre" value="" size="20">
  23.         <input type="submit" value="Continuar" name="continuar" >
  24. </form>
  25. <?php else: ?>
  26.  
  27. <?php if(!isset($status_2)):  ?>
  28.  
  29. <form action="formulario.php"  method="post">
  30.        apellidos<input type="text" name="apellidos" value="" size="20">
  31.       <input type="submit" value="Finalizar" name="finalizar" >
  32. </form>
  33.  
  34. <?php else: ?>
  35. <?php echo $_SESSION['nombre']." ".$_SESSION['apellidos']; ?>
  36.  
  37.  
  38.     <?php endif; ?>
  39.             <?php endif; ?>

Postdata: Yo lo guarde con el nombre de formulario.php solo debes modificar eso al nombre que tu le tienes

saludos...
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #12 (permalink)  
Antiguo 13/09/2011, 05:44
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 12 años, 7 meses
Puntos: 30
Respuesta: Duda con (if: else: endif; )



johhan16, ¡Funciona! Dios que alivio y que de ¡todo! jejeje de verdad que aunque parezca una tontería me ha hecho un mundo el haber podido dar con la solución, eres muy amable al haberme ayudado a solucionarlo, te debo una!! Mil gracias y saludos a todos!

Etiquetas: formulario, variables, usuarios
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:45.