Foros del Web » Programando para Internet » PHP »

Resultado JSON PHP

Estas en el tema de Resultado JSON PHP en el foro de PHP en Foros del Web. Hola, Necesito de su ayuda. En este código cuando hago el WHERE el resultado del JSON solo trae: [] prácticamente vació, como puedo solucionar usando ...
  #1 (permalink)  
Antiguo 15/07/2020, 08:46
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Resultado JSON PHP

Hola, Necesito de su ayuda.
En este código cuando hago el WHERE el resultado del JSON solo trae: [] prácticamente vació, como puedo solucionar usando "where" es decir el código numero 2.

CÓDIGO UNO
Código PHP:
<?php
    
include 'conn.php';

    
$username $_POST['username'];
    
$password $_POST['password'];

    
$queryResult=$connect->query("SELECT * FROM MyTable WHERE username = '$username' AND password = '$password'");
    
$queryLogin mysqli_query($connect$queryResult);
    
$result mysqli_fetch_array($queryLogin);

    
$result=array();

    while(
$fetchData=$queryResult->fetch_assoc()){
        
$result[]=$fetchData;
    }
    echo 
json_encode($result);
?>
RESULTADO ERROR:
Código HTML:
     [B][][/B]


Ahora en este código si quito el WHERE el resultado es correcto:

CÓDIGO DOS
Código PHP:
<?php
    
include 'conn.php';

    
$username $_POST['username'];
    
$password $_POST['password'];

    
$queryResult=$connect->query("SELECT * FROM MyTable");
    
$queryLogin mysqli_query($connect$queryResult);
    
$result mysqli_fetch_array($queryLogin);

    
$result=array();

    while(
$fetchData=$queryResult->fetch_assoc()){
        
$result[]=$fetchData;
    }
    echo 
json_encode($result);
?>
RESULTADO CORRECTO:

Código HTML:
[{"id":"1","username":"pepito","password":"123456","level":"principiante"}]
  #2 (permalink)  
Antiguo 15/07/2020, 10:08
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Resultado JSON PHP

el problema no es el WHERE, sino tus datos condiciones dentro del where
prueba primero con datos estaticos, asi descartas que este llegado informacion por la variable $_POST
Código PHP:
Ver original
  1. <?php
  2.     include 'conn.php';
  3.  
  4.     $username = "pepito";
  5.     $password = "123456";
  6.  
  7.     $queryResult=$connect->query("SELECT * FROM MyTable WHERE username = '$username' AND password = '$password'");
  8.     $queryLogin = mysqli_query($connect, $queryResult);
  9.     $result = mysqli_fetch_array($queryLogin);
  10.  
  11.     $result=array();
  12.  
  13.     while($fetchData=$queryResult->fetch_assoc()){
  14.         $result[]=$fetchData;
  15.     }
  16.     echo json_encode($result);
  17. ?>
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 15/07/2020, 10:23
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Resultado JSON PHP

hola tuadmin, gracias por responder.
usando el código como muestras si funciona el where... pero si son mas usuarios como seria?


Cita:
Iniciado por tuadmin Ver Mensaje
el problema no es el WHERE, sino tus datos condiciones dentro del where
prueba primero con datos estaticos, asi descartas que este llegado informacion por la variable $_POST

Código PHP:
Ver original
  1. <?php
  2.     include 'conn.php';
  3.  
  4.     $username = "pepito";
  5.     $password = "123456";
  6.  
  7.     $queryResult=$connect->query("SELECT * FROM MyTable WHERE username = '$username' AND password = '$password'");
  8.     $queryLogin = mysqli_query($connect, $queryResult);
  9.     $result = mysqli_fetch_array($queryLogin);
  10.  
  11.     $result=array();
  12.  
  13.     while($fetchData=$queryResult->fetch_assoc()){
  14.         $result[]=$fetchData;
  15.     }
  16.     echo json_encode($result);
  17. ?>
  #4 (permalink)  
Antiguo 15/07/2020, 12:58
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Resultado JSON PHP

Cita:
Iniciado por pilucho Ver Mensaje
hola tuadmin, gracias por responder.
usando el código como muestras si funciona el where... pero si son mas usuarios como seria?
el uso del WHERE es para FILTRAR tu base de datos, para obtener todos los usuarios no necesitas Filtrar, entonces no necesitas el WHERE, pero en resumen el WHERE es para ello,

podrias indicar con ello que solo quieres TODOS los usuarios que tengan el level de principiante

Código MySQL:
Ver original
  1. SELECT * FROM MyTable WHERE level= 'principiante'
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #5 (permalink)  
Antiguo 15/07/2020, 14:04
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Resultado JSON PHP

Cita:
Iniciado por tuadmin Ver Mensaje
el uso del WHERE es para FILTRAR tu base de datos, para obtener todos los usuarios no necesitas Filtrar, entonces no necesitas el WHERE, pero en resumen el WHERE es para ello,

podrias indicar con ello que solo quieres TODOS los usuarios que tengan el level de principiante

Código MySQL:
Ver original
  1. SELECT * FROM MyTable WHERE level= 'principiante'
si tambien lo puse asi, el problema amigo es que los level hay dos nombres uno, principiante//experto; si el usuario se experto se logea ingresa al area de principiante.... es decir todo van al level principiante

la ide es que al logearse sea reconocido filtrando solo el user // pass, el detalle es porque cuando pongo el WHERE de user / pass, el resultado del JSON me da []


PHP JSON
Código MySQL:
Ver original
  1. [{"id":"1","username":"pepito","password":"123456","level":"principiante"}]
  2.  
  3. [{"id":"1","username":"lolita","password":"abcdef","level":"experto"}]
  #6 (permalink)  
Antiguo 15/07/2020, 14:49
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Resultado JSON PHP

Cita:
Iniciado por pilucho Ver Mensaje

la ide es que al logearse sea reconocido filtrando solo el user // pass, el detalle es porque cuando pongo el WHERE de user / pass, el resultado del JSON me da []

[/HIGHLIGHT]
el resultado de [] es debido a que NO EXISTEN datos que COINCIDAN con el WHERE, por lo cual el error seria por lineas arriba, puede que tengas espacios o simbolos o no recibir los datos para que el WHERE filtre correctamenet los datos
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #7 (permalink)  
Antiguo 15/07/2020, 15:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Resultado JSON PHP

Cita:
Iniciado por pilucho Ver Mensaje
... la ide es que al logearse sea reconocido filtrando solo el user // pass, el detalle es porque cuando pongo el WHERE de user / pass, el resultado del JSON me da [] ...
Así es como debe funcionar, pero algo tienes mal, probablemente desde el formulario, agrega tu HTML.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 16/07/2020, 00:15
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Resultado JSON PHP

Cita:
Iniciado por Triby Ver Mensaje
Así es como debe funcionar, pero algo tienes mal, probablemente desde el formulario, agrega tu HTML.
hola triby este es el php que uso como explique en las primeras lineas, funciona el login bien, si NO uso el WHERE, pero no distingue los level, el tema no es el HTML porque no es html es JSON con un form en flutter, el detalle es todo en el PHP, igual te dejo el código, si uso "WHERE username = '$username' AND password = '$password" me arroja el PHP solo: [ ]

Código PHP:
Ver original
  1. <?php
  2.     include 'conn.php';
  3.  
  4.     $username = $_POST['username'];
  5.     $password = $_POST['password'];
  6.  
  7.     $queryResult=$connect->query("SELECT * FROM MyTable WHERE username = '$username' AND password = '$password'");
  8.     $queryLogin = mysqli_query($connect, $queryResult);
  9.     $result = mysqli_fetch_array($queryLogin);
  10.  
  11.     $result=array();
  12.  
  13.     while($fetchData=$queryResult->fetch_assoc()){
  14.         $result[]=$fetchData;
  15.     }
  16.     echo json_encode($result);
  17. ?>
Resultado del JSON:
[ ]

Y Sin el WHERE aparece el codigo correcto asi, pero debería salir también usando el where.
Código MySQL:
Ver original
  1. [{"id":"1","username":"pepito","password":"123456","level":"principiante"}]
  2. [{"id":"1","username":"lolita","password":"abcdef","level":"experto"}]


LOGIN

Código PHP:
Ver original
  1. Future<List> _login() async {
  2.   final response = await http.post("localhost/login.php", body: {
  3.     "username": user.text,
  4.     "password": pass.text,
  5.   });
  6.  
  7.   var datauser = json.decode(response.body);
  8.  
  9.   if(datauser.length==0){
  10.     setState(() {
  11.           msg="Error Login";
  12.         });
  13.   }else{
  14.     if(datauser[0]['level']=='experto'){
  15.        Navigator.pushReplacementNamed(context, '/PaginaExperto');
  16.     }else if(datauser[0]['level']=='principiante'){
  17.       Navigator.pushReplacementNamed(context, '/PaginaPrincipiante');
  18.     }
  19.  
  20.     setState(() {
  21.           username= datauser[0]['username'];
  22.         });
  23.  
  24.   }
  25.  
  26.   return datauser;
  27. }
  #9 (permalink)  
Antiguo 16/07/2020, 12:17
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Resultado JSON PHP

Depuración básica: Antes de acceder a una variable, revisa qué contiene:

Código PHP:
Ver original
  1. <?php
  2.         include 'conn.php';
  3.  
  4.         // Qué estás recibiendo por $_POST?
  5.         var_dump($_POST);
  6.      
  7.         $username = $_POST['username'];
  8.         $password = $_POST['password'];
  9.  
  10.         // Cómo se está armando la consulta?
  11.         $query = "SELECT * FROM MyTable WHERE username = '$username' AND password = '$password'";
  12.         echo $query;
  13.  
  14.         $queryResult=$connect->query($query);
  15.  
  16.  
  17.         $queryLogin = mysqli_query($connect, $queryResult);
  18.         $result = mysqli_fetch_array($queryLogin);
  19.      
  20.         $result=array();
  21.      
  22.         while($fetchData=$queryResult->fetch_assoc()){
  23.             $result[]=$fetchData;
  24.         }
  25.         echo json_encode($result);
  26.     ?>

¿Qué obtienes con el var_dump($_POST);?

¿La consulta se ve bien en pantalla?, cópiala y pégala en PhpMyAdmin, ¿Te arroja los resultados esperados?

Por supuesto, con estas salidas, no va a funcionar en AJAX, seguramente vas a tener que copiar la información desde la consola. Pero es necesario que lo hagas para identificar exactamente dónde está el error.
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 17/07/2020, 09:12
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Resultado JSON PHP

el resultado de la impresion del php es:

Código PHP:
Ver original
  1. array(0) { } SELECT * FROM MyTable WHERE username='' AND password=''[]

no es ajax amigo Triby, el codigo es dart todo va bien solo que el php requiere que se imprima con el where, el detalle es porque si le quito el where, si funciona, pero todo logea como un level cada nivel tiene dos uno de principiante y otro de experto, pero al logearse todos entran como experto, asi se haya registrado como principante, igual se logea como experto, y la idea del where es que reconozca el login como tal.

aqui el codigo dart/flutter de ejemplo:

Código PHP:
Ver original
  1. https://bit.ly/30icuZa


Cita:
Iniciado por Triby Ver Mensaje
Depuración básica: Antes de acceder a una variable, revisa qué contiene:

Código PHP:
Ver original
  1. <?php
  2.         include 'conn.php';
  3.  
  4.         // Qué estás recibiendo por $_POST?
  5.         var_dump($_POST);
  6.      
  7.         $username = $_POST['username'];
  8.         $password = $_POST['password'];
  9.  
  10.         // Cómo se está armando la consulta?
  11.         $query = "SELECT * FROM MyTable WHERE username = '$username' AND password = '$password'";
  12.         echo $query;
  13.  
  14.         $queryResult=$connect->query($query);
  15.  
  16.  
  17.         $queryLogin = mysqli_query($connect, $queryResult);
  18.         $result = mysqli_fetch_array($queryLogin);
  19.      
  20.         $result=array();
  21.      
  22.         while($fetchData=$queryResult->fetch_assoc()){
  23.             $result[]=$fetchData;
  24.         }
  25.         echo json_encode($result);
  26.     ?>

¿Qué obtienes con el var_dump($_POST);?

¿La consulta se ve bien en pantalla?, cópiala y pégala en PhpMyAdmin, ¿Te arroja los resultados esperados?

Por supuesto, con estas salidas, no va a funcionar en AJAX, seguramente vas a tener que copiar la información desde la consola. Pero es necesario que lo hagas para identificar exactamente dónde está el error.

Última edición por pilucho; 17/07/2020 a las 09:23 Razón: url del código fuente
  #11 (permalink)  
Antiguo 17/07/2020, 11:00
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Resultado JSON PHP

Listo, el problema es que PHP no está recibiendo los parámetros por POST. Agrega el código de tu llamada asíncrona Flutter para ver si podemos encontrar dónde está el error.
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 18/07/2020, 08:36
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Resultado JSON PHP

Cita:
Iniciado por Triby Ver Mensaje
Listo, el problema es que PHP no está recibiendo los parámetros por POST. Agrega el código de tu llamada asíncrona Flutter para ver si podemos encontrar dónde está el error.
hola triby ya te lo agrege arriba te lo copio de nuevo


Código PHP:
Ver original
  1. Future<List> _login() async {
  2.   final response = await http.post("localhost/login.php", body: {
  3.     "username": user.text,
  4.     "password": pass.text,
  5.   });
  6.  
  7.   var datauser = json.decode(response.body);
  8.  
  9.   if(datauser.length==0){
  10.     setState(() {
  11.           msg="Error Login";
  12.         });
  13.   }else{
  14.     if(datauser[0]['level']=='experto'){
  15.        Navigator.pushReplacementNamed(context, '/PaginaExperto');
  16.     }else if(datauser[0]['level']=='principiante'){
  17.       Navigator.pushReplacementNamed(context, '/PaginaPrincipiante');
  18.     }
  19.  
  20.     setState(() {
  21.           username= datauser[0]['username'];
  22.         });
  23.  
  24.   }
  25.  
  26.   return datauser;
  27. }

Etiquetas: json
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 05:28.