Foros del Web » Programando para Internet » PHP »

enlazar a varios html segun opcion

Estas en el tema de enlazar a varios html segun opcion en el foro de PHP en Foros del Web. Buenas mi problema es el siguiente Recojo datos en un html y los mando a alta.php, una vez ahi compruebo si los datos son correctos ...
  #1 (permalink)  
Antiguo 23/01/2010, 02:14
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 14 años, 6 meses
Puntos: 2
enlazar a varios html segun opcion

Buenas mi problema es el siguiente

Recojo datos en un html y los mando a alta.php, una vez ahi compruebo si los datos son correctos o no, con un bucle y tal, luego quiero hacer algo parecido a esto

if b=0
va a x.html
else
va a y.html


He probado escribiendo en php lo siguiente:

header('Location: x.html');

pero me da el siguiente fallo:

Warning: Cannot modify header information - headers already sent by (output started at ...

Y además se me abre en otra ventana y yo quiero que sea en la misma

en el php no escribo nada antes por pantalla porque he estado buscando en internet y a mucha gente era ese su problema

Lo unico que hace este archivo php es compulsar los datos con la bd y luego segun el resultado ir a una pagina u otra

Gracias anticipadas!
  #2 (permalink)  
Antiguo 23/01/2010, 02:19
 
Fecha de Ingreso: abril-2004
Ubicación: madrid
Mensajes: 31
Antigüedad: 20 años
Puntos: 2
Respuesta: enlazar a varios html segun opcion

al principio del fichero tienes algun salto de linea antes de iniciar el php ?
<?php

a mi me ha pasado alguna vez y ha sido por eso..

si es tu caso tu fichero php en la primera linea tendria que empezar por
<?php
  #3 (permalink)  
Antiguo 23/01/2010, 05:46
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: enlazar a varios html segun opcion

pues si eso era, la primera linea estaba en blanco

pero sigue saliendome en otra ventana no en la misma
  #4 (permalink)  
Antiguo 23/01/2010, 12:05
Avatar de Mahishasura  
Fecha de Ingreso: enero-2010
Ubicación: En las profundidades del cosmos
Mensajes: 58
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: enlazar a varios html segun opcion

Cita:
Iniciado por gspablo Ver Mensaje
pues si eso era, la primera linea estaba en blanco
pero sigue saliendome en otra ventana no en la misma
Fíjate que el header esté al principio del fichero. Por ejemplo no puede estar así:
Código PHP:
Ver original
  1. <html>
  2. <head></head>
  3. <body>
  4. (...)
  5. <?
  6. if(b==0){
  7. header("Location: x.html");
  8. } else {
  9. header("Location: y.html"); }
  10. ?>
  11. </body>
Debe ser así:
Código PHP:
Ver original
  1. <?
  2. if(b==0){
  3. header("Location: x.html");
  4. } else {
  5. header("Location: y.html"); }
  6. ?>
  7. <html>
  8. <head></head>
  9. <body>
  10. (...)
  11. </body>
  #5 (permalink)  
Antiguo 23/01/2010, 13:58
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: enlazar a varios html segun opcion

Y si es una comprobacion con la base de datos por narices debe de ser al final de pagina, no tengo otro remedio no?

por eso puede ser que se abra en otra ventana?
  #6 (permalink)  
Antiguo 23/01/2010, 16:33
Avatar de Mahishasura  
Fecha de Ingreso: enero-2010
Ubicación: En las profundidades del cosmos
Mensajes: 58
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: enlazar a varios html segun opcion

Cita:
Iniciado por gspablo Ver Mensaje
Y si es una comprobacion con la base de datos por narices debe de ser al final de pagina, no tengo otro remedio no?
por eso puede ser que se abra en otra ventana?
Manda un poco de código, a ver si te podemos seguir ayudando.
  #7 (permalink)  
Antiguo 23/01/2010, 16:41
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: enlazar a varios html segun opcion

Cita:
Iniciado por gspablo Ver Mensaje
Y si es una comprobacion con la base de datos por narices debe de ser al final de pagina, no tengo otro remedio no?

por eso puede ser que se abra en otra ventana?
Si tienes esto

Código PHP:
<?php
//algo de codigo
//mas codigo
//mucho codigo
//Todos esto mientras no se imprima nada en pantalla
header("Location: x.html"); 
//puedes seguir poniendo mas codigo
?>
<b>Incluso codigo sin ser php</b>
El problema del Header es que no puede haber nada impreso ya en pantalla. Comprueba si puedes poner el codigo al principio de todo, sin o puedes, puedes imprimir un codigo javascript desde php para que redireccione la pagina.
  #8 (permalink)  
Antiguo 23/01/2010, 16:46
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: enlazar a varios html segun opcion

<?php
$datosAlta=$_SESSION[alta];
$datosAlta[usuario]=$_POST[nusuario];
$datosAlta[pass1]=$_POST[npass1];
$datosAlta[pass2]=$_POST[npass2];

try{
$auxcon = mysql_connect("localhost","","")
or die ("no se ha podido conectar");

//Seleccion de la base de datos a utilizar
mysql_select_db("test")
or die("Error al tratar de selecccionar esta base");

$sql=" SELECT * FROM test.usuarios";
$consulta = mysql_query($sql)
or die("La consulta contiene algún error");

$lineas = mysql_num_rows($consulta);
$paginas=$consulta;
$tablapaginas=Array();

// Guardamos cada linea en la tabla
$cont=0;
while($row = mysql_fetch_array($paginas, MYSQL_NUM)){
$tablapaginas[$cont][0]=$row[0]; //usuario
$tablapaginas[$cont][1]=$row[1]; // pass1
$tablapaginas[$cont][2]=$row[2]; // pass2

$cont=$cont+1;
} // Fin while

$i=1;
$ok=0;

for($i=0;$i<$lineas && $ok==0;$i++)
{
if($tablapaginas[$i][0]==$datosAlta[usuario] && $tablapaginas[$i][1]==$datosAlta[pass1] && $tablapaginas[$i][2]==$datosAlta[pass2])
$ok=1;
}
} // Fin try
catch(PDOException $excp ){
print("\nError en la conexion");

} // Fin catch
if($ok==1){
header("location:alta.html");
}else{
header("location:prealta.html");
}


?>
  #9 (permalink)  
Antiguo 23/01/2010, 17:00
Avatar de Mahishasura  
Fecha de Ingreso: enero-2010
Ubicación: En las profundidades del cosmos
Mensajes: 58
Antigüedad: 14 años, 2 meses
Puntos: 4
Respuesta: enlazar a varios html segun opcion

Tienes razón gspablo, vas a seguir teniendo problemas, por ahora te recomiendo que redirecciones con ayuda de javascript. Reemplaza los header por:
Código PHP:
Ver original
  1. echo "<script language=\"JavaScript\">"
  2.        ."function redireccionar() {"
  3.        ."setTimeout('location.href=\"alta.html\"', 0);"
  4.        ."}"
  5.        ."</script>";
Cuéntanos cómo te fue.
  #10 (permalink)  
Antiguo 23/01/2010, 17:03
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: enlazar a varios html segun opcion

Pon bien los headers

Código PHP:
Ver original
  1. <?php
  2. $datosAlta=$_SESSION[alta];
  3. $datosAlta[usuario]=$_POST[nusuario];
  4. $datosAlta[pass1]=$_POST[npass1];
  5. $datosAlta[pass2]=$_POST[npass2];
  6.  
  7. try{
  8. $auxcon = mysql_connect("localhost","","")
  9. or die ("no se ha podido conectar");
  10.  
  11. //Seleccion de la base de datos a utilizar
  12. or die("Error al tratar de selecccionar esta base");
  13.  
  14. $sql=" SELECT * FROM test.usuarios";
  15. $consulta = mysql_query($sql)
  16. or die("La consulta contiene algún error");
  17.  
  18. $lineas = mysql_num_rows($consulta);
  19. $paginas=$consulta;
  20. $tablapaginas=Array();
  21.  
  22. // Guardamos cada linea en la tabla
  23. $cont=0;
  24. while($row = mysql_fetch_array($paginas, MYSQL_NUM)){
  25. $tablapaginas[$cont][0]=$row[0]; //usuario
  26. $tablapaginas[$cont][1]=$row[1]; // pass1
  27. $tablapaginas[$cont][2]=$row[2]; // pass2
  28.  
  29. $cont=$cont+1;
  30. } // Fin while
  31.  
  32. $i=1;
  33. $ok=0;
  34.  
  35. for($i=0;$i<$lineas && $ok==0;$i++)
  36. {
  37. if($tablapaginas[$i][0]==$datosAlta[usuario] && $tablapaginas[$i][1]==$datosAlta[pass1] && $tablapaginas[$i][2]==$datosAlta[pass2])
  38. $ok=1;
  39. }
  40. } // Fin try
  41. catch(PDOException $excp ){
  42. print("\nError en la conexion");
  43.  
  44. } // Fin catch
  45. if($ok==1){
  46. header("Location: alta.html");
  47. }else{
  48. header("Location: prealta.html");
  49. }
  50. ?>

Y podias poner donde te dice que empieza los headers (El error completo)
  #11 (permalink)  
Antiguo 24/01/2010, 12:37
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: enlazar a varios html segun opcion

Cita:
Iniciado por Mahishasura Ver Mensaje
Tienes razón gspablo, vas a seguir teniendo problemas, por ahora te recomiendo que redirecciones con ayuda de javascript. Reemplaza los header por:
Código PHP:
Ver original
  1. echo "<script language=\"JavaScript\">"
  2.        ."function redireccionar() {"
  3.        ."setTimeout('location.href=\"alta.html\"', 0);"
  4.        ."}"
  5.        ."</script>";
Cuéntanos cómo te fue.
para ponerlo he quitado el echo y las comillas de todas las lineas

me da problema en el < de <script eso tendre que ponerle antes que no es php no?

he probado esta ultima opcion y nada o da problema con < o sino sale pagina en blanco

Última edición por gspablo; 24/01/2010 a las 12:44
  #12 (permalink)  
Antiguo 24/01/2010, 12:44
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: enlazar a varios html segun opcion

Envezde usar doble comilla en el echo usa simple y ya asi no tenes que escapar las comillas dobles.
  #13 (permalink)  
Antiguo 24/01/2010, 12:45
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: enlazar a varios html segun opcion

Cita:
Iniciado por SoutlinK Ver Mensaje
Pon bien los headers

Código PHP:
Ver original
  1. <?php
  2. $datosAlta=$_SESSION[alta];
  3. $datosAlta[usuario]=$_POST[nusuario];
  4. $datosAlta[pass1]=$_POST[npass1];
  5. $datosAlta[pass2]=$_POST[npass2];
  6.  
  7. try{
  8. $auxcon = mysql_connect("localhost","","")
  9. or die ("no se ha podido conectar");
  10.  
  11. //Seleccion de la base de datos a utilizar
  12. or die("Error al tratar de selecccionar esta base");
  13.  
  14. $sql=" SELECT * FROM test.usuarios";
  15. $consulta = mysql_query($sql)
  16. or die("La consulta contiene algún error");
  17.  
  18. $lineas = mysql_num_rows($consulta);
  19. $paginas=$consulta;
  20. $tablapaginas=Array();
  21.  
  22. // Guardamos cada linea en la tabla
  23. $cont=0;
  24. while($row = mysql_fetch_array($paginas, MYSQL_NUM)){
  25. $tablapaginas[$cont][0]=$row[0]; //usuario
  26. $tablapaginas[$cont][1]=$row[1]; // pass1
  27. $tablapaginas[$cont][2]=$row[2]; // pass2
  28.  
  29. $cont=$cont+1;
  30. } // Fin while
  31.  
  32. $i=1;
  33. $ok=0;
  34.  
  35. for($i=0;$i<$lineas && $ok==0;$i++)
  36. {
  37. if($tablapaginas[$i][0]==$datosAlta[usuario] && $tablapaginas[$i][1]==$datosAlta[pass1] && $tablapaginas[$i][2]==$datosAlta[pass2])
  38. $ok=1;
  39. }
  40. } // Fin try
  41. catch(PDOException $excp ){
  42. print("\nError en la conexion");
  43.  
  44. } // Fin catch
  45. if($ok==1){
  46. header("Location: alta.html");
  47. }else{
  48. header("Location: prealta.html");
  49. }
  50. ?>

Y podias poner donde te dice que empieza los headers (El error completo)
asi lo he puesto y funciona, pero se abre en otra pagina

Etiquetas: enlazar, html, opcion
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 19:06.