Hola!
Obviamente no te va a reenviar porque antes de usar el header hiciste salidas al navegador:
Código:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>
<body>
<p>
Cuando das salida a algun código html antes del header ya te da ese error.
Debes poner tu código php "antes" de alguna salida al navegador.
De todas maneras te voy a dar mi punto de vista.
Además cuando rediriges a otra página vas a perder TODAS las variables POST. Y todo es inutil.
Por qué redirigir a otra página, hazlo todo en la misma!
Recuerdo algna vez haber posteado algo sobre formularios:
http://www.forosdelweb.com/showthrea...31#post1810231
Pero lo completaremos con la necesidad que tenes (de todas formas a esto lo redacté rápidamente, por lo tanto puede haber algún error de tipografía y obviamente sto se puede mejorar más todavía):
Código PHP:
<?
// no se dón de vas a ejecutar el script, por la dudas llamamos las variables
global $_POST;
// Si el formulario ha sido enviado la variable send existe y vale 1
if ($_POST["send"] == 1)
{
// Verifiquemos los datos
if (!$_POST["nombre"] || is_numeric($_POST["nombre"])) {
$mensaje[] = "Nombre";
$class['nombre'] = " class=rojo"; }
if (!$_POST["ape_pat"] || is_numeric($_POST["ape_pat"])) {
$mensaje[] = "Primer apellido";
$class['ape_pat'] = " class=rojo"; }
if (!$_POST["ape_mat"] || is_numeric($_POST["ape_mat"])) {
$mensaje[] = "Segundo apellido";
$class['ape_mat'] = " class=rojo"; }
if (!$_POST["edad"] || !is_numeric($_POST["edad"])) {
$mensaje[] = "Edad";
$class['edad'] = " class=rojo"; }
if (!$_POST["sexo"]) {
$mensaje[] = "Sexo";
$class['sexo'] = " class=rojo"; }
if (!$_POST["ocupacion"]) {
$mensaje[] = "Ocupación";
$class['ocupacion'] = " class=rojo"; }
if ($mensaje) {
print "Para llevar a cabo el registro correctamente debe introducir los siguientes datos:<br><br>";
foreach ($mensaje as $valor)
print "- $valor<br />";
}
else {
// Aquí ejecuta la sentencia SQL para guardar los datos en mysql ya que si no hay ningún mensaje de error significa que todos los datos están completos y correctos.
$_sql = "INSERT...";
if (mysql_query($_sql))
$exito = 1;
else
die mysql_error();
}
}
if (!$exito) {
?>
Los campos marcados con asterisco (*) son obligatorios y en cuanto a los apellidos, por lo menos debe escribir uno:</p>
<form action="formulario.php" method="post" name="forma">
<p>Nombre:
<input<?= $class['nombre'] ?> name="nombre" type="text" value="<?= $_POST["nombre"] ?>" />
<br />
Apellido Paterno:
<input<?= $class['ape_pat'] ?> name="ape_pat" type="text" value="<?= $_POST["ape_pat"] ?>" /><br />
Apellido Materno:
<input<?= $class['ape_mat'] ?> name="ape_mat" type="text" value="<?= $_POST["ape_mat"] ?>" /><br />
Edad:
<input<?= $class['edad'] ?> name="edad" type="text" value="<?= $_POST["edad"] ?>" /></br>
Sexo:
Hombre<input<?= $class['sexo'] ?> type="radio" name="sexo" value="Hombre" <? if( $_POST["sexo"] == "Hombre" ) echo "checked"; ?> >
Mujer<input<?= $class['sexo'] ?> type="radio" name="sexo" value="Mujer" <?php if($_POST["sexo"] == "Mujer" ) echo "checked"; ?> ></br>
Ocupación:
<select<?= $class['ocupacion'] ?> name="ocupacion" <? if( $_POST["ocupacion"] == "" ) ?> >
<option value="">Seleccione una ocupación</option>
<option value="director" <? if( $_POST["ocupacion"] == "director" ) echo "selected"; ?> >Director</option>
<option value="ejecutivo" <? if( $_POST["ocupacion"] == "ejecutivo" ) echo "selected"; ?> >Ejecutivo</option>
<option value="otro" <? if( $_POST["ocupacion"] == "otro" ) echo "selected"; ?> >Otro</option>
</select><p>
<input name="send" type="hidden" id="send" value="1" />
<input name="submit" type="submit" value="Enviar" /></p>
</form>
<? }
// Si el formulario fue guardado correctamente en la base entonces $exito vale 1 y se imprime esto en la pantalla en vez de mostrar el formulario
elseif ($exito == 1)
echo "Los datos han sido enviados con éxito.";
?>