Foros del Web » Programando para Internet » PHP »

problema con formulario

Estas en el tema de problema con formulario en el foro de PHP en Foros del Web. Hola amigos/as, Tengo el siguiente codigo Código PHP:                 <div id="formulario">                  <?                  if(! $_POST ){                  ?>                                  <form action="contacto.php" method="post">                         <label for="nombre" class="nombre">Nombre(*)</label>                                         <input type="text" name="nombre" id="nombre" />                                               <label for="email" class="email">E-mail(*)</label>                                                                         <input type="text" name="email" id="email"/>                       ...
  #1 (permalink)  
Antiguo 21/11/2011, 08:32
Avatar de PedroDesing  
Fecha de Ingreso: octubre-2007
Ubicación: Barcelona, España
Mensajes: 202
Antigüedad: 16 años, 5 meses
Puntos: 18
problema con formulario

Hola amigos/as,

Tengo el siguiente codigo

Código PHP:
                <div id="formulario">
                <?
                
if(!$_POST){
                
?>                
                <form action="contacto.php" method="post">
                        <label for="nombre" class="nombre">Nombre(*)</label>                
                        <input type="text" name="nombre" id="nombre" />
                     
                        <label for="email" class="email">E-mail(*)</label>                                                
                        <input type="text" name="email" id="email"/>
                     
                        <label for="coment" class="coment">Comentarios(*)</label>
                        <textarea name="coment" id="coment" rows="4"></textarea>
                     
                        <input type="submit" id="enviar" value="Enviar"/>            
                </form>            
                <div class="corte"></div>
                
                <?
                
}
                else{
                
?>                
                <form action="contacto.php" method="post">
                        <label for="nombre" class="nombre">Nombre(*)</label>                
                        <input type="text" name="nombre" id="nombre" value=<?$_POST['nombre']}?> />
                     
                        <label for="email" class="email">E-mail(*)</label>                                                
                        <input type="text" name="email" id="email" value=<?$_POST['email']?> />
                     
                        <label for="coment" class="coment">Comentarios(*)</label>
                        <textarea name="coment" id="coment" rows="4"  /><?$_POST['coment']?></textarea>
                     
                        <input type="submit" id="enviar" value="Enviar"/>            
                </form>            
                <div class="corte"></div>
                <!-- Muestro el formulario y debajo los mensajes de error, para que pueda volver a escribirse el correo -->
                <?                
                    
//Estoy recibiendo el formulario, compongo el cuerpo
                    
if($_POST['nombre'] == ""){
                        echo 
"<p style='margin-top:15px; color: #FF0000'>Debe rellenar el nombre.</p>";
                        }
                    
/*else if($_POST['email'] == "")
                        echo "<span style='color: #FF0000'>Debe rellenar el email.</span><br/>";*/
                    /*else*/
if(!preg_match('/^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})$/',$_POST['email']))
                        echo 
"<p style='color: #FF0000'>El campo email esta vac&iacute;o o no es v&aacute;lido.</p>";
                    
/*else*/if($_POST['coment'] == "")
                        echo 
"<p style='color: #FF0000'>Debe rellenar el comentario.</p>";
                    else
                    {
                        
$cuerpo "Formulario enviado\n";
                        
$cuerpo .= "Nombre: " $_POST["nombre"] . "\n";
                        
$cuerpo .= "Email: " $_POST["email"] . "\n";
                        
$cuerpo .= "Comentarios: " $_POST["coment"] . "\n";
                        
//mando el correo...
                        
mail("[email protected]","Formulario recibido",$cuerpo);

                        
//doy las gracias por el envío
                        
echo "<p style='margin-top:20px'>Gracias por rellenar el formulario. Se ha enviado correctamente.</p>";
                    }
                }
                
?>
Mi problema es que al mandar el formulario en blanco, me aparecen los campos con una barra /, cuando deberian aparecer en blanco. Podeis ver el comportamiento en aqui http://www.xplora-aventura.com/contacto.php

Alguien sabe porque pasa esto?? muchas gracias!!!
__________________
pedrorodas.com próximamente! Permanezcan atentos
  #2 (permalink)  
Antiguo 21/11/2011, 08:51
Avatar de efedefernan  
Fecha de Ingreso: diciembre-2007
Ubicación: Cantabria
Mensajes: 91
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: problema con formulario

el problema lo tienes aquí:
justo al comienzo de tu else{ el codigo quedaría así

Código PHP:

<form action="contacto.php" method="post">
                        <label for="nombre" class="nombre">Nombre(*)</label>                
                        <input type="text" name="nombre" id="nombre" value="<? $_POST['nombre'];?>" />
                     
                        <label for="email" class="email">E-mail(*)</label>                                                
                        <input type="text" name="email" id="email" value="<? $_POST['email'];?>" />
                     
                        <label for="coment" class="coment">Comentarios(*)</label>
                        <textarea name="coment" id="coment" rows="4"  /><? $_POST['coment'];?></textarea>
                     
                        <input type="submit" id="enviar" value="Enviar"/>            
                </form>
el value del nombre y del email tiene que ir entre comillas, el $_POST separado del <? y el el $_POST['nombre'] quitar el cierre de llave que tienes puesto.
  #3 (permalink)  
Antiguo 21/11/2011, 08:55
Avatar de Antonio_España  
Fecha de Ingreso: mayo-2007
Mensajes: 58
Antigüedad: 16 años, 10 meses
Puntos: 4
Respuesta: problema con formulario

Asi sin revisar mucho:

value=<?$_POST['nombre']}?>
deberia ser
value=<?$_POST['nombre'] ?>

Lo revisaria por cuenta propia si es la fuente del error, pero estoy esperando al antenista y mientras...
__________________
Aprendiz autodidacta
  #4 (permalink)  
Antiguo 21/11/2011, 09:21
Avatar de PedroDesing  
Fecha de Ingreso: octubre-2007
Ubicación: Barcelona, España
Mensajes: 202
Antigüedad: 16 años, 5 meses
Puntos: 18
Respuesta: problema con formulario

Hola, muchas gracias por las respuestas, he cambiado el codigo, quedando así

Código PHP:
                <div id="formulario">
                <?
                
if(!$_POST){
                
?>                
                <form action="contacto.php" method="post">
                        <label for="nombre" class="nombre">Nombre (*)</label>                
                        <input type="text" name="nombre" id="nombre" />
                     
                        <label for="email" class="email">E-mail (*)</label>                                                
                        <input type="text" name="email" id="email"/>
                     
                        <label for="coment" class="coment">Comentarios (*)</label>
                        <textarea name="coment" id="coment" rows="4"></textarea>
                     
                        <input type="submit" id="enviar" value="Enviar"/>            
                </form>            
                <div class="corte"></div>
                
                <?
                
}
                else{
                
?>                
                <form action="contacto.php" method="post">
                        <label for="nombre" class="nombre">Nombre (*)</label>                
                        <input type="text" name="nombre" id="nombre" value=<? $_POST['nombre']; ?> />
                     
                        <label for="email" class="email">E-mail (*)</label>                                                
                        <input type="text" name="email" id="email" value=<? $_POST['email']; ?> />
                     
                        <label for="coment" class="coment">Comentarios (*)</label>
                        <textarea name="coment" id="coment" rows="4"  /><? $_POST['coment']; ?></textarea>
                     
                        <input type="submit" id="enviar" value="Enviar"/>            
                </form>            
                <div class="corte"></div>
                <!-- Muestro el formulario y debajo los mensajes de error, para que pueda volver a escribirse el correo -->
                <?                
                    
//Estoy recibiendo el formulario, compongo el cuerpo
                    
if($_POST['nombre'] == ""){
                        echo 
"<p style='margin-top:15px; color: #FF0000'>Debe rellenar el nombre.</p>";
                        }
                    
/*else if($_POST['email'] == "")
                        echo "<span style='color: #FF0000'>Debe rellenar el email.</span><br/>";*/
                    /*else*/
if(!preg_match('/^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})$/',$_POST['email']))
                        echo 
"<p style='color: #FF0000'>El campo email esta vac&iacute;o o no es v&aacute;lido.</p>";
                    
/*else*/if($_POST['coment'] == "")
                        echo 
"<p style='color: #FF0000'>Debe rellenar el comentario.</p>";
                    else
                    {
                        
$cuerpo "Formulario enviado\n";
                        
$cuerpo .= "Nombre: " $_POST["nombre"] . "\n";
                        
$cuerpo .= "Email: " $_POST["email"] . "\n";
                        
$cuerpo .= "Comentarios: " $_POST["coment"] . "\n";
                        
//mando el correo...
                        
mail("[email protected]","Formulario recibido",$cuerpo);

                        
//doy las gracias por el envío
                        
echo "<p style='margin-top:20px'>Gracias por rellenar el formulario. Se ha enviado correctamente.</p>";
                    }
                }
                
?>
                </div>
Pero el problema persiste, alguna otra idea?? Muchas gracias
__________________
pedrorodas.com próximamente! Permanezcan atentos
  #5 (permalink)  
Antiguo 21/11/2011, 09:24
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: problema con formulario

Cambia todos los
Código PHP:
input type="text" name="nombre" id="nombre" value=<? $_POST['nombre']; ?>
por:
Código PHP:
input type="text" name="nombre" id="nombre" value="<?php echo $_POST['nombre']; ?>"
No deberías usar shorttags (<?), el contenido de value va entre ", y para "mostrar" el valor, tienes que hacer el echo ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #6 (permalink)  
Antiguo 21/11/2011, 09:31
Avatar de efedefernan  
Fecha de Ingreso: diciembre-2007
Ubicación: Cantabria
Mensajes: 91
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: problema con formulario

No me has hecho caso
te faltan las comillas en los values.

Código PHP:

value="<? $_POST['nombre'];?>"
Un saludo
  #7 (permalink)  
Antiguo 21/11/2011, 12:23
Avatar de PedroDesing  
Fecha de Ingreso: octubre-2007
Ubicación: Barcelona, España
Mensajes: 202
Antigüedad: 16 años, 5 meses
Puntos: 18
Respuesta: problema con formulario

Muchas gracias efedefernan efectivamente, al poner las comillas se ha corregido el error.

Eleazan, no he probado tu solución porque me ha valido la de efedefernan, pero muchas gracias igualmente!
__________________
pedrorodas.com próximamente! Permanezcan atentos

Etiquetas: formulario
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 02:12.