Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   enviar a distintas paginas (https://www.clubdelphi.com/foros/showthread.php?t=12816)

jorgito 28-07-2004 18:49:32

enviar a distintas paginas
 
Hola de nuevo:

tengo una duda al respecto de mandar un formulario de acuerdo al la sentencia que se cumpla;
cuando una sentecia if se cumpla que me mande a un formulario_1 y se es else que me mande a un formulario_2;

roman 28-07-2004 19:51:53

Cita:

Empezado por jorgito
tengo una duda al respecto de mandar un formulario de acuerdo al la sentencia que se cumpla;
cuando una sentecia if se cumpla que me mande a un formulario_1 y se es else que me mande a un formulario_2;

¿A qué te refieres con "mandar un formulario"? Si simplemente se trata de un enlace entonces algo como esto te servirá:

Código PHP:

if ($condicion)
  
$href 'formulario1.php';
else
  
$href 'formulario2.php';

print 
"<a href='$href'>Formulario</a>"

// Saludos

jorgito 28-07-2004 21:35:12

Ok
 
Pero desearia enviar al formulario1.php o formulario2.php sin presionar el link formulario, es decir que me envie directamente.

roman 28-07-2004 21:41:12

Cita:

Empezado por jorgito
Pero desearia enviar al formulario1.php o formulario2.php sin presionar el link formulario, es decir que me envie directamente.

Entonces así:


Código PHP:

if ($condicion)
  
$href 'formulario1.php';
else
  
$href 'formulario2.php';

header("location: $href"); 

// Saludos

jorgito 29-07-2004 02:57:53

Error
 
Hola de nuevo me sale un error justamente donde se encuetra el header:
Warning: Cannot add header information - headers already sent by (output started at C:\FoxServ\www\graphics\if.php:2) in C:\FoxServ\www\graphics\if.php on line 91
y mi codigo es el siguiente:
Código PHP:

  <?php 
$a
=trim($_POST["login"]);
$b=trim($_POST["pass"]);

if (
$a!="" and $b!=""){
  
$c=mysql_connect("localhost","root");
  
mysql_select_db("omega",$c);
  
$d=mysql_query("select *from pass where LOGIN='$a' and PASS='$b'",$c);
  do{
    
$l=$row["LOGIN"];
    
$p=$row["PASS"];
  }

  while (
$row=mysql_fetch_array($d));
  echo 
"\n";

  if (
$l===$a and $p===$b){
    
$link='http://localhost/graphics/emcriptador.php';
  }
  else{
    echo 
"USUARIO NO REGISTRADO";
  }

  
header("location:$link"); 
}
else {
  
$link="";
  echo 
"<center>Por favor LLene los datos</center>";
}
?>

Hay otra forma de realizarlo:

roman 29-07-2004 03:57:30

Hola,

Por favor adopta la costumbre de indentar el código ya que de lo contrario es difícil seguir el funcionamiento. En esta ocasión lo he indentado yo mismo.

En cuanto a la pregunta; tal como indica el mensaje de error, no puedes usar header() cuando ya se han mandado datos al navegador.

En este caso, la línea

Código PHP:

echo "\n"

manda el carater "\n" lo que impide el uso de headers. De hecho no entiendo para qué quieres este echo ni el while anterior.

Incluso el espacio que dejas antes de la etiqueta de apertura de php (aunque podría tratarse de un error al pegar aquí el código) impedirá el envío de headers.

// Saludos

salvica 30-07-2004 10:30:40

La línea a continuación de un header debe ser un exit; (por lo menos eso dice el manual)
Cita:

Empezado por jorgito
header("location:$link");

O sea:
Código PHP:

  header("location:$link");
   exit; 

Saludos

jorgito 01-08-2004 02:47:27

Thanks....!
 
Gracias me ayudo de mucho, si me pudieran ayudar en otrao duda que tengo al respecto:

como en delphi hay un timer y se puede controlar el tiempo de duracion de un form1 y se puede pasar al otro form2 en 10 seg.
Código:

if timer1.interval=10 then
form2.show;

se puede hacer lo mismo en PHP?

jachguate 01-08-2004 18:04:09

Te recomiendo utilizar la busqueda, pues este tema se ha tratado recientemente. También, al tratarse de una nueva pregunta que no tiene ninguna relación con esta conversación, abrir un nuevo hilo, tal como está recomendado en la Guia de Estilo.

Hasta luego.

;)

salvica 01-08-2004 19:50:40

En PHP tienes la función sleep( segundos ) que retarda la ejecución y continúa con la sentencia siguiente.

Tendrás problemas si envias la llamada a un frame distinto al actual, pero si la nueva página se a a ver donde la antigua, no tendrás ninguno ;)
Código PHP:

     .....
     
sleep10 );
    
header ("location: la_pagina.php");
    exit; 

Saludos

kayetano 02-08-2004 11:30:56

Hola

Este foro es de PHP, y habeces nos ofuscamos en resolver el problema con PHP.
Hay ocasiones en las que se puede solucionar con javascript, hay que tener cuidado y que funcione en varios navegadores, pero suele ser mas rapida.

No se si la condición a la que te refieres usa variabes del mismo formulario o variables solo accesibles desde PHP.

Si el valor es accesible desde javascript puedes hacer lo siguiente:

Código PHP:

...
   function 
mi_funcionform ) {
      if( <
condicion> )
         
form.action "formulario_1.php";
      else
         
form.action "formulario_2.php";
      
form.submit();
   }
...

<
form>
<
input type="button" onclick="mi_funcion( this.form )">
</
form>
... 

En el caso del timer tienes en javascript la funcion
Código PHP:

setTimeoutstrExectiempo ); 

Donde debes indicar una cadena con la accion que deseas realizar y el tiempo que quieres que trascurra antes de la acción.

__hector 02-08-2004 14:29:40

La funcion sleep de php en este caso no te sera de ayuda, puesto que imagino detiene la ejecucion del codigo php en el servidor, por lo que el cliente ni se enterara de lo que estas haciendo e igual lo vas a redireccionar (redirecciona sin dar ninguna respuesta al cliente, pues todavia se estaria en el servidor procesando el php).

Puedes, como ya te indicaron previamente, utilizar javascript, o en su defecto la etiqueta meta:

<META http-equiv="Refresh" Content="nnsegundos;urldestino">

jorgito 03-08-2004 03:52:15

Thanks...
 
Gracias lo tome muy en cuenta todas las ayudas..... del foro
Thansk
:)


La franja horaria es GMT +2. Ahora son las 23:44:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi