Foros del Web » Programando para Internet » PHP »

No puedo pasar variables

Estas en el tema de No puedo pasar variables en el foro de PHP en Foros del Web. Hola amigos Soy novato, estoy haciendo un sencillo form que pasa una variable a un .php que la procesa. Pero siempre me llega vacia. Ya ...
  #1 (permalink)  
Antiguo 18/02/2005, 15:57
 
Fecha de Ingreso: noviembre-2002
Mensajes: 539
Antigüedad: 15 años, 1 mes
Puntos: 1
Pregunta No puedo pasar variables

Hola amigos
Soy novato, estoy haciendo un sencillo form que pasa una variable a un .php que la procesa. Pero siempre me llega vacia. Ya verifique register en on.

El form es

<form method="POST" action="http://mysevidor/buscador.php3">
<strong>Palabra clave:</strong> <input type="text" name="T1" size="20"><br><br>
<input type="submit" value="Buscar" name="buscar">
</form>

y buscador.php3 comienza asi

if (!isset($buscar)){
echo "Debe especificar un criterio de búsqueda";
echo "</body></html> \n";
exit;
}

y siempre me toma como vacia y me indica el mensaje "Debe especificar un criterio de búsqueda".

Pueden ayudarme? ya que estamos en esto cual es la mejor y mas segura manera de pasar parametros entre paginas?

gracias y saludos
Pedrok
  #2 (permalink)  
Antiguo 18/02/2005, 16:01
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
la variable que vos tenes que recivir es T1 y no "buscar", esta ultima la podes usar solamente para comprobar si el form se envio bien...

if ($_POST['T1']) {
echo 'busqueda correcta';
}
else {
echo 'No ingresaste ninguna palabra clave';
}
__________________
I Love Programming...

Última edición por FuLaNo_; 18/02/2005 a las 16:02
  #3 (permalink)  
Antiguo 21/02/2005, 14:59
 
Fecha de Ingreso: noviembre-2002
Mensajes: 539
Antigüedad: 15 años, 1 mes
Puntos: 1
Gracias FuLano

Me distes una buena ayuda, ahora dime algo cual es la diferencia de recibir variables como yo lo puse:

if (!isset($buscar)){
echo "Debe especificar un criterio de búsqueda";
echo "</body></html> \n";
exit;
}

o como me pusistes en el ejemplo:
if ($_POST['T1']) {
echo 'busqueda correcta';
}
else {
echo 'No ingresaste ninguna palabra clave';
}

Que es mas seguro y eficiente?

gracias nuevamente.
saludos
pedro
  #4 (permalink)  
Antiguo 21/02/2005, 15:14
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
En realidad están mezclando las cosas.
- Primero: SIEMPRE utiliza $_POST['variable'] en lugar de simplemente $variable cuando el formulario se envíe por método POST. (Eso no lo voy a explicar aquí...pero en las FAQ's de este foro tienes una muy buena explicación de Cluster).

Ahora sí:
- El formulario enviará dos variables:

<input type="text" name="T1" size="20">. Una variable que deberás recoger como $_POST['T1'] y que contiene lacadena de texto introducida en ese campo.

<input type="submit" value="Buscar" name="buscar">. Otra variable que deberás recoger como $_POST['buscar'] y que tiene como valor "Buscar".

---------------------------------------------------
Supongo que eso ya lo sabías.
Normalmente se utiliza la variable declarada en el botón "submit" para comprobar si el formulario ha sido enviado (en realidad se puede hacer con cualquier variable del formulario)... Si la variable $_POST['buscar'] existe, quiere decir que ese formulario ya ha sido enviado. Y eso es justamente lo que hace tu código.

El tema seguramente es que tienes la directiva register globals desactivada y ya no te reconoce $buscar como global (por eso conviene utilizar $_POST['buscar']... así funcionará de todas maneras).

Si te das cuenta y sigues utilizando tu código original pero utilizando $_POST['buscar'] verás que tengo razón.
Código PHP:
if (!isset($_POST['buscar'])){
echo 
"Debe especificar un criterio de búsqueda";
echo 
"</body></html> \n";
exit;

Como te dije, esta comprobación la puedes hacer con cualquiera de las variables del formulario y pasará lo mismo. Por eso cuando FuLaNo_ pone $_POST['T1'] también funciona.

En el resto de tu código también te conviene cambiar las llamadas a $T1 por $_POST['T1'] y así siempre que tengas variables de formulario, método POST.

Saludos
  #5 (permalink)  
Antiguo 22/02/2005, 15:02
 
Fecha de Ingreso: noviembre-2002
Mensajes: 539
Antigüedad: 15 años, 1 mes
Puntos: 1
Gracias a ambos, me han sido de inestimable ayuda en mis primeros pasos en PHP.

saludetes
pedro
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 12:24.