Foros del Web » Programando para Internet » PHP »

Crear variable de sesión de una BD

Estas en el tema de Crear variable de sesión de una BD en el foro de PHP en Foros del Web. Hola a todos!! Estoy haciendo una tienda virtual y a la hora de hacer la compra quiero que se introduzcan en una tabla nueva una ...
  #1 (permalink)  
Antiguo 09/04/2015, 10:57
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Crear variable de sesión de una BD

Hola a todos!!

Estoy haciendo una tienda virtual y a la hora de hacer la compra quiero que se introduzcan en una tabla nueva una serie de campos, entre ellos el identificador de un usuario registrado en la BD. Estoy intentando crear una variable de sesión en la que poder almacenar ese identificador para posteriormente almacenarlo en la tabla, pero estoy un poco liado con eso.
¿Como puedo hacer para obtener ese identificador?

Gracias de antemano por vuestra ayuda.

Saludos!!
  #2 (permalink)  
Antiguo 09/04/2015, 11:00
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

Echale un vistazo al manual de php para las variables de sesión.

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

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #3 (permalink)  
Antiguo 09/04/2015, 11:44
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

Hola Manuxo, estoy mirando el manual, pero no me queda muy claro. Lo que no consigo es sacar el identificador del cliente de la base de datos. Para ello hago la siguente consulta:
Código PHP:
$query "SELECT * FROM tblclientes ";
$result mysql_query($query); 
while (
$row =mysql_fetch_row($result)) { 
$_SESSION['id_usuario'] = $row['idCliente']; 

Esto, entiendo que deberia almacenar en $_SESSION['id_usuario'] el campo idCliente de mi base de datos.

Lo siguiente que hago es:

Código PHP:
$id_user=$_SESSION['id_usuario'];
require(
"../connect_db.php");
mysql_query("INSERT INTO tblcarrito VALUES('','$id_user')"); 
Pero en la tabla en el campo correspondiente al identificador del usuario solo mete 0.

Saludos
  #4 (permalink)  
Antiguo 09/04/2015, 12:50
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

Que campo corresponde el que está vacio en está línea:

mysql_query("INSERT INTO tblcarrito VALUES('','$id_user')");

Comprueba antes de insertar los datos mostrando la sesion haber si guarda el id asignado.

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #5 (permalink)  
Antiguo 09/04/2015, 13:55
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

El campo vacio es para un contador el cual se autoincrementa solo.
Disculpa no entiendo lo ultimo que me dices, ¿como puedo mostrar la sesion?

Saludos
  #6 (permalink)  
Antiguo 09/04/2015, 14:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear variable de sesión de una BD

¿En algún lugar de tu código estás usando session_start() como dicta el manual o no tienes ni la menor idea?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 09/04/2015, 14:41
 
Fecha de Ingreso: marzo-2015
Ubicación: Peru
Mensajes: 34
Antigüedad: 9 años, 1 mes
Puntos: 6
Respuesta: Crear variable de sesión de una BD

haz algo practico, imprime el dato y verifica que dato esta manejando.

echo $_SESSION['idCliente'];

Si sale 0 ahi esta el problema.

Así como dice pateketrueke tienes que iniciar session_star(); el header de cada página.
  #8 (permalink)  
Antiguo 09/04/2015, 15:09
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

Al inicio de todas las páginas tengo la conexión a la BD, la cual incluye el session_start();

La duda que tengo es respecto a lo que dice jluishuaman de imprimir el dato. La consulta está en el archivo login.php y la inserción de datos en la tabla en el archivo carrito_add.php. Perdonad que pregunte estas cosas pero ¿donde deberia imprimir el dato?
  #9 (permalink)  
Antiguo 10/04/2015, 02:21
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

Puedes imprimirlo donde realizas la inserción.

Código PHP:
Ver original
  1. require("../connect_db.php");
  2. $id_user=$_SESSION['id_usuario'];
  3. echo $id_user;

Recuerda haber iniciado antes el session_start().

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #10 (permalink)  
Antiguo 10/04/2015, 02:33
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

Hago el echo pero no muestra nada, es como si no lo ejecutase, si pongo la sentencia session_start(); me muestra error puesto que ya va dentro del archivo de la conexión. No sé porque no muestra nada...

Saludos.
  #11 (permalink)  
Antiguo 10/04/2015, 04:15
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

Si no muestra nada, es que está vacia por eso te da 0 al insertar. El problema está entonces a la hora de asignarle el id. Revisa que le asignas correctamente el idcliente.

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #12 (permalink)  
Antiguo 10/04/2015, 04:56
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

Por más que reviso el código, no le veo el fallo...
Este es el archivo login.php donde hago la consulta
Código PHP:
$query "SELECT * FROM tblclientes ";
$result mysql_query($query); 
while (
$row =mysql_fetch_row($result)) { 
$_SESSION['id_usuario'] = $row["IdCliente"]; 

Y en carrito_add.php hago la inserción de los datos en la tabla
Código PHP:
<?php require_once('../Connections/conexionlocal.php'); ?>
<?php
    
    
    $id_user
=$_SESSION['id_usuario'];
    
$idtipo1=$_GET['recordID'];
    
$idtipo2=$_GET['recordID2'];

mysql_query("INSERT INTO tblcarrito VALUES('','$id_user','$idtipo1','$idtipo','','')");
En conexionlocal.php en la primera linea va el session_start();

¿Que puede estar mal?

Saludos!
  #13 (permalink)  
Antiguo 10/04/2015, 05:14
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

Prueba de esta manera, lo que haces es hacer un bucle.

Código PHP:
Ver original
  1. $query = "SELECT * FROM tblclientes ";
  2. $result = mysql_query($query);
  3. $row =mysql_fetch_row($result);
  4. $_SESSION['id_usuario'] = $row["IdCliente"];
  5. echo $_SESSION['id_usuario'];

Haber si te guarda el id.

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #14 (permalink)  
Antiguo 10/04/2015, 05:26
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

El echo no me muestra nada, puesto que login.php que es donde está la consulta, es una página de paso, es decir, no hay codigo html que se ejecute, por tanto salta automáticamente. Si pongo la consulta en la misma página en la que hago la inserción, me da error:
Notice: Undefined index: IdCliente

Saludos.
  #15 (permalink)  
Antiguo 10/04/2015, 05:35
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

Bueno, supongamos que Pepe inicia sesión, entonces realizas la consulta para el que inicio sesión y le asignas la sesion con su id:

Código PHP:
Ver original
  1. $query = "SELECT * FROM tblclientes WHERE nombre = 'Pepe' ";
  2. $result = mysql_query($query);
  3. $row =mysql_fetch_row($result);
  4. $_SESSION['id_usuario'] = $row["IdCliente"];
  5. echo $_SESSION['id_usuario'];

El nombre Pepe es un ejemplo, puede hacer la comparación con su email, etc...

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #16 (permalink)  
Antiguo 10/04/2015, 05:52
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

No sale nada, creo que el fallo está en dónde se hace la consulta, quizás no tiene que ir en login.hp

Este es mi login.php completo:
Código PHP:
<?php require_once('Connections/conexionlocal.php'); 


$error=''// Variable To Store Error Message
if (isset($_POST['submit'])) {
if (empty(
$_POST['username']) || empty($_POST['password'])) {
$error "Username or Password is invalid";
}
else
{
// Define $username and $password
$username=$_POST['username'];
$password=$_POST['password'];
// Establishing Connection with Server by passing server_name, user_id and password as a parameter
$connection mysql_connect("localhost""root""");
// To protect MySQL injection for Security purpose
$username stripslashes($username);
$password stripslashes($password);
$username mysql_real_escape_string($username);
$password mysql_real_escape_string($password);
// Selecting Database
$db mysql_select_db("proyecto"$connection);
// SQL query to fetch information of registerd users and finds user match.
$sql2 mysql_query("select * from tblclientes where strPass='$password' AND strNombre='$username'"$connection);
    if(
$f2=mysql_fetch_array($sql2)){
        if(
$password== "1234567" && $username == "administrador"){
            echo 
'<script>alert("BIENVENIDO ADMINISTRADOR")</script> ';
            echo 
"<script>location.href='admin/index2.php'</script>";
            die();
        }
    }
$sql=mysql_query("SELECT * FROM tblclientes WHERE strNombre ='$username'");
    if(
$f=mysql_fetch_array($sql)){
        if(
$password==$f['strPass']){
            
$_SESSION['login_user']=$username;
            
header("Location: admin_cliente/acceso_ok.php");
        }    
        else{
            echo 
'<script>alert("CONTRASEÑA INCORRECTA")</script> ';
            echo 
"<script>location.href='index.php'</script>";
        }
    }
    else{
        echo 
'<script>alert("ESTE USUARIO NO EXISTE, PORFAVOR REGISTRESE PARA PODER INGRESAR")</script> ';
        echo 
"<script>location.href='index.php'</script>";    
    }


 
$query "SELECT * FROM tblclientes  WHERE strNombre='juan' ";
    
$result mysql_query($query);
    
$row =mysql_fetch_row($result);
    
$_SESSION['id_usuario'] = $row["IdCliente"];
    echo 
$_SESSION['id_usuario'];    


mysql_close($connection); // Closing Connection
}
}
?>
Saludos.
  #17 (permalink)  
Antiguo 10/04/2015, 06:13
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

Por lo que veo ya le estas dando un sesion "$_SESSION['login_user']" cuando se logea correctamente.

Con eso ya podrias insertar su id.

Código PHP:
Ver original
  1. require("../connect_db.php");
  2. $query = "SELECT * FROM tblclientes WHERE strNombre = $_SESSION['login_user'] ";
  3. $result = mysql_query($query);
  4. $row =mysql_fetch_row($result);
  5. $id_user = $row['IdCliente'];
  6. mysql_query("INSERT INTO tblcarrito VALUES('','$id_user')");

Pruebalo y dime que tal fue, pero recuerda que esto sólo funcionará si está logeado correctamente.

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #18 (permalink)  
Antiguo 10/04/2015, 06:39
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

Me da error de sintaxis en la consulta en la parte del:
$query = "SELECT * FROM tblclientes WHERE strNombre = $_SESSION['login_user'] ";

¿se puede hacer la comparación asi?

Saludos
  #19 (permalink)  
Antiguo 10/04/2015, 06:48
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

$query = "SELECT * FROM tblclientes WHERE strNombre = '".$_SESSION['login_user']."' ";

Creo que así te funcionará, son por las comillas.

Prueba y dime como te fue.

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #20 (permalink)  
Antiguo 10/04/2015, 07:02
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

Ahora no da error al ejecutar el código, pero sigue sin salir nada. El echo no aparece en ningun lado. La pagina login.php no muestra nada, unicamente valida el usuario al loguearse.

Saludos.
  #21 (permalink)  
Antiguo 10/04/2015, 07:27
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

Comprobaste en la DB si inserto el ID?
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #22 (permalink)  
Antiguo 10/04/2015, 07:45
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

Efectivamente sigue sin insertar el idCliente..
  #23 (permalink)  
Antiguo 10/04/2015, 08:07
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

En el archivo donde iniciar session_start() haz lo siguiente haber si te lo muestra, te quedaría así:

Código PHP:
Ver original
  1. $_SESSION['id_cliente'] = 10;
  2. echo $_SESSION['id_cliente'];
  3. exit();

Te tiene que mostrar en pantalla 10.

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #24 (permalink)  
Antiguo 10/04/2015, 08:46
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

Efectivamente ahora muestra un 10
  #25 (permalink)  
Antiguo 10/04/2015, 09:50
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 1 mes
Puntos: 67
Respuesta: Crear variable de sesión de una BD

Pues entonces yo lo que aría es ir paso por paso y crear de nuevo el login, para así poderle asignar correctamente la sesión, ya que hay algo que le esta dando conflicto. Se que volver a hacerlo es volver a romperse la cabeza pero mejor eso a rompertela y no obtener resultados.

Aquí estaré para ayudarte.

Saludos.
__________________
No te preocupes si tu código no funciona bien. Si todo lo hiciera, no tendrías trabajo.
  #26 (permalink)  
Antiguo 10/04/2015, 10:57
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

Muchas gracias por tu ayuda y paciencia jejej.

¿Alguna sugerencia para no ir dando palos de ciego?

Saludos.
  #27 (permalink)  
Antiguo 10/04/2015, 11:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear variable de sesión de una BD

Cita:
¿Alguna sugerencia para no ir dando palos de ciego?
¿Qué te parecería leer un poco más el manual?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #28 (permalink)  
Antiguo 10/04/2015, 11:33
 
Fecha de Ingreso: febrero-2015
Mensajes: 51
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Crear variable de sesión de una BD

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Qué te parecería leer un poco más el manual?
Una idea fantástica, jamás se me hubiese ocurrido. Gracias!

Saludos.

Etiquetas: bd, sesión, tabla, variable
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:07.