Foros del Web » Programando para Internet » PHP »

No funciona HTTP_POST_VARS o INSERT INTO

Estas en el tema de No funciona HTTP_POST_VARS o INSERT INTO en el foro de PHP en Foros del Web. He buscado en mil sitios, he probado tutoriales a mansalva, he creado paginas de registros (vamos, formularios) y na de na. Mi problema es el ...
  #1 (permalink)  
Antiguo 30/05/2005, 09:23
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 0
No funciona HTTP_POST_VARS o INSERT INTO

He buscado en mil sitios, he probado tutoriales a mansalva, he creado paginas de registros (vamos, formularios) y na de na. Mi problema es el siguiente, cuando ya tengo creado todo el formulario (formulario.html) y otra pagina que en teoria registra en mysql los datos del formulario (registrar.php); me meto en formulario, pongo los datos, y cuando doy a enviar me lleva a registrar php (bien conectado al servidor, a la base de datos, a la tabla bien) pero en lo de insertar los datos en la tabla me da error. Porque puede ser ??

############### REGISTRAR.PHP #########################
<html>
<body>
<?php

$link = mysql_connect("--------", "root","------");
mysql_select_db("bdcuentas",$link); //Comprobamos si hemos recibido datos del formulario (enviar)

if ($enviar) {
$sql = "INSERT INTO usuarios (nick, email, password, nombre) ";
$sql .= "VALUES ('$nick', '$email', '$password', '$nombre')";
$result = mysql_query($sql);
....

Última edición por frange; 30/05/2005 a las 09:24 Razón: no me funcionan los registros en mysql
  #2 (permalink)  
Antiguo 30/05/2005, 09:39
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
y el error es????? nadie aqui es adivino
también trata
Código PHP:
mysql_query($query) or die(mysql_error()); 
saludos
  #3 (permalink)  
Antiguo 30/05/2005, 14:21
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 0
no esque de error, en verdad, sino que he puesto:
if ($link)
{
echo "ha conectado al servidor";
}else{
echo " no ha conectado";
}

if ($basedatos)
{
echo "ha conectado al servidor";
}else{
echo " no ha conectado";
}

y en esas me pone que ha conectado bien, y en la que me pone que no ha conectado es en la de $sql (insert into.......)
esque segun compruebo, no manda el boton de ENVIAR la variable a la otra pagina o algo asi. q ago ??

thankx
  #4 (permalink)  
Antiguo 30/05/2005, 14:24
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
postea completo tu código, y agrega lo que te dije en mi post anterior, eso te mostrara el error en la consulta sql
  #5 (permalink)  
Antiguo 30/05/2005, 14:31
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
La pregunta clave aquí es:
¿De dónde vienen las variables $enviar $nick, $email, $password, $nombre?
Si vienen de un formulario con el método POST, deberás accederlos como:
$_POST['enviar'], $_POST['nick'], etc...

Saludos
  #6 (permalink)  
Antiguo 30/05/2005, 15:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 0
Por si influye algo, tengo instalao el appserv 2.5 o algo asi en WINDOWS XP
Acabo de juntar las 2 paginas en una, FORMULARIO.PHP:
y lo de enviar no me funciona, nunca entra al IF:

<html>
<body>

<?php
if ($enviar) {
// process form
$link = mysql_connect("---------", "root", "");
$resulto = mysql_select_db("bdusuarios",$link);

if ($link)
{
echo "bien conectao el servidor";
} else {
echo "mal conectado al servidor";
}
if ($resulto)
{
echo "bien conectao a la base de datos";
} else {
echo "mal conectado a la base de datos";
}
$sql = "INSERT INTO usuarios (nombre, usuario, password, email, sms) ".
"VALUES ('$nombre', '$usuario', '$password', '$email', '$sms')";
$result = mysql_query($sql) or die(mysql_error());

if ($result)
{
echo "¡Gracias! Hemos recibido sus datos.\n";
} else {
echo "ERROR al insertar datos";
}

}else{
?>

<form method="post" action="formulario.php?$enviar">
Nombre :<input type="Text" name="nombre"><br>
Usuario :<input type="Text" name="usuario"><br>
Password :<input type="Password" name="password"><br>
E-mail :<input type="Text" name="email"><br>
SMS al Web Master :<textarea name="sms" cols="50" rows="4"></textarea><br>
<input type="Submit" name="enviar" value="Aceptar información">
</form>

<?php
} //end if
?>

</body>
</html>


Gracias de nuevo,

Última edición por frange; 30/05/2005 a las 15:18
  #7 (permalink)  
Antiguo 30/05/2005, 15:59
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
Me cito:
Cita:
Iniciado por jpinedo
¿De dónde vienen las variables $enviar $nick, $email, $password, $nombre?
Si vienen de un formulario con el método POST, deberás accederlos como:
$_POST['enviar'], $_POST['nick'], etc...
O sea... empezar por...
Código PHP:
<?php
if (isset($_POST['enviar'])) {// mejor con el isset() para evitar "warnings"
Y así con todas las variables que vienen del formulario.

Saludos
  #8 (permalink)  
Antiguo 30/05/2005, 16:53
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 0
oye, lo siento, pero hoy te ha tokado aguantar al plasta de turno ,
1º He puesto lo primero del if (isset($_POST['enviar'])) {
y cuando lo hago ya porfin almacena en la base de datos, pero... al mirar lo que he introducido en el formulario veo que está todo vacio. He intentao :

$sql = "INSERT INTO usuarios (nombre, usuario, password, email, sms) ".
"VALUES ('isset($_POST['$nombre'])', 'isset($_POST['$usuario']), .....)";

pero no me rula la pagina aora, y poniendolo arriba tampoko, asiq si no es muxa molestia, dime donde tengo q poner eso q me has dicho en las variables... isset($_POST['$nombre']) o lo q sea.



Me alegro de que este foro funcione asi de bien !! no se si sois moderadores o no pero sois la osti tu !!
  #9 (permalink)  
Antiguo 30/05/2005, 16:58
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
isset() sólo sirve para saber si una variable está definida, no para obtener su valor.
http://www.php.net/isset
Por eso simplemente deberías comprobarlo en la variable $_POST['enviar']. Para el resto simplemente llama a la variable:
Código PHP:
$sql "INSERT INTO usuarios (nombre, usuario, password, email, sms) ".
"VALUES ('".$_POST['$nombre']."', '".$_POST['$usuario']."', '".$_POST['password']."', '".$_POST['email']."', '".$_POST['sms']."')"
Saludos
  #10 (permalink)  
Antiguo 30/05/2005, 17:06
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 0
MUCHISISISISISISISIMAS GRACIAS. Ya ta to solucionao creo
  #11 (permalink)  
Antiguo 31/05/2005, 11:29
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta

como podría hacer una consulta por ejemplo, una pagina que me mostrase los nombres que sean por ejemplo JUAN ....... ("SELECT nombre FROM usuarios WHERE .... ¿nombre='$nombre'?

siendo $nombre una variable que le paso a la pagina :S

que falla en esto ?? porque no me da error, sino lo contrario q se ha enviado bien, pero no envia nada de email:

--------------------------------formuemail.php-----------------------
<body>
<?php

if (isset($_POST['enviar'])) {

$sfrom=$_POST['micuenta']; //cuenta que envia
$sdestinatario=$_POST['tucuenta']; //cuenta destino
$ssubject=$_POST['tema']; //subject
$shtml=$_POST['mensaje']; //mensaje
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";
mail($sdestinatario,$ssubject,$shtml,$sheader);
}else{
?>

<form method="post" action="formuemail.php?$enviar">
Pon tu email aqui :<input type="Text" name="micuenta"><br>
Email de destino :<input type="Text" name="tucuenta"><br>
Nombre del email o tema :<input type="Text" name="tema"><br>
Mensaje del email :<textarea name="mensaje" cols="50" rows="4"></textarea><br>
<input type="Submit" name="enviar" value="Aceptar información">
</form>

<?php
} //end if

?>


</body>
</html>
---------------------------------------------------------------------




Última edición por frange; 31/05/2005 a las 12:01
  #12 (permalink)  
Antiguo 31/05/2005, 17:18
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
No entendí qué tiene que ver "Juan" con que no se envíe el email.
Lo de la variable $nombre, siempre depende de dónde viene.

¿En qué parte del script te imprime que se ha enviado bien?

Saludos
  #13 (permalink)  
Antiguo 31/05/2005, 17:31
 
Fecha de Ingreso: mayo-2005
Mensajes: 4
Antigüedad: 12 años, 7 meses
Puntos: 1
Ja ja, creo que entre muy muy tarde, a tratar de ayudarte y es que la verdad, habia una solucion mas sencilla a tus problemas al pasar variables de una pagina a tu pagina de registro.php ya que yo tube el mismo problema y cuando conoci la respuesta facil, me mori de la risa.

Adivina que solo tenias que poner al principio de tu codigo esto:
<?php
extract($_POST);
?>
Y con esta instruccion sacas todas las variables sin tener que estar sacandolas una por una. En fin, por eso te digo que llegue tarde.

Saludos, espero que alguien le sirva esto.
Atte: Vic!
  #14 (permalink)  
Antiguo 31/05/2005, 17:56
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
Particularmente, yo prefiero trabajar con el superglobal $_POST, $_GET, etc.. justamente por una de las razones de su existencia: Claridad en el código. O sea, saber de dónde proviene una variable.
Si se trata de scripts antiguos que hay que adaptar al register globals = OFF, tal vez el extract() sea una buena alternativa transitoria.
Pero si son scripts nuevos, sería bueno ir acostumbrándonos a utilizar superglobales.

Repito: Opinión personal.

Saludos
  #15 (permalink)  
Antiguo 01/06/2005, 14:13
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 0
weno, ya sabeis q yo de php entiendo lo minimo, q cuando hay un problema, lo tengo dificil de superar solo... lo de register global es verda, creo q de eso va algo, pero no se del todo; esq pasao mañana tengo que presentar una especie de pagina en php con las principales funciones Agregar (me funciona :D), consultar (tambien funciona .... q raro :D) pero estoy con borrar y modificar que por muchos archivos que tengo no consigo hacer na, siempre se me keda en blanco las paginas php esas.:S

como se haria con las variables esas _$POST['']: BORRAR: que primero pida el Numero de ficha (Nficha) y a partir de ese dato que borre en una tabla (jugadores) el jugador que tenga esa Nficha.
He intentado asi:
//BORRAR
<?php
extract($_POST);
if (isset($enviar])){

$link = mysql_connect("localhost", "root", "");
mysql_select_db("bdcuentas",$link);

if(!$link) {echo "Error al conectar"; exit;}

$nc=$HTTP_POST_VARS['Nficha'];

$sql = "DELETE FROM jugadores WHERE Nficha=$nc")
$result = mysql_query($sql);
if ($result)
{
echo "Ha borrado correctamente";
} else {
echo " Error al borrar ";
}
}else{

echo "Debe especificar un Numero de ficha.\n";

}

?>
Me vais a mandar a la mierda con tantas preguntas..... pero como se hace el maldito borraaaaaaaaaaaaaaaaaaaaaaaaaaar !!! ?? y modificar seria algo parecido, creo q sabiendo borrar sabria coger el Nficha para hacer el UPDATE no??

Gracias, Saludos

Última edición por frange; 01/06/2005 a las 16:50
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:25.