PDA

Ver la Versión Completa : enviar a distintas paginas


jorgito
28-07-2004, 19:49:32
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, 20:51:53
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á:


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

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


// Saludos

jorgito
28-07-2004, 22:35:12
Pero desearia enviar al formulario1.php o formulario2.php sin presionar el link formulario, es decir que me envie directamente.

roman
28-07-2004, 22:41:12
Pero desearia enviar al formulario1.php o formulario2.php sin presionar el link formulario, es decir que me envie directamente.

Entonces así:



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

header("location: $href");


// Saludos

jorgito
29-07-2004, 03:57:53
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:
<?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, 04: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


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, 11:30:40
La línea a continuación de un header debe ser un exit; (por lo menos eso dice el manual)

header("location:$link");
O sea:

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

Saludos

jorgito
01-08-2004, 03:47:27
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.
if timer1.interval=10 then
form2.show;


se puede hacer lo mismo en PHP?

jachguate
01-08-2004, 19: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, 20: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 ;)

.....
sleep( 10 );
header ("location: la_pagina.php");
exit;

Saludos

kayetano
02-08-2004, 12: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:


...
function mi_funcion( form ) {
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

setTimeout( strExec, tiempo );

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, 15: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, 04:52:15
Gracias lo tome muy en cuenta todas las ayudas..... del foro
Thansk
:)