Ver Mensaje Individual
  #5 (permalink)  
Antiguo 01/03/2016, 15:00
davidxf4
 
Fecha de Ingreso: febrero-2016
Mensajes: 6
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Recuperar valor usando fetch_assoc()

Buenas

El código completo este :

Código PHP:
Ver original
  1. class DB_Functions {
  2.  
  3.     private $conn;
  4.  
  5.     // constructor
  6.     function __construct() {
  7.         require_once 'DB_Connect.php';
  8.         // connecting to database
  9.         $db = new Db_Connect();
  10.         $this->conn = $db->connect();
  11.     }
  12.  
  13.     // destructor
  14.     function __destruct() {
  15.        
  16.     }
  17.  
  18.     ns user details
  19.      */
  20.     public function storeUser($name, $email, $password, $phone, $adress) {
  21.         $uuid = uniqid('', true);
  22.         $hash = $this->hashSSHA($password);
  23.         $encrypted_password = $hash["encrypted"]; // encrypted password
  24.         $salt = $hash["salt"]; // salt
  25.  
  26.         $stmt = $this->conn->prepare("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at, phone, adress) VALUES(?, ?, ?, ?, ?, NOW(),?,?)");
  27.         $stmt->bind_param("sssssss", $uuid, $name, $email, $encrypted_password, $salt, $phone, $adress);
  28.         $result = $stmt->execute();
  29.         $stmt->close();
  30.  
  31.         // check for successful store
  32.         if ($result) {
  33.             $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
  34.             $stmt->bind_param("s", $email);
  35.             $stmt->execute();
  36.             $user = $stmt->get_result()->fetch_assoc();
  37.             $stmt->close();
  38.  
  39.             return $user;
  40.         } else {
  41.             return false;
  42.         }
  43.     }
  44.  
  45.     /**
  46.      * Get user by email and password
  47.      */
  48.     public function getUserByEmailAndPassword($email, $password) {
  49.  
  50.         $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
  51.  
  52.         $stmt->bind_param("s", $email);
  53.  
  54.         if ($stmt->execute()) {
  55.             $user = $stmt->get_result()->fetch_assoc();
  56.             $stmt->close();
  57.             return $user;
  58.         } else {
  59.             return NULL;
  60.         }
  61.     }
  62. }
  63.  
  64. ?>

Pero de todo el codigo yo estoy usando la funcion publicada anteriormente "getUserByEmailAndPassword" ; el otro scrip tiene el siguiente codigo :

Código PHP:
Ver original
  1. <?php
  2. require_once 'include/DB_Functions.php';
  3. $db = new DB_Functions();
  4.  
  5. // json response array
  6. //$user = array();
  7.  
  8. if (isset($_POST['email']) && isset($_POST['password'])) {
  9.  
  10.     // receiving the post params
  11.     $email = $_POST['email'];
  12.     $password = $_POST['password'];
  13.  
  14.     // get the user by email and password
  15.     $user = $db->getUserByEmailAndPassword($email, $password);
  16.  
  17.     if ($user != false) {
  18.  
  19.         session_start();
  20.  
  21.         $_SESSION['dev'] = $email;
  22.        
  23.         $_SESSION['userid'] = $user;
  24.  
  25.         header("Location: perfil.php");
  26.  
  27.        
  28.     } else {
  29.  
  30.         header("Location: index.php");
  31.     }
  32. } else {
  33.  
  34. }
  35. ?>

Y esta es una parte del codigo html donde quiero mostrar el email y id del usuario

Código PHP:
Ver original
  1. -->
  2.     <div class="container">
  3.       <div class="starter-template">
  4.         <h1>Perfil</h1>
  5.         <p class="lead">
  6.           <?php
  7.            
  8.             $usuario = $_SESSION['dev']; //obteniendo el usuario
  9.             $id = $_SESSION['userid'];
  10.  
  11.             echo $usuario;
  12.             echo print_r($id,true);
  13.           ?>
  14.         </p>
  15.       </div>
  16.     </div><!-- /.container -->

Yo se que lo que estoy imprimiendo en el echo esta tomando el valor de un array ya que no puedo pasar el id que necesito
y al tratar de imprimirlo me manda el error "PHP Notice: Array to string conversion in "echo $id;"
Código PHP:
Ver original
  1. $id = $_SESSION['userid'];
  2. echo $id;

trato de capturar el valor que esta retornando en esta parte

Código PHP:
Ver original
  1. if ($user != false) {
  2.  
  3.         session_start();
  4.  
  5.         $_SESSION['dev'] = $email;
  6.        
  7.         $_SESSION['userid'] = $user; // necesito capturar el valor que tiene "id"

Pero no se exactamente que colocar en la variable "$user" para que extraiga del array devuelto del metodo "getUserByEmailAndPassword" el id que necesito.

Si realizo un "echo print_r($id,true);" me muestra esto :

Código PHP:
Ver original
  1. Array ( [id] => 16 [unique_id] => 56d4afbce978f2.31054501 [name] => Name [email] => ja@ja.com [encrypted_password] => xcycksEXAwYS2kUS8rTtXPzbWlE3Mzc1NzJkMDM1 [salt] => 737572d035 [created_at] => 2016-02-29 15:53:16 [updated_at] => [phone] => 2222 [adress] => ddddddd )

Lo que necesito es extraer el valor de "id" para guardarlo en una variable y poder mostrarlo tambien; trate colocando
$_SESSION['userid'] = $user[id];
$_SESSION['userid'] = $user['id'];
$_SESSION['userid'] = $user[0];

Pero no me funciona , espero que quede mas claro lo que necesito

Saludos Cordinales

Última edición por davidxf4; 01/03/2016 a las 15:11