Foros del Web » Programando para Internet » Javascript » Frameworks JS »

problema con formulario el $_POST nunca coge valor...

Estas en el tema de problema con formulario el $_POST nunca coge valor... en el foro de Frameworks JS en Foros del Web. Muy buenas, Quería plantear un problemilla... estoy utilizando esta 'mini libreria' Código PHP: function  llamarasincrono  ( url ,  id_contenedor ) {     var  pagina_requerida  =  false ...
  #1 (permalink)  
Antiguo 16/05/2009, 12:55
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 3 meses
Puntos: 13
Exclamación problema con formulario el $_POST nunca coge valor...

Muy buenas,

Quería plantear un problemilla...

estoy utilizando esta 'mini libreria'

Código PHP:
function llamarasincrono (urlid_contenedor)
{
    var 
pagina_requerida false;
    if (
window.XMLHttpRequest)
    {
        
// Si es Mozilla, Safari etc
        
pagina_requerida = new XMLHttpRequest ();
    } else if (
window.ActiveXObject)
    {
        
// pero si es IE
        
try 
        {
            
pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
        }
        catch (
e)
        {
            
// en caso que sea una versión antigua
            
try
            {
                
pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");
            }
            catch (
e)
            {
            }
        }
    } 
    else
    return 
false;
    
pagina_requerida.onreadystatechange = function ()
    {
        
// función de respuesta
        
cargarpagina (pagina_requeridaid_contenedor);
    }
    
pagina_requerida.open ('GET'urltrue); // asignamos los métodos open y send
    
pagina_requerida.send (null);
}
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina (pagina_requeridaid_contenedor)
{
    if (
pagina_requerida.readyState == && (pagina_requerida.status == 200 || window.location.href.indexOf ("http") == - 1)){
        
document.getElementById (id_contenedor).innerHTML pagina_requerida.responseText;
    }
    else if(
pagina_requerida.readyState == 1){
        
//    ...en caso contrario, le diremos al usuario que los estamos cargando:
      
document.getElementById (id_contenedor).innerHTML '<br></br><br></br><div align="center"><p>Cargando...</p<img src="./js/ajax_loader.gif" align="absmiddle" /> <p>';
    }

Bien, la librería funciona perfectamente. El caso es que en un formulario: hago

Código PHP:
<form name="form1" method="post" action="javascript:llamarasincrono('./php/sesiones/reg.php', 'contenidos');">
  <
TABLE>
    <
TBODY>
      <
TR>
        <
TD align="right">Nombre de usuario:
          <
INPUT maxLength="25" size="15" name="username">
        </
TD>
      </
TR>
      <
TR>

..... 
El formulario está en la misma página que la comprobación, en reg.php, siguiente:

Código PHP:
if (isset($_POST["username"])) {
    
$username $_POST["username"];
    
$password $_POST["password"];
    
$cpassword $_POST["cpassword"];
    
$email $_POST["email"];
    
// Hay campos en blanco
    
if($username==NULL|$password==NULL|$cpassword==NULL|$email==NULL) {
        echo 
"un campo está vacio.";
    }else{
        
// ¿Coinciden las contraseñas?
        
if($password!=$cpassword) {
            echo 
"Las contraseñas no coinciden";
        }else{
        
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
            
$checkuser mysql_query("SELECT alias FROM usuarios WHERE alias='$username'");
            
$username_exist mysql_num_rows($checkuser);
            
            
$checkemail mysql_query("SELECT email FROM usuarios WHERE email='$email'");
            
$email_exist mysql_num_rows($checkemail);
            
            if (
$email_exist>0|$username_exist>0) {
                echo 
"EL nombre de usuario o la cuenta de correo estan ya en uso";
            }else{
            
//Todo parece correcto procedemos con la inserccion
                
$query "INSERT INTO usuarios (alias, pass, email) VALUES('$username','$password','$email')";
                echo 
"Almost perfection";
                
mysql_query($query) or die(mysql_error());
                echo 
"Perfection";
            }
        }
    }
}else {
    echo 
"<p>whats...</p>";

entonces siempre me enra en 'whats'.... Lo gracioso es que si pongo


Código PHP:
<form name="form1" method="post" [B]action="reg.php"[/B]>.... 
funciona bien, pero claro, no me lo carga en el <div id="contenidos">

Es posible que al pasar los valores del formulario de la manera que lo hago, se pierdan los $_POST ? si es así, cómo podría hacerlo para tener el 'post' en el div contenido?

muchas gracias de antemano!!!
  #2 (permalink)  
Antiguo 16/05/2009, 13:00
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema con formulario el $_POST nunca coge valor...

Es que no estás enviando ningún valor, estás solicitando la página por el método GET y no envías ningún valor del formulario:
Código Javascript:
Ver original
  1. pagina_requerida.open ('GET', url, true);
  2. pagina_requerida.send (null);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 16/05/2009, 13:27
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 3 meses
Puntos: 13
Bueno.. entiendo que si..

De hecho, todo está en el mismo fichero..

reg.php

Código PHP:

<?
require('../configuracion.php');
session_start();


// Preguntaremos si se han enviado ya las variables necesarias
if (isset($_POST["username"])) {
    
$username $_POST["username"];
    
$password $_POST["password"];
    
$cpassword $_POST["cpassword"];
    
$email $_POST["email"];
    
// Hay campos en blanco
    
if($username==NULL|$password==NULL|$cpassword==NULL|$email==NULL) {
        echo 
"un campo está vacio.";
    }else{
        
// ¿Coinciden las contraseñas?
        
if($password!=$cpassword) {
            echo 
"Las contraseñas no coinciden";
        }else{
        
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
            
$checkuser mysql_query("SELECT alias FROM usuarios WHERE alias='$username'");
            
$username_exist mysql_num_rows($checkuser);
            
            
$checkemail mysql_query("SELECT email FROM usuarios WHERE email='$email'");
            
$email_exist mysql_num_rows($checkemail);
            
            if (
$email_exist>0|$username_exist>0) {
                echo 
"EL nombre de usuario o la cuenta de correo estan ya en uso";
            }else{
            
//Todo parece correcto procedemos con la inserccion
                
$query "INSERT INTO usuarios (alias, pass, email) VALUES('$username','$password','$email')";
                echo 
"Almost perfection";
                
mysql_query($query) or die(mysql_error());
                echo 
"Perfection";
            }
        }
    }
}else {
    echo 
"<p>whats...</p>";

?>



<div class="cssbox">  <div class="cssbox_head">  <h2>Add New Link</h2>  </div>  <div class="cssbox_body">

<form name="form1"[B] method="post" action="javascript:llamarasincrono('./php/sesiones/reg.php', 'contenidos');"[/B]>
  <TABLE>
    <TBODY>
      <TR>
        <TD align="right">Nombre de usuario:
          <INPUT maxLength="25" size="15" name="username">
        </TD>
      </TR>
      <TR>
        <TD align="right">Password:
          <INPUT type="password" maxLength="25" size="15" value="" name="password">
        </TD>
      </TR>
      <TR>
        <TD align="right">Repite Password:
          <INPUT type="password" maxLength="25" size="15" value="" name="cpassword">
        </TD>
      </TR>
      <TR>
        <TD align="right">Email:
          <INPUT maxLength="25" size="15" name="email">
        </TD>
      </TR>
      <TR>
       [B] <TD align="middle"><INPUT name="submit" type="submit" value="Registro">[/B]
        </TD>
      </TR>
    </TBODY>
  </TABLE>

</form>

</div></div>

Los valores del formulario son los que envio.. no?

Vale, no tenía ni idea de lo que decías.. jeje

he añadido otra funcion fajax para pasar el formulario, que es:

Código PHP:

 
function FAjax (url,capa,valores,metodo)
{
          var 
ajax=creaAjax();
          var 
capaContenedora document.getElementById(capa);

/*Creamos y ejecutamos la instancia si el metodo elegido es POST*/
            
if(metodo.toUpperCase()=='POST'){
                     
ajax.open ('POST'urltrue);
                     
ajax.onreadystatechange = function() {
                     if (
ajax.readyState==1) {
                                      
capaContenedora.innerHTML="Cargando.......";
                     }
                     else if (
ajax.readyState==4){
                               if(
ajax.status==200)
                               {
                                    
document.getElementById(capa).innerHTML=ajax.responseText;
                               }
                               else if(
ajax.status==404)
                                                         {
            
                                        
capaContenedora.innerHTML "La direccion no existe";
                                                         }
                                       else
                                                         {
                                        
capaContenedora.innerHTML "Error: ".ajax.status;
                                                         }
                                                }
                              }
                     
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                     
ajax.send(valores);
                     return;
            }
            
/*Creamos y ejecutamos la instancia si el metodo elegido es GET*/
            
if (metodo.toUpperCase()=='GET'){
            
                     
ajax.open ('GET'urltrue);
                     
ajax.onreadystatechange = function() {
                     if (
ajax.readyState==1) {
                                                  
capaContenedora.innerHTML="Cargando.......";
                     }
                     else if (
ajax.readyState==4){
                               if(
ajax.status==200){
                                                         
document.getElementById(capa).innerHTML=ajax.responseText;
                               }
                               else if(
ajax.status==404)
                                                         {
            
                                        
capaContenedora.innerHTML "La direccion no existe";
                                                         }
                                                         else
                                                         {
                                        
capaContenedora.innerHTML "Error: ".ajax.status;
                                                         }
                                                }
                              }
                     
ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                     
ajax.send(null);
                     return
            }


y ahora llamo el formulario así


<form method="post" onsubmit="FAjax('./php/sesiones/reg.php','contenidos','username=
'+document.getElementById('username').value
+'&username='+document.getElementById('username'). value,'post'); return false" action="#">

<TABLE>
<TBODY>
<TR>
<TD align="right">Nombre de usuario:
<INPUT maxLength="25" size="15" name="username">
</TD>
</TR>
<TR>
<TD align="right">Password:
<INPUT type="password" maxLength="25" size="15" value="" name="password">
</TD>
</TR>
<TR>
<TD align="right">Repite Password:
<INPUT type="password" maxLength="25" size="15" value="" name="cpassword">
</TD>
</TR>
<TR>
<TD align="right">Email:
<INPUT maxLength="25" size="15" name="email">
</TD>
</TR>
<TR>
<TD align="middle"><INPUT name="submit" type="submit" value="Registro">
</TD>
</TR>
</TBODY>
</TABLE>

</form>

El problema ahora es que al enviar el formulario, me carga, en 'contenidos' una página vacia.. :S

-EDIT-

ah, me he fijado que me refresca toda la página.... ¿?¿?¿?

Última edición por GatorV; 16/05/2009 a las 20:15
  #4 (permalink)  
Antiguo 16/05/2009, 17:10
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema con formulario el $_POST nunca coge valor...

Si te fijas, tu input no tiene como id username, tiene como name "username", por lo que el uso de getElementById es incorrecto; lo cual hace que se produzca un error y se envíe el formulario como tal (por eso se recarga la página).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 17/05/2009, 06:18
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 3 meses
Puntos: 13
Respuesta: problema con formulario el $_POST nunca coge valor...

Aháaaa!!!! grracias david, eres grande! haha
  #6 (permalink)  
Antiguo 31/10/2009, 12:14
 
Fecha de Ingreso: enero-2009
Ubicación: Valencia (España)
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: problema con formulario el $_POST nunca coge valor...

Hola a todos.



Sólo agradecer este post a los intervinientes.

Llevo tres meses con una web en funcionamiento, y tenía conflictos con firefox / Chrome / etc...... en los registros y validaciones de javascript......

PUES EL ERROR ERA EL QUE COMENTAIS AQUÍ. Sólo le daba el valor a "name" pero nunca hacía lo propio con "id", vamos, que ni lo ponía........ y esa era la solución, darle su "id" a cada campo..........

Gracias de nuevo a todos.

Un saludo
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 20:22.