PHP - Abrir archivo html

   
Vista:

Abrir archivo html

Publicado por Carlos (3 intervenciones) el 17/09/2007 21:29:23
Necesito abrir un fichero html, según el valor que tome una variable, haciendo uso de PHP. Para ello tengo un formulario con tres botones de opción, los cuales valen uno, dos o tres.
A la variable la llamo $valor_formulario y con un switch y algunos print compruebo que efectivamente el formulario transmite a la variable los parámetros que me interesan y en la misma hoja.
Ahora bien, a la hora de abrir el archivo html que le corresponde a cada valor de la variable, me da un error.
Estoy llamando a la función fopen(), la cual necesita dos parámetros, la URL del fichero y el modo (lectura, lectura y escritura, etc.).
Si no pongo modo, me dice que falta, si lo pongo me dice que el fichero no es de escritura.
Me da la sensación de que fopen() es para otros menesteres (abrir un fichero de texto e introducir algo, etc).
Yo solo quiero pasar página, es decir, si el usuario quiere buscar que abra la página de busqueda, si quiere añadir la información que entre en la página de añadir y así.
¿Es posible o tengo que recurrir a javascript por fuerza?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Abrir archivo html

Publicado por Nicolás (154 intervenciones) el 17/09/2007 21:46:20
Es perfectamente posible... tienes que utilizar la función header con argumento "Locatio: xxxxxxx"

header("Location: busqueda.html");

en este caso, te redirigirá a la pagina busqueda.html

Nos avisas si te ha sido de ayuda. Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir archivo html

Publicado por Nicolás (154 intervenciones) el 17/09/2007 23:35:27
Me olvidé de decir que para que esta función ande correctamente, no debe tener ninguna salida antes, es decir, no debes mostrar ningún código antes, ni con echo, ni con print, ni código html, ni nada...
Nos avisas cualquier duda que te quede. Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir archivo html

Publicado por Carlos (3 intervenciones) el 19/09/2007 20:42:39
Gracias por la información, he mirado también en www.php.net y no funciona,
Mi código es:
<?php
$valor_formulario = $_GET['GrupoOpciones1'];
// Aquí mostramos el valor del formulario en cada momento:
print "El valor que ha pasado el formulario en este momento es " .$valor_formulario;

// Con esta sentencia switch accederemos a las diferentes opciones del menú
switch ($valor_formulario){
case 1:
ob_start();
header("Location: uno.php");
break;
case 2:
ob_start();
header("Location: dos.php");
break;
case 3:
ob_start();
header("Location: tres.php");
break;
}
?>
El error que me aparece es:
El valor que ha pasado el formulario en este momento es 1
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\intro.php:9) in C:\wamp\www\intro.php on line 35.
He colocado primero ob_start() por los comentarios encontrados en www.php.net para evitar este error, pero tampoco funciona.

HE intentado, por último hacer esto:
que el switch me llene una variable $switch con el cuerpo del nombre del mensaje y luego:
ob_start();
header("Location: " . $switch . ".php");
exit();
pero me da en mismo error en la línea donde coloque el header().

GRACIAS POR TU AYUDA NICOLAS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir archivo html

Publicado por Diego Romero (1450 intervenciones) el 19/09/2007 21:25:02
header() modifica los encabezados HTML que envia el servidor al cliente pero para hacerlo el script no debe enviar *absolutamente nada* antes de ejecutar header();, pero nada de nada, ni siquiera un espacio, porque eso provoca que el servidor envie todos sus encabezados y ya no los puedes modificar.

En tu caso el responsabe de eso es el print que tienes antes de switch;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Abrir archivo html

Publicado por Carlos (3 intervenciones) el 19/09/2007 22:56:11
You're still the champion, my friend.
Vamos, que me has dado una idea que FUNCIONA.
Mi ERROR era que el formulario direccionaba a la misma página, que yo llamo inicio.php.
Vale, las variables las procesa y quizá un script en javascript funcione, pero como tu dices Diego, no se puede enviar nada antes de header(). ¡Vaya! si yo lo he leido n veces en el manual. Ahora quito el print, ahora pongo un echo, serán comillas simples, o dobles, termino cada línea en punto y coma ...
ERA EL PROPIO FORMULARIO LO QUE YO ESTABA ENVIANDO ANTES DEL header(), y por eso, como tu dices no funciona.
He hecho que el formulario envíe los datos a un fichero intermedio al que llamo gintro.php, que solo contiene código PHP, y funciona, vaya que si funciona.
Al final el código ha quedado así:
Fichero intro.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Apertura de ficheros con PHP</title>
</head>
<body>
<form action="gintro.php" method="get" name="mi_formulario">
<p><label>Acceso al menú mediante clausulas switch.</label></p>
<p>
<label>
<input type="radio" name="GrupoOpciones1" value="1" />
Primera Opción</label>
<br />
<label>
<input type="radio" name="GrupoOpciones1" value="2" />
Segunda Opción</label>
<br />
<label>
<input type="radio" name="GrupoOpciones1" value="3" />
Tercera Opción</label>
<br />
</p>
<input name="enviar" type="submit" value="PROCESAR" />
</form>

</body>
</html>
Fichero gintro.php
<?php
$valor_formulario = $_GET['GrupoOpciones1'];

// Con esta sentencia switch accederemos a las diferentes opciones del menú
switch ($valor_formulario){
case 1:
ob_start(); // funciona!!
header('Location: primero.php');
break;
case 2:
header("location: segundo.php");
break;
case 3:
header("Refresh: 3; url=tercero.php");
break;
}
?>
Lo he probado en Explorer, Firefox, Opera y Flock
Gracias Nicolás, Gracias Diego.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar