Contacto | #php_para_torpes | Enlázanos | ¿Quiénes somos?
30 usuarios Online (0)
Darse de alta en la web | Recuperar password   
Inicio / Foros / HTML + XHTML / el button del submit no aparece ¿?
14 respuestas recibidas | 236 visitas | Categoría HTML + XHTML

el button del submit no aparece ¿?

Avatar de joby
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 13 posts)

#0 Offline joby Usuario 25 feb 08 (19:09)  
hola muy buenas a todos los sabios del foro
haber si me podeís ver donde falla me script por fa
yaque despues de enviar los datos se supone la confirmación de los mismos mediante el button confirmar éste últmo que no me parece al final de la tabla ¿?¿?no sé porqué?¿?
gracias de antemano
mi código html es
Código HTML:

Código PHP


<head>
    <title></title>
</head>
<body>
  <h2 align="center">Pagina de confirmación de inscripción del usuario</h2>
<table width="400" border="1" align="center" cellpadding="5" cellspacing="0" bgcolor=#eeeeff>
    <tr>
   <td width="47%" align="right"><B>Nombre Completo</B></td>
   <td>
   <?php
     
if(empty($name))
       echo
"<h2> no hay nombre para enviar </h2><br>";
     else if (
strlen($name)<5 || strlen($name)>50)
       echo
"<h2>Nombre inválido</h2><br>";
     else
       echo    
$name;
   
?>
   </td>
   </tr>
   <tr>
   <td width="47%" height="57" align="right"><B>Direccion</B></td>
   <td height="57">
   <?php
     
if(empty($address))
       echo
"<h2>no hay dirección para enviar</h2><br>";
     else if (
strlen($address)<5 || strlen($address)>200)
       echo
"<h2> Dirección Inválida</h2><br>";
     else
       echo
$address;
    
?>
    </td>
    </tr>
    <tr>
    <td width="47%" align="right" ><B>Correo electrónico</B></td>
    <td height="2">

    <?php
      
if(empty($email))
        echo
"<h2> no hay email para enviar</h2><br>";
      else if(
strlen($email)<5 || strlen($email)>100)
        echo
"<h2> dirección de email es muy larga o muy corta</h2><br>";
      else if(!
ereg("@",$email))
        echo
"<h2> direccion de email es invalida no se encuentra @</h2><br>";
      else  
        echo
$email;
    
?>
    </td>
    </tr>
    <tr>
    <td width="47%" align="right"><B>Contraseña:</B></td>
    <td height="2">
    <?php
      
if(empty($password)|| empty($cpassword))
        echo
"<h2> no hay contraseña para enviar</h2><br>";
      else if (
strlen($password)<5 || strlen($cpassword)>15)
        echo
"<h2> la contraseña es muy larga o muy corta</h2><br>";
      else if (
strlen($cpassword)!=strlen($password))
        echo
"<h2> la contraseña no coinciden</h2><br>";
      else
      {
        for(
$i=0;$i<strlen($password);$i++)
          echo
"*";    
      }
    
?>      
    </td>
    </tr>
    <tr>
    <td width="47%" align="right"><B>Fecha de nacimiento</B></td>
    <td height="2">
    <?php
      
if(empty($birth_month)|| empty($birth_day)|| empty($birth_year))
        echo
"<h2>no hay fechas de nacimiento para enviar</h2><br>";
      switch(
$birth_month)
      {
        case
1: echo"Enero";break;
        case
2: echo"Febrero";break;
        case
3: echo"Marzo";break;
        case
4: echo"Abril";break;
        case
5: echo"Mayo";break;
        case
6: echo"Junio";break;
        case
7: echo"Julio";break;
        case
8: echo"Julio";break;
        case
9: echo"Agosto";break;
        case
10: echo"Septiembre";break;
        case
11: echo"Octubre";break;
        case
12: echo"Noviembre";break;
        default: die (
"<h2>Mes de naci invalido</h2>");
      }
      if(
$birth_day<1 || $birth_day>31 )
         print
"<h2>Fecha invalida</h2>";
      else
         echo
$birth_day, "&nbsp";
      if((
$birth_year<1900) || ($birth_year>2009))
         echo
"<h2> año de nacimiento invalido</h2><br>";
      else
         echo
$birth_year;                       
     
?>
     
     <?php
       
if(empty($gender))
          die (
"<h2> no se ha especificado el sexo </h2><br>");
       else if(!(
$gender=="Male" || $gender=="Female"))
           die (
"<h2> nombre invalido para el sexo </h2><br>");
        else
           echo
$gender;
    
?>
     </td>
     </tr>
     <tr>
     <td colspan="3">
     <form name=confirm action="add_customer.php">
     <?php
        
echo "<input type=hidden name=\"name\" value=\"".$name."\">\n";
        echo
"<input type=hidden name=\"address\" value=\"".$address."\">\n";     
        echo
"<input type=hidden name=\"email\" value=\"".$email."\">\n";
        echo
"<input type=hidden name=\"password\" value=\"".$password."\">\n";
        
//echo "<input type=hidden name=\"cpassword\" value=\"".$cpassword."\">\n";
        
echo "<input type=hidden name=\"gender\" value=\"".$gender."\">\n";
        echo
"<input type=hidden name=\"birth_month\" value=\"".$birth_month."\">\n";
        echo
"<input type=hidden name=\"birh_day\" value=\"".$birth_day."\">\n";
        echo
"<input type=hidden name=\"birth_year\" value=\"".$birth_year."\">\n";
     
?>
     <center>
      <input type="submit"  name="Enviar" value="Confirmar"> //esta linea
               no aparece al ejecutar el script

      
  </center>
  </form>
  </td>
  </tr>            
</body>


gracias por vuestra ayuda

Re: el button del submit no aparece ¿?

Avatar de Zubyc
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 663 posts)

#1 Offline Zubyc Moderador 25 feb 08 (19:36)  
Es posible que te hayas dejado algunas comillas sin cerrar y por ello no reconoce bien el código HTML, dejando de mostrar el botón de submit.


Recomendación:

Para tener más limpio el código y evitar tener que escapar las comillas dobles todo el rato, te aconsejo que en lugar de esto:

Código PHP


<?  
echo "<input type=hidden name=\"address\" value=\"".$address."\">\n";    
?>



Hagas esto:

Código PHP


<input type="hidden" name="address" value="<?=$address?>">

Si, ya tenemos firma :)

Re: el button del submit no aparece ¿?

Avatar de joby
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 13 posts)

#2 Offline joby Usuario 25 feb 08 (20:15)  
gracias zubyc por tu respuesta
estuve repasando tal como dijiste al lo mejor se me olvido alguna comillas doble pero las comillas están bien
y al intentar por el segundo metodo que propusiste me da error ¿?nose porque?
saludos

vigila las condicionales

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#3 Offline jurena Usuario 25 feb 08 (20:20)  
abres muchas condicionales del tipo if (empty...), pero no pones ningún {}; el script no reconoce los límites. Pon también esas aperturas y cierres, que, según creo, son necesarios. Si arreglas los problemas con las comillas y pones los límites de las condiciones, verás probablemente el botón.

Re: el button del submit no aparece ¿?

Avatar de joby
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 13 posts)

#4 Offline joby Usuario 25 feb 08 (20:59)  
gracias jurena por tu ayuda
acabo de poner las llaves que me comentaste pero no parece nada io
el script en si no tiene mucha historia algo me falla ¿? nosé cual es ¿?
si véis otra cosa que me avisais por fa
saludos
bye bye

es un problema de condición, pero no de los límite

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#5 Offline jurena Usuario 25 feb 08 (21:30)  
mira esto:
if(empty($birth_month)|| empty($birth_day)|| empty($birth_year))
{echo "<h2>no hay fechas de nacimiento para enviar</h2><br>";
switch($birth_month)
{
case 1: echo"Enero";break;
case 2: echo"Febrero";break;
...
si haces eso, mira si está vacío el mes y luego, caso de que sea uno, dos, (pero si están vacíos). Imagino que querías poner if(!empty($birth_month), etc.
Yo lo he puesto, junto con las llaves y he visto aparecer el botón..., aunque te diré que lo que he hecho es ir desplazando el formulario bajo cada una de las condiciones hasta observar tras cuál no se veía. Era esta. He cambiado la condición y se ha visto. No lo he probado recolocándola en su sitio, pero creo que con esta idea te será suficiente...

Re: el button del submit no aparece ¿?

Avatar de joby
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 13 posts)

#6 Offline joby Usuario 26 feb 08 (01:11)  
gracias jurena
no entiendo muy bien tu solución pero yo en el formulario lo que queria hacer si algun campo de la fecha está vacio
que se muestre el msg estuve intentado con !empty($birth_day) && !empty() && !empty()
switch ()
etc pero en la confirmación del formulario me salia cada campo por debajo de su lugar
perdoname por molestarte tanto
saludos

a ver si es esto

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#7 Offline jurena Usuario 26 feb 08 (02:08)  
Había otros problemas, el principal este:
if(empty($gender))
die ("<h2> no se ha especificado el sexo </h2><br>");
else if(!($gender=="Male" || $gender=="Female"))
die ("<h2> nombre invalido para el sexo </h2><br>");
else
echo $gender;
al no haberse elegido ningún sexo en la carga de la página, el programa hacía lo que se le pedía, abortar con die. Eso impedía ver lo que venía a continuación.
He corregido algunas cosillas, pero con la única intención de que veas que el botón aparece. No obstante, te diré que yo ahora no haría una validación como esta en PHP, sino que lo intentaría en javascript. He añadido algunos tags html para que el botón se coloque debajo. Creo que eso habría que revisarlo, pero ahora solo me interesa que veas el botón debajo.

Código PHP


<head>
    <title></title>
</head>
<body>
  <h2 align="center">Pagina de confirmación de inscripción del usuario</h2>
<table width="400" border="1" align="center" cellpadding="5" cellspacing="0" bgcolor=#eeeeff>
    <tr>
   <td width="47%" align="right"><B>Nombre Completo</B></td>
   <td>
   <?php
     
if(empty($name))
       {echo
"<h2> no hay nombre para enviar </h2><br>";}
     else if (
strlen($name)<5 || strlen($name)>50)
       {echo
"<h2>Nombre inválido</h2><br>";}
     else
       {echo
$name;}
       
   
?>
   </td>
   </tr>
   <tr>
   <td width="47%" height="57" align="right"><B>Direccion</B></td>
   <td height="57">
   <?php
     
if(empty($address))
       {echo
"<h2>no hay dirección para enviar</h2><br>";}
     else if (
strlen($address)<5 || strlen($address)>200)
       {echo
"<h2> Dirección Inválida</h2><br>";}
     else
       {echo
$address;}
    
?>
    </td>
    </tr>
    <tr>
    <td width="47%" align="right" ><B>Correo electrónico</B></td>
    <td height="2">

    <?php
      
if(empty($email))
        {echo
"<h2> no hay email para enviar</h2><br>";}
      else if(
strlen($email)<5 || strlen($email)>100)
        {echo
"<h2> dirección de email es muy larga o muy corta</h2><br>";}
      else if(!
ereg("@",$email))
        {echo
"<h2> direccion de email es invalida no se encuentra @</h2><br>";}
      else  
        {echo
$email;}
     
?>
    </td>
    </tr>
    <tr>
    <td width="47%" align="right"><B>Contraseña:</B></td>
    <td height="2">
    <?php
      
if(empty($password)||empty($cpassword))
        {echo
"<h2> no hay contraseña para enviar</h2><br>";}
      else if (
strlen($password)<5 || strlen($cpassword)>15)
        {echo
"<h2> la contraseña es muy larga o muy corta</h2><br>";}
      else if (
strlen($cpassword)!== strlen($password))
        {echo
"<h2> la contraseña no coinciden</h2><br>";}
      else
      {
        for(
$i=0;$i<strlen($password);$i++)
         { echo
"*";}    
      }
    
?>      
    </td>
    </tr>
    <tr>
    <td width="47%" align="right"><B>Fecha de nacimiento</B></td>
    <td height="2">
    <?php
      
if(empty($birth_month) && empty($birth_day) && empty($birth_year))
        {echo
"<h2>no hay fechas de nacimiento para enviar</h2><br>";}
      
?></td></tr><tr><td><?php
      
if ($birth_month){
      switch (
$birth_month) {
        case
1: echo"Enero";break;
        case
2: echo"Febrero";break;
        case
3: echo"Marzo";break;
        case
4: echo"Abril";break;
        case
5: echo"Mayo";break;
        case
6: echo"Junio";break;
        case
7: echo"Julio";break;
        case
8: echo"Julio";break;
        case
9: echo"Agosto";break;
        case
10: echo"Septiembre";break;
        case
11: echo"Octubre";break;
        case
12: echo"Noviembre";break;
        default: die (
"<h2>Mes de naci invalido</h2>");
      }
      }
?></td></tr><tr><td><?php
      
if( $birth_day<1 ||$birth_day>31 )
         {print
"<h2>Fecha invalida</h2>";}
      else
         {echo
$birth_day."&nbsp";}
      if((
$birth_year<1900) || ($birth_year>2009))
         {echo
"<h2> año de nacimiento invalido</h2><br>";}
      else
         {echo
$birth_year;}                      
     
?></td></tr><tr><td><?php
     
     
       
if(empty($gender))
          {echo
"<h2> no se ha especificado el sexo </h2><br>";}
       else if((
$gender!="Male" || $gender!="Female"))
           {echo
"<h2> nombre invalido para el sexo </h2><br>";}
        else
           {echo
$gender;}
           
     
?>
    
     </td>
     </tr>
     <tr><td></td></tr>
     <td colspan="3">
     <form name="confirm" action="add_customer.php">
     <?php
        
echo "<input type=hidden name=\"name\" value=\"".$name."\">\n";
        echo
"<input type=hidden name=\"address\" value=\"".$address."\">\n";     
        echo
"<input type=hidden name=\"email\" value=\"".$email."\">\n";
        echo
"<input type=hidden name=\"password\" value=\"".$password."\">\n";
        
//echo "<input type=hidden name=\"cpassword\" value=\"".$cpassword."\">\n";
        
echo "<input type=hidden name=\"gender\" value=\"".$gender."\">\n";
        echo
"<input type=hidden name=\"birth_month\" value=\"".$birth_month."\">\n";
        echo
"<input type=hidden name=\"birh_day\" value=\"".$birth_day."\">\n";
        echo
"<input type=hidden name=\"birth_year\" value=\"".$birth_year."\">\n";
     
?>
     <center>
      <input type="submit"  name="Enviar" value="Confirmar">

      
  </center>
  </form>
  </td>
  </tr></table>            
</body>

Re: el button del submit no aparece ¿?

Avatar de joby
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 13 posts)

#8 Offline joby Usuario 26 feb 08 (04:17)  
gracias maestro jurena
acabo de aprobarlo y funciona a la prefección. ahora me surge otro problema k los datos no se insertan correctamente en la bd pero ya tratre el tema si dios kiere en el foro de bd.
muchisima gracias
saludos

sí, pero...

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#9 Offline jurena Usuario 26 feb 08 (08:38)  
joby,
como te he dicho, yo sigo teniendo muchas dudas sobre las ventajas de hacer lo que estás haciendo. Este tipo de validación en PHP puede suponer una molestia para el cliente. Si el cliente rellena todos los datos bien, no hay problema. Pero imagina por un momento que un cliente rellena todos los datos menos el género, y pulsa el botón de envío: el programa, es cierto, le devuelve un mensaje diciendo que no ha rellenado el texto, pero también le devuelve todo el formulario en blanco, y ya no será, según creo, recuperable la información escrita. Eso probablemente hará que no vuelva a rellenarlo, y si ocurre un par de veces, adiós definitivamente. Eso sucede porque el script funciona en el servidor y a lo más que llegas en el servidor con lo que tienes es a controlar los datos y enviar el mensaje, pero en él no puedes guardar los datos bien escritos en el formulario... Para eso, creo, debes utilizar javascript. Con una sintaxis muy parecida a la que tienes, puedes validar tu formulario, y todo sucede, no en el servidor, sino en el ordenador del cliente. El script avisa al cliente sobre los campos que faltan, incluso sitúa el cursor en ellos y no envía el formulario hasta después. Además, con eso descargarás al servidor de tareas que pueden hacerse en el cliente...
En cuanto a lo de la base, si algún dato que cargaba antes no lo carga ahora es por culpa de los cambios que hice. Revísalo, pero ten en cuenta esto que te digo sobre javascript. Yo estoy empezando a aplicarlo y con ayuda de la gente del foro javascript "todos acabamos aprendiendo".
Suerte

Re: el button del submit no aparece ¿?

Avatar de joby
Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1 Nivel 1

(Nivel 1 - 13 posts)

#10 Offline joby Usuario 26 feb 08 (15:18)  
muchisima gracias compadre
la verdad que me aclaraste un montón de cosas que no lo tenia en cuenta lo del javascript no lo domino muy por eso
opte por esta solución además estoy intentando hacer cada cosa por separado para ver donde me puede fallar mas o menos .
muchisimas gracias campeón
saludos

Re: el button del submit no aparece ¿?

Avatar de Zubyc
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 663 posts)

#11 Offline Zubyc Moderador 26 feb 08 (17:44)  
Sobre lo expuesto por jurena en el #9, comento un par de cosas.

La validación en javascript debe servir únicamente de complemento a la hora de enviar un formulario. No es nada recomendable centrar todo el proceso de validación en el lado del cliente por varias razones. La primera y más importante, porque un usuario puede desactivar la ejecución de javascript desde su navegador, saltándose toda comprobación, con las consecuencias que esto conlleva. Por ejemplo, si debemos introducir un DNI con el formato 00000000X, y alguien con Javascript deshabilitado introduce 00000000-H. La validación no se realizará, y ese valor se guardará en la base de datos con un formato equivocado, dando luego problemas en las consultas y demás.

En segundo lugar, porque esta validación se puede realizar en el lado del servidor, ofreciéndonos un mejor control y mayores posibilidades. Comentas que al hacerlo en el servidor tenemos el problema de que el formulario se borra. Esto no tiene por que ser así, si hacemos la validación correctamente:

1. Se carga el formulario
2. Usuario introduce datos
3. Usuario envía formulario
4. Formulario se valida en el lado del servidor.
5. Introducimos datos del formulario en una variable de sesión. Por ejemplo: $_SESSION['datos']['campo1'], $_SESSION['datos']['campo2'], y así...
6. Si datos son correcto hacemos las operaciones que queramos de inserción, actualización... y borramos la variable de sesión creada.
7. Si los datos no son correctos, volvemos a cargar el formulario informando de los errores encontrados, y rellenamos los campos con las variables de sesión creadas anteriormente.

Pues espero que os quede claro esto. No me puedo extender más que llevo prisa!

Hasta luego!!!

Si, ya tenemos firma :)

gracias, Zubyc

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#12 Offline jurena Usuario 26 feb 08 (18:10)  
Gracias, Zubyc,
Anotado queda. Ahora nos toca aprender algo sobre variables de sesión.
Venga, Zubyc, sé que nos lo has dado masticado, pero somos algo torpes: ¿sería mucho pedir un ejemplo con un solo dato para cargar en la base MySQL, para que los aprendices podamos tomar nota? Estoy muy interesado, no es broma. Es que estas cosas siempre las encontramos despedazadas y a los no técnicos nos resulta muy difícil entender la cronología del proceso. Si puedes, cuando tengas tiempo, nos pones un ejemplillo de lo que nos has enseñado.
prometemos aprender mucho de él.
Gracias

Re: el button del submit no aparece ¿?

Avatar de Zubyc
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 663 posts)

#13 Offline Zubyc Moderador 03 mar 08 (10:55)  
jurena, no se me ha olvidado lo que me pediste! a ver si me da tiempo a poner luego algún ejemplo sencillo :)

saludos!

Si, ya tenemos firma :)

esperaremos

Avatar de jurena
Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5 Nivel 5

(Nivel 5 - 729 posts)

#14 Offline jurena Usuario 03 mar 08 (11:09)  
Zubyc, sabemos que tienes mucho trabajo y también sabemos que no te olvidas de las cosas. Yo no tengo prisa y si consideras que hay un sitio en internet donde está todos explicado, nos conformaremos con eso. Gracias, por estar siempre ahí.

Responder mensaje

Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano, :: Registrar ::
Login / Password   

Web alojada en Zilos

php-hispano.net 2002 - 2008 | XHTML 1.0
Datos Legales | Webmaster