Foros del Web » Programando para Internet » PHP »

Pobrema al insertar datos

Estas en el tema de Pobrema al insertar datos en el foro de PHP en Foros del Web. Como bien dice el titulo ese es mi proble, no soy experto usando mysql, pero tengo una tabla con estas propiedades tabla de nombre users ...
  #1 (permalink)  
Antiguo 14/06/2010, 21:04
danneg
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Pobrema al insertar datos

Como bien dice el titulo ese es mi proble, no soy experto usando mysql, pero tengo una tabla con estas propiedades

tabla de nombre users

campos username, password, firstname, lastname, y sex los tengo definidos como text

campo id esta en auto incremento del tipo int

campo age tiene el tipo date

bueno el problema es que a la hora de insertar los datos

el campo id funciona bien, se auto incrmenta, los datos del tipo text se muestran con un "1", y el campo date lo almacena de esta forma: 0000-00-00

quisiera saber cual es el error que estoy cometiendo, pienso que es la tabla, pero de igual les dejo parte de mi codigo de registro

Código PHP:
<?php //Register

session_start();
$fase = isset($_GET["fase"]) ? $_GET["fase"] : 'uno';

switch (
$fase) {
    case 
'uno':
        
$form = <<<EOPAGE
<h1>¿A&uacute;n no tienes una cuenta?</h1>
<h2>¿Qu&eacute; esperas?</h2>
<h2>¡Registrate!</h2>
<form action="register.php?fase=dos" method="post">
    <p><label for="username">Nombre de usuario</label><input type="text" name="username" /></p>
    <p><label for="email">Correo electronico</label><input type="email" name="email" /></p>
    <p><label for="firstname">Nombre</label><input type="text" name="firstname" /></p>
    <p><label for="lastname">Primer apellido</label><input type="text" name="lastname" /></p>
    <p><label for="password">Contraseña</label><input type="password" name="password" /></p>
    <p><label for="sex">Sexo</label>
        <select name="sex" size="1">
            <option slected="true">Elige genero</option>
            <option value="h">Hombre</option>
            <option value="m">Mujer</option>
        </select>
    </p>
    <p><label for="age">Edad</label>
        <select name="age_d" size="1">
            <option slected="true">Elige d&iacute;a</option>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>
            <option value="7">7</option>
            <option value="8">8</option>
            <option value="9">9</option>
            <option value="10">10</option>
            <option value="11">11</option>
            <option value="12">12</option>
            <option value="13">13</option>
            <option value="14">14</option>
            <option value="15">15</option>
            <option value="16">16</option>
            <option value="17">17</option>
            <option value="18">18</option>
            <option value="19">19</option>
            <option value="20">20</option>
            <option value="21">21</option>
            <option value="22">22</option>
            <option value="23">23</option>
            <option value="24">24</option>
            <option value="25">25</option>
            <option value="26">26</option>
            <option value="27">27</option>
            <option value="28">28</option>
            <option value="29">29</option>
            <option value="30">30</option>
            <option value="31">31</option>
        </select>
        <select name="age_m" size="1">
            <option slected="true">Elige mes</option>
            <option value="1">Enero</option>
            <option value="2">Febrero</option>
            <option value="3">Marzo</option>
            <option value="4">Abril</option>
            <option value="5">Mayo</option>
            <option value="6">Junio</option>
            <option value="7">Julio</option>
            <option value="8">Agosto</option>
            <option value="9">Septiembre</option>
            <option value="10">Octubre</option>
            <option value="11">Noviembre</option>
            <option value="12">Diciembre</option>
        </select>
        <input type="text" name="age_y" />
    </p>
    <p><input type="submit" value="Continuar" /></p>
</form>
EOPAGE;
    break;
    case 
'dos':

        
$username $_POST['username'];
        
$email $_POST['email'];
        
$firstname $_POST['firstname'];
        
$lastname $_POST['lastname'];
        
$password $_POST['password'];
        
$sex $_POST['sex'];
        
$age $_POST['age_d'] . "-" $_POST['age_m'] . "-" $_POST['age_y'];

        
setcookie('username'$usernametime() + (60 10));
        
setcookie('email'$emailtime() + (60 10));
        
setcookie('firstname'$firstnametime() + (60 10));
        
setcookie('lastname'$lastnametime() + (60 10));
        
setcookie('password'$passwordtime() + (60 10));
        
setcookie('sex'$sextime() + (60 10));
        
setcookie('age'$agetime() + (60 10));

        
$form = <<<EOPAGE
<form action="?fase=tres" method="post">
<img id="siimage" src="includes/captcha/securimage_show.php?sid" />
<a href="#" onclick="document.getElementById('siimage').src = 'includes/captcha/securimage_show.php?' + Math.random(); return false">Refrescar la imagen</a>
<input type="text" name="code" size="6" />
<input type="submit" value="Continuar" />
</form>
EOPAGE;
    break;
    case 
'tres':
        include(
"includes/captcha/securimage.php");
        
$img = new Securimage();
        
$valid $img->check($_POST['code']);

        if(
$valid == true){
            
$servidor 'server';
            
$usuario 'user';
            
$clave 'pass';

            
$conexion mysql_connect($servidor$usuario$clave);
            if (!
$conexion){
                die(
"Fallo la conexión a la Base de Datos: " mysql_error());
            }

            
$seleccionar_bd mysql_select_db('radiored'$conexion);
            if (!
$seleccionar_bd){
                die(
"Fallo la selección de la Base de Datos: " mysql_error());
            }

            
$username = isset($_COOKIE['username']);
            
$email = isset($_COOKIE['email']);
            
$firstname = isset($_COOKIE['firstname']);
            
$lastname = isset($_COOKIE['lastname']);
            
$password = isset($_COOKIE['password']);
            
$sex = isset($_COOKIE['sex']);
            
$age = isset($_COOKIE['age']);

            
$_ssql "INSERT INTO user (username, password, email, firstname, lastname, sex, age) VALUES ('{$username}', '{$password}', '{$email}', '{$firstname}', '{$lastname}', '{$sex}', '{$age}')";

            
$insertar mysql_query($_ssql$conexion);
            if (!
$insertar) {
                die(
"Fallo en la insercion de registro en la Base de Datos: " mysql_error());
            }
 
            
$form = <<<EOPAGE
<h1>Registro completo</h2>
EOPAGE;

            
mysql_close($conexion);

            }else{
                
$form = <<<EOPAGE
<h1>Los campos no son correctos, favor de verificarlos</h1>
<form action="?fase=tres" method="post">
<img id="siimage" src="includes/captcha/securimage_show.php?sid" />
<a href="#" onclick="document.getElementById('siimage').src = 'includes/captcha/securimage_show.php?' + Math.random(); return false">Refrescar la imagen</a>
<input type="text" name="code" size="6" />
<input type="submit" value="Continuar" />
</form>
EOPAGE;
            }
    break;
}

echo 
$form;
?>
de antemano gracias y disculpen mis faltas de ortografia

pd. lo pueden ver en funcionamiento en http://radiored.webcindario.com/register.php

Última edición por danneg; 14/06/2010 a las 21:06 Razón: me equivoque en la url
  #2 (permalink)  
Antiguo 14/06/2010, 21:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Pobrema al insertar datos

si te sale algún mensaje de error, por favor, postealo completo... ya que es mejor, a menos que quieras que adivinemos...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/06/2010, 21:26
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Pobrema al insertar datos

además usas demasiadas cookies, por que no usas sesiones ($_SESSION) y no veo por ningún lado en donde esta el campo de fecha que te esta guardando 0000-00-00, en el sql del insert no esta
  #4 (permalink)  
Antiguo 14/06/2010, 21:27
danneg
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pobrema al insertar datos

un error como...
waring on line 123...bla bla

pues ese error no lo tengo, y tengo los errores avilitados (para que me los muestre)

el problema es el planteado

no inserta como deberia de ser los datos en la tabla

los de tipo text lo muestra como "1"

los de tipo date los muestra como "0000-00-00"

y no se por que pueda ocurrir
  #5 (permalink)  
Antiguo 14/06/2010, 21:31
danneg
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pobrema al insertar datos

el campo de la fecha es la variable age creada dentro el caso "fase dos"

que toma los datos de las variable age_d, age_m y age_y del formulario

todo esto lo almacena en la cookie "age" que despues es comvertida en la variable age que es la que se inserta en la base de datos

las cookies duran aprox 10 minutos
  #6 (permalink)  
Antiguo 14/06/2010, 21:34
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Pobrema al insertar datos

lo primero que debes de verificar es la salida del sql, has echo $_ssql; y busca en el manual de mysql como él recibe los valores tipo date, una cosa es que php no genere warnings, y otra es que mysql no interprete los datos como quieres y los pase por alto

mysql recibe de forma predeterminada fechas: YYYY-MM-DD, y si tu pretendes pasarle DD-MM-YYYY es obvio que no la interprete
  #7 (permalink)  
Antiguo 14/06/2010, 21:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Pobrema al insertar datos

Cita:
Iniciado por maycolalvarez Ver Mensaje
lo primero que debes de verificar es la salida del sql, has echo $_ssql; y busca en el manual de mysql como él recibe los valores tipo date, una cosa es que php no genere warnings, y otra es que mysql no interprete los datos como quieres y los pase por alto

mysql recibe de forma predeterminada fechas: YYYY-MM-DD, y si tu pretendes pasarle DD-MM-YYYY es obvio que no la interprete
exacto!!

danneg, y como sugerencia... por favor, aprende a depurar tus consultas... ;)
Código PHP:
mysql_query(/* tu consulta */) or die(mysql_error()); 
así, en caso de que la consulta esté mal ya te enteras del error...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 14/06/2010, 21:43
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Pobrema al insertar datos

Mira esto

Respecto al 1 que te insertaba:

Código PHP:

$username 
"Nombre de usuario";

setcookie('username'$usernametime() + (60 10));

//esto devuelve "Nombre de usuario"
echo htmlspecialchars($_COOKIE["username"]) ."<br />";
//esto devuelve 1
echo isset($_COOKIE["username"]) ."<br />"

...Para usarla, habra que quiterle el <br />
  #9 (permalink)  
Antiguo 14/06/2010, 21:46
danneg
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pobrema al insertar datos

ok ok gracias, intentare checar lo de las fechas
solo una duda, igual debe tener los guinones "-"??

bueno, con respecto a los de die

Código PHP:
Ver original
  1. $insertar = mysql_query($_ssql, $conexion);
  2.             if (!$insertar) {
  3.                 die("Fallo en la insercion de registro en la Base de Datos: " . mysql_error());
  4.             }

eso si lo sabia y no solo para consulta mysql, lo utilizo para otros fines ademas

bueno, aun asi gracias por la sugerencia, solo tengo un problemita mas, aun no entiendo el por que del "1" en los campos de text que en realidad deberian contener los datos introducidos por el formulario
  #10 (permalink)  
Antiguo 14/06/2010, 21:53
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Pobrema al insertar datos

Mira esto

Respecto al 1 que te insertaba:

Código PHP:

$username 
"Nombre de usuario"

setcookie('username'$usernametime() + (60 10)); 

//esto devuelve "Nombre de usuario" 
echo htmlspecialchars($_COOKIE["username"]) ."<br />"
//esto devuelve 1 
echo isset($_COOKIE["username"]) ."<br />"
...Para usarla, habra que quiterle el <br />


Código PHP:


//esto devuelve un booleano

isset($_COOKIE["username"]) 
  #11 (permalink)  
Antiguo 14/06/2010, 21:55
danneg
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pobrema al insertar datos

@wiw74, ok ok gracias

esto significa que en lo referente a la insercion tengo que usarlo de estra forma para que se inserte de manera correcta?


Código PHP:
Ver original
  1. $user = htmlspecialchars($_COOKIE['username']);
  #12 (permalink)  
Antiguo 14/06/2010, 22:03
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Pobrema al insertar datos

Claro aqui:

Código PHP:

//por eso te insertaba un uno (true), que es lo que devuelve la funcion isset()
//simplemente reemplaza eso por lo otro
$username = isset($_COOKIE['username']);

$_ssql "INSERT INTO user (username, ......... 
//helo aqui, para analizarlo:

http://php.net/manual/es/reserved.variables.cookies.php


Pruebalo asi tambien:

Código PHP:

$username  
=  $_COOKIE["username"]; 

Última edición por wiwi74; 14/06/2010 a las 22:10
  #13 (permalink)  
Antiguo 14/06/2010, 22:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Pobrema al insertar datos

y mas precisamente, isset()
http://php.net/isset
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 14/06/2010, 22:18
danneg
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pobrema al insertar datos

ok... problema resuelto... muchas gracias!!

Etiquetas: Ninguno
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 03:27.