Ver Mensaje Individual
  #19 (permalink)  
Antiguo 10/04/2007, 19:57
usermax
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 18 años, 2 meses
Puntos: 11
Re: Formulario + campos obligatorios + menus desplegables

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&iacute;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.";
?>