INSERT INTO no funciona!

Iniciado por vnak, 6 Agosto 2009, 19:43 PM

0 Miembros y 1 Visitante están viendo este tema.

vnak

Veréis, tengo un problema. Es en el registro de usuarios, hay un formulario :

<html>
<head>
<link rel="stylesheet" text="text/css" href="estilos.css">
</head>
<body>
<?

echo "
        <form method='post' onSubmit='javascript:crearusuario();'>
             <table border='0' width='465'>
                 <tr>

                   <td><b>Escull un nom d'usuari</b>: pensa que aquest nom et representarà, així que pensa-ho bé.</td>
                   <td> <input type='text' id='nomalumne'> </td>

                </tr>
                <tr>
                   <td><b>Contrasenya</b></td>
                   <td><input type='password' id='claualumne'></td>
                </tr>
                <tr>
                   <td><b>E-mail</b>: ha de ser una direcció vàlida</td>
                   <td><input type='text' id='emailalumne'></td>
                </tr>
                <tr>
                   <td><b>Verifica la contrasenya</b></td>
                   <td><input type='password' id='claualumneverificada'></td>
               </tr>
               <tr><td colspan='2'><input type='submit' value='Registrat'></td>
               </tr>

            </table>
       </form>
";

?>
</body>
</html>


la funcion del archivo funciones.js es la siguiente:

function crearusuario(){
new Ajax.Request('crearalumno.php', {
method: 'post',
parameters: { nomalumne: $F('nomalumne'), claualumne: $F('claualumne'), emailalumne: $F('emailalumne'), claualumneverificada: $F('claualumneverificada') },
onCreate: function(){
$('principal2').innerHTML = 'Espera, por favor...';
},
onSuccess: function(transport){
$('principal2').innerHTML = transport.responseText;
}
});
}


Y el archivo crearalumno.php:

<html>
<head>
<link rel="stylesheet" type="text/css" href="estilos.css">
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="funciones.js"></script>
</head>
<body>
<?
include_once("Conexion.php");
$nomalumne= $_POST['nomalumne'];
$claualumne= $_POST['claualumne'];
$emailalumne= $_POST['emailalumne'];
$claualumneverificada= $_POST['claualumneverificada'];

if($nomalumne == "" || $claualumne == "" || $emailalumne == "" || $claualumneverificada == "") {
echo "<div id='principal'>Uno de los campos está vacío"; include_once("registro.php"); echo"</div>"; }
else {
         if($claualumne != $claualumneverificada){
         echo "<div id='principal'>Comprueba que la contraseña y la verificación sean iguales"; include_once("registro.php"); echo"</div>";}
             
                 else {
                   
                   
                    $seleccionarusuario = mysql_query("SELECT * FROM cuentas WHERE usuario = '$nomalumne'");
                    $contarusuarios = mysql_num_rows($seleccionarusuario);
                    $seleccionaremail = mysql_query("SELECT * FROM cuentas WHERE email = '$emailalumne'");
                    $contaremail = mysql_num_rows($seleccionaremail);
                    if($contarusuarios == 0 && $contaremail == 0){
                    mysql_query("INSERT INTO cuentas(usuario,password,email) VALUES ('$nomalumne','$claualumne','$emailalumne')");
                    echo"<div id='principal'>Gracias por registrarte, puedes identificarte a continuación<br>";
                    echo"o puedes volver al <a href='javascript:cargarseccion(\"inicio\")'>Inicio</a><br><br>";
                    include_once("Login.php");
                    echo"</div>";
                    }
                    else {
                    echo"<div id='principal'>Ya hay un usuario con ese nombre o ese email<br><br>"; include_once("registro.php"); echo"</div>";
                    }


}}
?>
</body>
</html>



Pues bien, todo funciona perfectamente, los errores saltan bien, pero cuando le doy a registrar, me sale el echo "Gracias por registrarte tal y tal" se incluye el login y todo, logueo y me dice que los datos son erroneos, miro en mi base de datos y no se ha creado ningun registro, es decir el INSERT INTO me falla y no se por qué razón.


XafiloX

Mira a ver si esta te funciona...
Código (php) [Seleccionar]
mysql_query("INSERT INTO cuentas(usuario,password,email) VALUES('{$nomalumne}','{$claualumne}','{$emailalumne}')");

rigoxls

Saludos,

Intenta colacarle el nombre a tus campos de texto

Código (php) [Seleccionar]
<form method='post' onSubmit=' ‫ ‫javascript:crearusuario();'>
            <table border='0' width='465'>
                <tr>

                  <td><b>Escull un nom d'usuari</b>: pensa que aquest nom et representarà, així que pensa-ho bé.</td>
                  <td> <input type='text' id='nomalumne' name='nomalumne'> </td>

               </tr>
               <tr>
                  <td><b>Contrasenya</b></td>
                  <td><input type='password' id='claualumne' name='claualumne'></td>
               </tr>
               <tr>
                  <td><b>E-mail</b>: ha de ser una direcció vàlida</td>
                  <td><input type='text' id='emailalumne' name='emailalumne'></td>
               </tr>
               <tr>
                  <td><b>Verifica la contrasenya</b></td>
                  <td><input type='password' id='claualumneverificada' name='claualumneverificada'></td>
              </tr>
              <tr><td colspan='2'><input type='submit' value='Registrat'></td>
              </tr>

           </table>
      </form>
No hay verdades absolutas sin ciegas posiciones !!!

vnak

Gracias por responder, pero he probado lo que me habéis dicho y nada soluciona el problema  :-(

XafiloX

Entonces deberias revisar que llegan bien todos los valores que quieres meter (por unos cuantos echo antes de la consulta para ver si es que hay algun fallo y la variable no tiene datos)... Y si no es eso, deberias mirar a ver si se produce algun error en el insert utilizando mysql_error...

EDITO:aqui hay una explicacion de mysql_error: http://docs.php.net/manual/es/function.mysql-error.php