Foros del Web » Programando para Internet » PHP »

problema con header("Location: pagina.php");

Estas en el tema de problema con header("Location: pagina.php"); en el foro de PHP en Foros del Web. Hola, tengo el siguiente problema: recien inicio en el mundo del php, y pues trato de hacer mi primer aplicación, la cual inserta unos datos ...
  #1 (permalink)  
Antiguo 08/05/2006, 16:44
Avatar de v_i_n_i_c_i_o  
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 422
Antigüedad: 20 años, 5 meses
Puntos: 0
problema con header("Location: pagina.php");

Hola, tengo el siguiente problema:

recien inicio en el mundo del php, y pues trato de hacer mi primer aplicación, la cual inserta unos datos en una DB. Esto lo hace muy bien, pero luego de insertar queda el mensaje de "conexión con la DB satisfactoria".
Lo que yo quiero es volver a la página que estaba y pues me recomendaron usar esta instrucción

header("Location: insempleado.php");

lo que pasa es que si la agrego, me pone este error:

Cita:
Warning: Cannot modify header information - headers already sent by (output started at c:\archivos de programa\apache group\apache\htdocs\teleisa\agregaempleado.php:8) in c:\archivos de programa\apache group\apache\htdocs\teleisa\agregaempleado.php on line 21
este es mi código:

Cita:
<body bgcolor="#FFFFFF" text="#000000">
<?php
$txtcedula=$_POST["txtcedula"];
$txtnombre=$_POST["txtnombre"];
$txttelefono=$_POST["txttelefono"];
$txtcelular=$_POST["txtcelular"];
$txtdireccion=$_POST["txtdireccion"];
$txtingreso=$_POST["txtingreso"];
include("conec.php");
$link=Conectarse();
$Sql="insert into empleado
(cedula,nombre,telefono1,telefono2,direccion,date_ in) values
('$txtcedula','$txtnombre', '$txttelefono', '$txtcelular', '$txtdireccion', '$txtingreso')";
mysql_query($Sql,$link);
header("Location: insempleado.php");
?>

</body>
alguna idea de cuál es mi error ?
__________________
"Un experto es una persona que ha cometido todos los errores que se pueden cometer en un determinado campo" - Niels Bohr
:cool: 0!)!u!/\ :patada:
  #2 (permalink)  
Antiguo 08/05/2006, 17:00
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
para usar un header no puede haber habido ninguna salida por pantalla y ahi tenes antes del header(); un <body bgcolor="#FFFFFF" text="#000000">
saludos
  #3 (permalink)  
Antiguo 08/05/2006, 17:10
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 20 años, 10 meses
Puntos: 2
La página donde tienes este codigo de conexión con la base de datos es insempleado.php??

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #4 (permalink)  
Antiguo 09/05/2006, 08:06
Avatar de v_i_n_i_c_i_o  
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 422
Antigüedad: 20 años, 5 meses
Puntos: 0
Cita:
Iniciado por bichomen
La página donde tienes este codigo de conexión con la base de datos es insempleado.php??

no, insempleado.php es donde está el formulario con los datos.
ésta llama la página de conección conec.php y luego a la que puse el código
__________________
"Un experto es una persona que ha cometido todos los errores que se pueden cometer en un determinado campo" - Niels Bohr
:cool: 0!)!u!/\ :patada:
  #5 (permalink)  
Antiguo 09/05/2006, 08:09
Avatar de v_i_n_i_c_i_o  
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 422
Antigüedad: 20 años, 5 meses
Puntos: 0
Cita:
Iniciado por emiliodeg
para usar un header no puede haber habido ninguna salida por pantalla y ahi tenes antes del header(); un <body bgcolor="#FFFFFF" text="#000000">
saludos
lo dejé sólo como <body> y sigue igual
__________________
"Un experto es una persona que ha cometido todos los errores que se pueden cometer en un determinado campo" - Niels Bohr
:cool: 0!)!u!/\ :patada:
  #6 (permalink)  
Antiguo 09/05/2006, 08:14
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Exclamación

El error que estas teniendo es por que hay una salida a explorador antes del header(). Esto siginifica que tienes alguna etiqueta tipo <html> o bien un echo"" antes de la función. Ten cuidado por que Los saltos de linea también se toman como "salida" al explorador.
  #7 (permalink)  
Antiguo 09/05/2006, 08:35
Avatar de v_i_n_i_c_i_o  
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 422
Antigüedad: 20 años, 5 meses
Puntos: 0
La cosa está así:


insempleado.php
Cita:
<form name="form1" method="post" action="agregaempleado.php">
<tr>
<td>
<p>C&eacute;dula:
<input type="text" name="txtcedula" maxlength="10">
ej. 101110111</p>
<p>Nombre:
<input type="text" name="txtnombre" maxlength="50" size="50">
</p>
<p>Tel&eacute;fono de residencia:
<input type="text" name="txttelefono" maxlength="7">
</p>
<p>Tel&eacute;fono celular:
<input type="text" name="txtcelular" maxlength="7">
</p>
<p>Direcci&oacute;n:
<input type="text" name="txtdireccion" maxlength="100" size="50">
</p>
<p>Fecha de ingreso:
<input type="text" name="txtingreso">
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

</td>
</tr>
</form>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp
;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;<img
src=%s>&nbsp;</td></tr>",
$row["nombre"],$row["direccion"],$row["telefono"],$row["email
"],$row["imagen"]);
}
mysql_free_result($result);
?>
<?php
include("conec.php");
$link=Conectarse();
$result=mysql_query("select * from empleado",$link);
?>

conec.php
Cita:
<html>
<head>
<title>conexi&oacute;n</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>

<?php
function Conectarse()
{
if
(!($link=mysql_connect("localhost","root","")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("TELEISA",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}
Conectarse();

?>
</body>
</html>
agregaempleado.php
Cita:
<html>
<head>
<title>almacenando</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$txtcedula=$_POST["txtcedula"];
$txtnombre=$_POST["txtnombre"];
$txttelefono=$_POST["txttelefono"];
$txtcelular=$_POST["txtcelular"];
$txtdireccion=$_POST["txtdireccion"];
$txtingreso=$_POST["txtingreso"];
include("conec.php");
$link=Conectarse();
$Sql="insert into empleado
(cedula,nombre,telefono1,telefono2,direccion,date_ in) values
('$txtcedula','$txtnombre', '$txttelefono', '$txtcelular', '$txtdireccion', '$txtingreso')";
mysql_query($Sql,$link);
header("Location: insempleado.php");
?>

</body>
</html>
__________________
"Un experto es una persona que ha cometido todos los errores que se pueden cometer en un determinado campo" - Niels Bohr
:cool: 0!)!u!/\ :patada:
  #8 (permalink)  
Antiguo 09/05/2006, 08:45
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo

Como podras observar en tú código agregaempleado.php en la parte de arriba tienes etiquetas <html> esto no puede ir antes del header(), no puede haber una salida al explorador antes de dicha función. Si dices no querer eliminar esas etiquetas podrias resolver el problema con location.href de javascript
  #9 (permalink)  
Antiguo 09/05/2006, 08:55
Avatar de v_i_n_i_c_i_o  
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 422
Antigüedad: 20 años, 5 meses
Puntos: 0
le quito eso y sigue igual

Cita:
<body>
<?php
$txtcedula=$_POST["txtcedula"];
$txtnombre=$_POST["txtnombre"];
$txttelefono=$_POST["txttelefono"];
$txtcelular=$_POST["txtcelular"];
$txtdireccion=$_POST["txtdireccion"];
$txtingreso=$_POST["txtingreso"];
include("conec.php");
$link=Conectarse();
$Sql="insert into empleado
(cedula,nombre,telefono1,telefono2,direccion,date_ in) values
('$txtcedula','$txtnombre', '$txttelefono', '$txtcelular', '$txtdireccion', '$txtingreso')";
mysql_query($Sql,$link);
header("Location: insempleado.php");
?>

</body>

y da el mismo error
__________________
"Un experto es una persona que ha cometido todos los errores que se pueden cometer en un determinado campo" - Niels Bohr
:cool: 0!)!u!/\ :patada:
  #10 (permalink)  
Antiguo 09/05/2006, 08:57
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Exclamación

Tampoco puede ir <body>... No puede ir etiquetas de <html> de NINGUN tipo......

Damn en tu codigo de conexion tienes salidas al explorador. Te sugiero que mejor resuelvas este problema con location.href
  #11 (permalink)  
Antiguo 09/05/2006, 09:38
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
De acuerdo respuesta

header("Location: ./insempleado.php");

salu2
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #12 (permalink)  
Antiguo 09/05/2006, 10:16
 
Fecha de Ingreso: abril-2006
Ubicación: Talcahuano-Chile
Mensajes: 50
Antigüedad: 18 años
Puntos: 0
no será el espacio que está entre : y isempleado.php???
no deberías quitarlo y ponerlos así:
Código PHP:
<?php 
  header
("location:isempleados.php");
?>
a mi se me okurre eso

y la variable SQL puede que esté mal escrita, onda no concatena la consulta que quieras ingresar
aaaaaa y otra cosa
cuando llamas desde posT (esta es una pregunta tb) o desde GET
en ----> $_POST["variable"]; no es con comillas simples en vez de dobles, o sea: $_POST['variable'];

Última edición por Daguett; 09/05/2006 a las 10:21
  #13 (permalink)  
Antiguo 09/05/2006, 10:20
Avatar de v_i_n_i_c_i_o  
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 422
Antigüedad: 20 años, 5 meses
Puntos: 0
ya probé sin el body

ya probé con ./

ya probé el .href

y aún no sirve...
__________________
"Un experto es una persona que ha cometido todos los errores que se pueden cometer en un determinado campo" - Niels Bohr
:cool: 0!)!u!/\ :patada:
  #14 (permalink)  
Antiguo 09/05/2006, 10:23
Avatar de v_i_n_i_c_i_o  
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 422
Antigüedad: 20 años, 5 meses
Puntos: 0
Dagett

no es el espacio...

había un poco de código que sí estaba dando un error...
la parte de:
Cita:
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp
;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;<img
src=%s>&nbsp;</td></tr>",
$row["nombre"],$row["direccion"],$row["telefono"],$row["email
"],$row["imagen"]);
}
mysql_free_result($result);
?>
pero ya está corregida.... la conexión a la base de datos está bien, los datos los inserta adecuadamente... lo que no hace es regresarme a la página en que estaba... ( o algún otra)
__________________
"Un experto es una persona que ha cometido todos los errores que se pueden cometer en un determinado campo" - Niels Bohr
:cool: 0!)!u!/\ :patada:
  #15 (permalink)  
Antiguo 09/05/2006, 10:28
 
Fecha de Ingreso: abril-2006
Ubicación: Talcahuano-Chile
Mensajes: 50
Antigüedad: 18 años
Puntos: 0
oyep, si quieres que te envíe a la pagina anterior haz esta instruccion en javascript:

<script>
windows.history.go(-1);
</script>
ahí te envia a la misma page en que estas

si te funciona y te sale el error de página caducada pon lo siguiente al inicio de tu codigo php y en algun archivo que puedes usar con include, la siguiente instruccion.

header("Cache-control: private");
  #16 (permalink)  
Antiguo 09/05/2006, 10:35
Avatar de v_i_n_i_c_i_o  
Fecha de Ingreso: noviembre-2003
Ubicación: Costa Rica
Mensajes: 422
Antigüedad: 20 años, 5 meses
Puntos: 0
pero eso me devuelvo, osea, que van a aparecer todos los datos que acaban de ser creados.... o no?
__________________
"Un experto es una persona que ha cometido todos los errores que se pueden cometer en un determinado campo" - Niels Bohr
:cool: 0!)!u!/\ :patada:
  #17 (permalink)  
Antiguo 09/05/2006, 10:37
 
Fecha de Ingreso: abril-2006
Ubicación: Talcahuano-Chile
Mensajes: 50
Antigüedad: 18 años
Puntos: 0
sip, van a aparcer los datos de nuevo
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 11:17.