Foros del Web » Programando para Internet » PHP »

redireccionar a otra pagina

Estas en el tema de redireccionar a otra pagina en el foro de PHP en Foros del Web. yo tengo un insert y la idea es que al hacerla me direccione a otra pagina, pero me tira un error por el header, no ...
  #1 (permalink)  
Antiguo 25/04/2009, 16:19
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
redireccionar a otra pagina

yo tengo un insert y la idea es que al hacerla me direccione a otra pagina, pero me tira un error por el header, no hay otra forma de hacerlo? o como soluciono ese error.

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\sbp\insertar.php:4) in C:\xampp\htdocs\sbp\accinsertar.php on line 77

gracias.


Código PHP:
<?php
//consulta SQL
mysql_query("insert into caballos(nombre,tomo,folio,pelo,madre,padre,sexo,raza,fechanacim,fechahoy) values 
   ('$_POST[nombre]','$_POST[tomo]','$_POST[folio]','$_POST[pelo]','$_POST[madre]','$_POST[padre]','$_POST[sexo]','$_POST[raza]','$fechanacim','$fechahoy')"
,$conexion) or die("Problemas en el select".mysql_error());
mysql_close($conexion);
header("location:regexito.html");

?>
  #2 (permalink)  
Antiguo 25/04/2009, 16:26
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: redireccionar a otra pagina

¿Por qué me sale "Warning: Cannot modify header information - headers already sent by (output started at 1:2) in 3 on line 4"?

  #3 (permalink)  
Antiguo 25/04/2009, 16:29
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: redireccionar a otra pagina

el problema que yo dentro de una pagina de formulario, hago un include a otra pagina y esa pagina es la que direcciona , osea no puede poner el include antes de header porque me anula los stylos, como hago para direccionar teniendo de esta forma?.
saludos.
  #4 (permalink)  
Antiguo 25/04/2009, 16:38
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: redireccionar a otra pagina

Si vas a hacer una redirección, no debes imprimir ninguna salida, por lo que en lugar de mostrar el formulario, llama al include antes de mostrar la salida y haz la redirección.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 25/04/2009, 16:40
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: redireccionar a otra pagina

Es que es algo ilógico querer mostrar contenido para después simplemente redireccionar. Si hablas de un formulario, eso es muy aparte del proceso que ejecuta el código que pones, que imagino es el que procesa tu formulario. Son dos cosas distintas. Debes repensar la lógica de tu aplicación, pues este tipo de problemas NO deberían darse.

Una buena idea es siempre verificar el tipo de request ($_SERVER['REQUEST_METHOD']) para decidir si debemos mostrar el formulario, o procesar uno que ha sido enviado y redireccionar al terminar.

Otras formas de redireccionar? Claro que existen. Puedes usar javascript o metatags. Estos dós últimos se ejecutan en el cliente y por lo tanto dependen de él. El redireccionar con header() en PHP se ejecuta del lado del servidor, pero requiere que antes de hacer la redirección NO envies nada al navegador.


Última edición por okram; 25/04/2009 a las 16:40 Razón: Choque ;-)
  #6 (permalink)  
Antiguo 25/04/2009, 16:57
 
Fecha de Ingreso: abril-2009
Mensajes: 409
Antigüedad: 15 años
Puntos: 3
Respuesta: redireccionar a otra pagina

creo que me exprese mal, el tema es asi, yo tengo un formulario insertar.php, ahi completas los datos, cuando apretas el boton de registro, hace un include a la pagina que tiene las condiciones de registracion y la que inserta los datos que seria esta que esta abajo, ahora la idea es que si que estan todas bien las condiciones que inserte los datos como esta al final y que direccione a una pagina html que diga registro exitoso.
a ver si asi se entiende mejor lo que necesito, gracias.

Código PHP:
//verificacion de datos completados.
if ($nombre == NULL $tomo == NULL $folio == NULL |  $madre == NULL $padre == NULL $fechanacim == NULL)
{

    
$iderr 1;

    
return;
}
//      if ($iderr == 0):
 //      return 1;
//    else:
//       return 0;
//    endif;

//comprabacion tomo y folio

$tfcomp mysql_query ("select tomo,folio from caballos where tomo = '$_POST[tomo]' and folio = '$_POST[folio]'")or die(mysql_error());
$tfcomp2 mysql_num_rows($tfcomp);
if (
$tfcomp2 != 0) {

    
$iderr 2;

return;
}

//      if ($iderr == 0):
//       return 1;
//   else:
//       return 0;
//    endif;


//comprobacion de nombre no existente.
$nombrecomp mysql_query ("select nombre from caballos where nombre = '$_POST[nombre]'") or die(mysql_error());
$nombrecomp2 mysql_num_rows($nombrecomp);
if (
$nombrecomp2 != 0){

    
$iderr 3;

return;
}
//consulta SQL
mysql_query("insert into caballos(nombre,tomo,folio,pelo,madre,padre,sexo,raza,fechanacim,fechahoy) values 
   ('$_POST[nombre]','$_POST[tomo]','$_POST[folio]','$_POST[pelo]','$_POST[madre]','$_POST[padre]','$_POST[sexo]','$_POST[raza]','$fechanacim','$dia')"
,$conexion) or die("Problemas en el select".mysql_error());
mysql_close($conexion);
header("location:regexito.html");

?> 
  #7 (permalink)  
Antiguo 25/04/2009, 23:03
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 3 meses
Puntos: 7
Respuesta: redireccionar a otra pagina

En el formulario tenés que especificar el action donde vas a mandar los datos para procesarlos. Luego los recibís del otro lado teniendo en cuenta el método (GET o POST), ejecutás las sentencias SQL para las altas y luego redireccionás utilizando header.

No se puede hacer con header la redirección en el mismo formulario cargado. Header funciona antes de imprimir cualquier cosa en pantalla.

Los pasos serían:

1- Recibir datos en formulario (insertar.php)
2- Presionar el botón de submit (enviar datos)
3- Recibir los datos en fichero php.
4- Validar tipos de datos, tomo y folio, nombre no existente.
5- Hacer alta en BD.
6- Redireccionar.
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 08:39.