Foros del Web » Programando para Internet » PHP »

Traer resultado por $_SESSION de usuario

Estas en el tema de Traer resultado por $_SESSION de usuario en el foro de PHP en Foros del Web. Hola amigos del foro. Tengo un archivo PHP donde traigo los datos por sesión de usuario logeado, mas o menos de este modo: WHERE id_students ...
  #1 (permalink)  
Antiguo 01/08/2023, 20:54
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Traer resultado por $_SESSION de usuario

Hola amigos del foro.

Tengo un archivo PHP donde traigo los datos por sesión de usuario logeado, mas o menos de este modo:
WHERE id_students = "".$_SESSION['id_students']."";

El problema es lo siguiente, si uso de ese modo no me da ningún resultado;
Código PHP:
Ver original
  1. $query .= 'WHERE names LIKE "%'.$_POST["search"]["value"].'%" AND (`stu`.`id_students` = '.$_SESSION["id_students"].')';

Ahora si uso cualquier ID del usuario registrado si funciona:
Código PHP:
Ver original
  1. $id_students = "".$_SESSION['id_students']."";   // Asi no funciona
  2. $id_students = 2;   // Es el ID del estudiante numero 2,3,4 etc.
Si cambio aquí me muestra todo los usuarios
Código PHP:
Ver original
  1. //if(isset($_POST["search"]["value"]))
  2. if(isset($_POST["search"]["value"]) && $_SESSION['id_students'])

Resumen:
Necesito que muestre solo los resultado del usuario logeado en este caso las notas (score), estoy usando datatable.
DEJE algunos comentarios en el codigo PHP
EL CODIGO PHP
Código PHP:
Ver original
  1. <?php
  2. include_once 'conexion.php';
  3. function get_total_all_records()    {
  4.     include('conexion.php');
  5.     $statement = $conexion->prepare("SELECT * FROM grades");
  6.       $statement->execute();
  7.       $result = $statement->fetchAll();
  8.     return $statement->rowCount();
  9. }
  10.  
  11.   $query = '';
  12.   $output = array();
  13.   $query .= "SELECT * FROM grades ";
  14.  
  15.   if(isset($_POST["search"]["value"]))
  16.  
  17. {
  18.  
  19.   $query .= 'WHERE names LIKE "%'.$_POST["search"]["value"].'%" ';
  20.    
  21. }
  22.  
  23. if(isset($_POST["order"]))
  24. {
  25.     $query .= 'ORDER BY '.$_POST['order']['0']['column'].' '.$_POST['order']['0']['dir'].' ';
  26. }
  27. else
  28. {
  29.     $query .= 'ORDER BY id_grades DESC ';
  30. }
  31. if($_POST["length"] != -1)
  32. {
  33.     $query .= 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length'];
  34. }
  35. $statement = $conexion->prepare($query);
  36. $statement->execute();
  37. $result = $statement->fetchAll();
  38. $data = array();
  39. $filtered_rows = $statement->rowCount();
  40. foreach($result as $row)
  41. {
  42.     $sub_array = array();  
  43.     $sub_array[] = $row["id_grades"];  
  44.     $sub_array[] = '<div> '.$row["names"].' </div>';
  45.     $sub_array[] = '<div> '.$row["score"].'  </div>';
  46.     $sub_array[] = '<div>
  47.     <button type="button" name="edit" id="'.$row["id_grades"].'">Editar</button>
  48.     </div>';
  49.     $data[] = $sub_array;
  50. }
  51. $output = array(
  52.     "draw"              =>  intval($_POST["draw"]),
  53.     "recordsTotal"      =>  $filtered_rows,
  54.     "recordsFiltered"   =>  get_total_all_records(),
  55.     "data"              =>  $data
  56. );
  57. echo json_encode($output);
  58. ?>

Última edición por pilucho; 01/08/2023 a las 22:52
  #2 (permalink)  
Antiguo 10/08/2023, 10:40
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Traer resultado por $_SESSION de usuario

Fijate que valor tiene $_POST["search"]["value"] y luego hacé un echo de $query para ver como se confeccionó la query,

Puede ser que $_POST["search"]["value"] esté vacio?
__________________
la la la
  #3 (permalink)  
Antiguo 06/11/2023, 07:07
 
Fecha de Ingreso: noviembre-2007
Mensajes: 191
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Traer resultado por $_SESSION de usuario

Tu problema me paso muchisimas veces, la forma mas facil de solucionar es asignar el valor de la variable de session a una variable normal, asi:

$id = $_SESSION['id_students'];


Lo mismo con las $_POST, supongo que el error esta en el tipo de comillas o algo similar, pero siempre lo resolvi asi.



La zona horaria es GMT -6. Ahora son las 23:35.