PDA

Ver la Versión Completa : Pasar variables del form al script php


vecino
06-06-2003, 22:44:53
Hola:

Soy novato en Php y mySql, estoy probando los ejemplos de insertar registros mediante un simple formulario html y en el 'action' llamar al scrip php para que realice el alta en la base de datos. Pues bien, TODOS los ejemplos me fallan en lo mismo, por lo tanto deduzco que el fallo es mio, y es lo siguiente: no reconoce las variables que se le pasa para insertar en el '' ... values ('$nombre','$email', ... etc... (no reconoce la variable "nombre" ni la variable "email".

Siempre me encuentro con ese problema y no sé si hay que configurar algo o qué es lo que pasa.

Uso w2000,apache,mysql,php

Saludos para todos.

P.D. No sé si esta pregunta debería ir en el foro de mySql en lugar de este.

vecino
10-06-2003, 00:34:16
Hola:

Ya que nadie me contesta, imagino que he redactado mal la pregunta, así que la vuelvo a explicar, por si acaso:

Tengo un formulario con dos campos, ejemplo: nombre y email.
Al pulsar sobre el botón 'submit' llama en el 'action' a un script llamado 'altas.php' que se encarga de guardar lo tecleado en el formulario en una base de datos mysql: ''insert into agenda (nombre,email) values ('$nombre','$email')...
Pues bien, SIEMPRE, con todos los ejemplos que he probado, me sale el error de que no conoce las variables nombre y email.

¿Qué puede ser?, tengo instalado win2000pro, php 4.3, mysql 4.0

Muchas gracias y saludos a todos.

roman
10-06-2003, 03:34:15
Para comenzar a discernir lo que pasa trata primero de olvidarte de la consulta sql e incluso del script. En la etiqueta <FORM> cambia la propiedad method a GET en lugar de POST, aprieta el botón "submit" y fijate que se ve en la línea de direcciones del navegador. Si no aparecen los nombres de tus campos es que no estás nombránndolos correctamente.

Si sí se ven, el siguiente paso es implementar un mínimo script que en lugar de hacer una consulta simplemente haga echo de tus variables:


<?
echo $nombre;
echo $mail;
?>


para ver si está pasando correctamente los valores.

De cualquier manera escribe aquí la forma exacta en que pones tus etiquetas <INPUT> para el nombre y el email.

// Saludos

vecino
10-06-2003, 22:42:21
Hola:

Ni con 'GET' ni con 'POST' sale nada. Cuando pulso el botón cambia de 'altas.htm' a 'altas.php', nada más.

Si pongo lo de
echo $nombre;
echo $email;
me dice que no conoce la variable.

Esto es lo que tengo escrito:

altas.htm

<HTML>
<HEAD></HEAD>
<BODY>
<FORM METHOD="post" ACTION="altas.php">
Nombre<br>
<INPUT TYPE="TEXT" NAME="nombre"><br>
Email<br>
<INPUT TYPE="TEXT" NAME="email"><br>
<INPUT TYPE="SUBMIT" value="Insertar">
</FORM>
</BODY>
</HTML>


altas.php

<?
mysql_connect("localhost","","");
mysql_db_query("prueba","insert into agenda (nombre,email) values ('$nombre','$email')");
?>


Más simple no puedo dejarlo. He probado también con el usuario root, con otros usuarios que he dado de alta con todos los permisos, con password y sin password, he instalado y desinstalado apache,mysql y php cinco o seis veces.

Si sustituyo las variables en el insert por cualquier otro valor, funciona correctamente. Así que seguro que hay algo, seguramente en la configuración del php o del mysql que no está bien, porque otra cosa no se me ocurre. ¿Tal vez algún cambio del php3 al php4 que repercuta en las variables que se pasan?.

Bueno, saludos y sigo buscando.

kayetano
11-06-2003, 18:17:02
Hola

Prueba con los arrays
- $PHP_POST_VARS (o $_POST ) para el metodo POST.
- $PHP_GET_VARS ( o $_GET ) para el metodo GET.

Dependiendo del metodo que utilices para mandar el formulario (POST o GET). Donde el indice es el nombre de la variable que has pasado.

Si no has configurado correctamente el php.ini debes utilizar estos arrays.

Para tener como variables los contenidos de estos arrays hay que poner a "true" la propiedad "global...." ( no me acuerdo :-( pero lo buscare )

roman
11-06-2003, 19:04:14
¡Excelente kayetano! Seguramente es eso. De acuerdo a la documentación la variable register_globals está en off por default a partir de la versión 4.2 y vecino trabaja con la versión 4.3.

Según el manual, no se recomienda poner en on esta variable por razones de seguridad que ahí explica. Es una verdadera lástima ya que hace la escritura del código más complicada (por lo menos menos legible).

// Saludos

vecino
11-06-2003, 21:00:07
Hola:

Efectivamente, la ''culpable'' era register_globals, ahora funciona perfectamente. Ha costado trabajillo descubrir el motivo.

Muchísimas gracias a todos los que os habéis molestado en ayudarme.

Saludos para todos.

dmassive
07-03-2004, 07:22:59
Buenisimo el post.

Ahora 2 preguntas mas.

1- ¿donde modifico register_globals = On?

2- ¿como enviaria el dato de un formulario con register_globals = Off?

__cadetill
07-03-2004, 12:23:31
1- ¿donde modifico register_globals = On?


en el php.ini que hay en c:\Windows


2- ¿como enviaria el dato de un formulario con register_globals = Off?

diría que no se puede, pero no soy ningún exporto del php para asegurarlo :D

kayetano
07-03-2004, 23:59:05
Hola

>2- ¿como enviaria el dato de un formulario con register_globals = Off?

El dato siempre se envia, lo hagas con "register_globals" igual a "on" o a "off" la diferencia es que la pagina que recibe el formulario lo hace como variables globales en el caso de estar a ON y como array de variables en el caso de estar a OFF.

Ejemplos Practivos:
Codiciones del ejemplo 1:
- register_globals = on
- Modo de envia del formulario "post" o "get"
- nombre de la variable a mandar "miVariable"
En este caso cuando recibes la variable puedes trabajar con ella simplemente con el nombre $miVariable.

Codiciones del ejemplo 2:
- register_globals = off
- Modo de envia del formulario "post"
- nombre de la variable a mandar "miVariable"
En este segundo caso debes trabajar con el array $PHP_POST_VARS["miVariable"] o (segun la version de PHP) $_POST["miVariable"]

Codiciones del ejemplo 3:
- register_globals = off
- Modo de envia del formulario "get"
- nombre de la variable a mandar "miVariable"
En este tercer caso debes trabajar con el array $PHP_GET_VARS["miVariable"] o (segun la version de PHP) $_GET["miVariable"]

Por ultimo, existe una funcion de la que no me acuerdo como se llama que es equivalente a "register_globals = on" simplemente debes ponerla al principio de la pagina y ya esta. Si la necesitas me lo indicas y la busco.

Espero haberte aclarado algo.