Foros del Web » Programando para Internet » PHP »

¿porqué no funciona?

Estas en el tema de ¿porqué no funciona? en el foro de PHP en Foros del Web. Hola, Llevo semanas pegándome con un código que viene en "guía esencial de php". Se trata de un script que contiene un formulario, comprueba que ...
  #1 (permalink)  
Antiguo 05/01/2003, 02:55
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 15 años, 4 meses
Puntos: 3
¿porqué no funciona?

Hola,

Llevo semanas pegándome con un código que viene en "guía esencial de php". Se trata de un script que contiene un formulario, comprueba que los datos obligatorios se han introducido, si están, da las gracias y si no están vuelve a mostrar el formulario con los datos que ya estuvieran rellenos.

He simplificado el ejemplo al máximo y he cambiado todo lo que se me ha ocurrido, pero nada. No me da ningún error; simplemente no funciona. ¿Alquien podría decirme en qué me he equivocado? Estoy completamente perdida

Código PHP:
<html> 
<head> 
 <title>Contact</title> 
</head> 

<body> 

<?php 


function imprime_form ($nombre$email) { 
  global 
$nombre
  global 
$email
?>  


  <form action="formulario.php" method="post"> 
  
  <table width="50%" border="1" align="center"> 
  <tr> 
    <td>  Nombre:</td> 
    <td> <input type="text" name="nombre" value=" "></td> 
  </tr> 
  
  <tr> 
    <td>  email:</td> 
    <td> <input type="text" name="email" value=" "></td> 
  </tr> 
  
  <tr> 
    <td colspan="2" align="center"> 
      <input type="submit" value="Enviar"> 
    </td> 
  </tr> 
  </table> 
      
  </form> 

<?php  

function 
confirma_form($nombre$email){ 
    global 
$nombre
  global 
$email
  
  
?> 
  
  
  <h3> Gracias</h3> 
  Recibirá su confirmación en el email que nos ha proporcionado. 
<?php  


function 
comprueba_form($nombre$email) { 
  global 
$nombre
  global 
$email
  
  if(!
$nombre || !$email) { 
    
    echo(
"<h3>Por favor, compruebe sus datos</h3>"); 
    
      if (!
$nombre) { 
        echo(
"No nos ha dicho su nombre"); 
      } 
      
      if (!
$email) { 
        echo(
"No nos ha dicho su email"); 
      } 
    
imprime_form($nombre$email); 
  
  } else { 
  
confirma_form($nombre$email); 
  } 




if (!
$submit) { 
  
  
imprime_form(" "" "); 
  
} else { 
  
comprueba_form($nombre$email); 

?> 

</body> 
</html>
Si alguien me puede decir qué es lo que le pasa a este código se lo agradecería mucho
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #2 (permalink)  
Antiguo 05/01/2003, 05:32
Avatar de BVis  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 15 años
Puntos: 0
Es posible que estén desactivadas las variables globales.

Mira de modificar el ejemplo usando los arrays "superglobales" en lugar de llamar directamente a las variables.

Mírate el manual oficial para más datos o:

http://usuarios.lycos.es/manualesvarios

ahí hay una explicación al respecto, también creo que en la FAQ de este foro, lo explica.

1 Saludo.
__________________
"Yo opino lo mismo que BVis, el de 'forosdelweb' " - Bill Gates
  #3 (permalink)  
Antiguo 05/01/2003, 05:45
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 15 años, 4 meses
Puntos: 3
mmm gracias

Las variables globales están activadas, snif

Ya no sé qué inventarme.
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #4 (permalink)  
Antiguo 05/01/2003, 12:04
Avatar de chalito  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago, chile
Mensajes: 221
Antigüedad: 15 años
Puntos: 0
en el campo value del form deben ir la variables correspondientes

<input type=text name=nombre value=<?=$nombre?>>

de esta forma debe funcionar

Saludos
  #5 (permalink)  
Antiguo 05/01/2003, 13:07
Avatar de Yagorat  
Fecha de Ingreso: marzo-2002
Ubicación: Madrid
Mensajes: 161
Antigüedad: 15 años, 8 meses
Puntos: 0
Buenas a todos.

Intenta explicar de que manera no te funciona, sino te salen los mensajes de error al no poner el nombre y mail, o simplemente si siempre lo acepta.

Me he fijado en una cosa, y es que en la linea de "submit" no lo pasa como variable:

Código:
<input type="submit" value="Enviar">
Intenta ponerlo con este añadido:

Código:
 <input NAME="submit" type="submit" value="Enviar">
Para que exista una variable llamada submit. No lo he podido probar, pero tal vez te ayude.
__________________
Más sabe el diablo por viejo que por diablo.
  #6 (permalink)  
Antiguo 05/01/2003, 13:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Esto no tiene sentido:

function comprueba_form($nombre, $email) {
global $nombre;
global $email;

Es decir .. le pasas por parametros $nombre y $email .. q a su vez lo estas asumiendo como global? ..

O una u otro método pero no los dos (por lo menos para las mismas variables):

function comprueba_form($nombre, $email) {

ó

function comprueba_form() {
global $nombre;
global $email;

Un saludo,
  #7 (permalink)  
Antiguo 05/01/2003, 13:21
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 15 años, 4 meses
Puntos: 3
Yagorat, creo que lo tienes esta noche lo pruebo. Lo de las variables en el formulario lo quité para ver si era eso lo que fallaba :) ahora lo pondré completo, os cuento qué me sale.

Muchas gracias por vuestro interés, de verdad
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
  #8 (permalink)  
Antiguo 05/01/2003, 13:29
Avatar de t0m|ta  
Fecha de Ingreso: julio-2002
Ubicación: Madrid
Mensajes: 369
Antigüedad: 15 años, 4 meses
Puntos: 3
Funciona

No sabéis lo que os lo agradezco, me estaba volviendo majareta, y por no dar mi brazo a torcer, he perdido más de un mes con la tontuna esta

Mil gracias
__________________
:ojotes: t0m|ta - IHQ :ojotes:
No tengo palabras
Instrucciones de andar por casa
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 16:21.