[SOLUCIONADO] Porque no me muestra el resultado json en php?

Iniciado por proxy_lainux, Agosto 23, 2013, 06:24:57 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 23, 2013, 06:24:57 PM Ultima modificación: Marzo 22, 2014, 01:51:07 PM por Expermicid
hola

estoy haciendo un codigo sencillo para aprender como usar funciones en php, hice 2 archivos, uno es para registar datos a mysql, y el segundo es para consultar

pero tengo un problema en el archivo de consulta, no me aparece nada, unicamente puedo registar datos

este es el codigo para consulta

Código: php
<?php

include('funcion.php');

$cc=$_GET['cedula'];

if($resultset = getSQLResultSet("SELECT cedula,nombre,apellido,direccion,telefono FROM `tablaprueba` where cedula = '$cc'")){
   
    while($row = $resultset->fetch_array(MYSQLI_NUM)){
        echo json_encode($row);
    }
}

?>


y esta es la funcion

Código: php


header('Content Type= text/html; charset=utf-8');

function getSQLResultSet($commando){
   
    $mysql = new mysqli("localhost", "root", "pass", "prueba");
   
    if($mysqli->connect_errno){
       
        printf("conexion fallida: %s", $mysqli->connect_errno);
        exit();
    }
   
    if($mysqli->multi_query($commando)){
       
        return $mysqli->store_result();
    }
    $mysqli->close();
}

?>


que error podria tener?, ya que no me muestra ningun resultado

el "primary key" de la base de datos es "cedula", lo cual hago lo siguiente para que me muestre el resultado de la cedula que solicito

localhost/consulta.php?cedula=123456

pero no me muestra nada el explorador, utilizo firefox

salu2

Agosto 23, 2013, 08:41:32 PM #1 Ultima modificación: Agosto 23, 2013, 08:45:53 PM por Destructor.php
Código: php
<?php

include('funcion.php');

$cc=$_GET['cedula'];

if($resultset = getSQLResultSet("SELECT cedula,nombre,apellido,direccion,telefono FROM `tablaprueba` where cedula = '$cc'")){
   
    while($row = $resultset->fetch_array(MYSQLI_NUM)){
        echo json_encode($row);
    }
}

?>


Mira en la sentencia sql, mejor dicho en esta parte:

("SELECT cedula,nombre,apellido,direccion,telefono FROM `tablaprueba` where cedula = '$cc'")

quitale las comillas a $cc, recuerda que cuando trabajas con comillas dobles se puede insertar variables, y ademas quitale las comillas a tablaprueba, hay dos formas de hacerlo, una es asi:

('SELECT cedula,nombre,apellido,direccion,telefono FROM tablaprueba where cedula = ' . $cc)

y la otra es asi:

("SELECT cedula,nombre,apellido,direccion,telefono FROM tablaprueba where cedula = $cc ")

Fijate a ver que tal, saludos!

ya lo intente de las dos formas pero no me muestra nada, tambien lo quise hacer directamente

("SELECT * FROM tablaprueba where cedula = 123456")

no se si sirva de algo, pero estoy usando apache2 en linux, talvez me haga falta algo para usar json o porque sera no me aparecera el resultado?

tambien ya intente borrando el cache del explorador

Lo mejor seria "depurar el codigo" por ejemplo, en en el archivo función en esta parte agregale lo que yo le agregue:

Código: php

if($mysqli->multi_query($commando)){
        echo "hasta aqui funciona";
        return $mysqli->store_result();
    }


si te lo imprime en pantalla es que hasta ahi funciona el codigo, luego si todo va bien haz esto:
Código: php

if($mysqli->multi_query($commando)){
        $hola =  $mysqli->store_result();
        echo $hola;
        return $hola;
    }


si en ese caso te imprime true en pantalla, entonces sabes que el error está en la respuesta, avisame si hasta ahi va bien y te ayudo a seguir con el resto de la depuracion

no me aparece el mensaje, si coloco un echo fuera de if, si me aparece un mensaje, pero dentro no aparece ninguno

Intentaste con la consulta sql que yo te mande?

Agosto 23, 2013, 10:26:10 PM #6 Ultima modificación: Agosto 23, 2013, 10:34:06 PM por grimoire
creo el error es parte ya sea del explorador o de linux o de las dos, me pase un momento a windows para realizar el codigo de consulta a mysql como me dijiste, instale wampserv y me funciono, ya me aparece el resultado

???, pero que me hara falta en linux??

EDITADO

-------------

coloque este ejemplo y me funciono json, es algo raro, pero sigue sin funcionar consulta.php en linux


<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>



jajaja, que torpe me senti, jaja ya lo solucione

Código: php
  $mysql = new mysqli("localhost", "root", "pass", "prueba");


este era mi error... una simple "i"

Código: php
  $mysqli = new mysqli("localhost", "root", "pass", "prueba");


muchas gracias por tu ayuda destructor.php

salu2 ;D

:-[

Te deberia haber saltado error entonces :/ Talvez tienes error_reporting a 0!
Me alegro que hayas podido solucionarlo
Saludos

Agosto 24, 2013, 12:47:41 AM #9 Ultima modificación: Octubre 04, 2013, 02:22:33 PM por [H]arkonnen
la proxima vez que quieras saber si una variable tiene realmente algo pon var_dump($variable); (sin echo) y te dirá aunque no tenga nada que tiene valor NULL xD, si usas json te puede decir nada como te pasaba.

como dijo destructor, activa el reporte de errores y ponlo en un nivel alto para que te avise cuando usas variables que no fueron declaradas por ejemplo.

tu ya haz dicho el problema, y su solución asique no voy a decir que te faltaba la i aunque era bastante obvio xD

saludos!

tal como dice Destructor.php cuando tengas un servidor de desarrollo debes trabajar siempre con el reporte de errores habilitado o si no estarás programando a ciegas.

desde php.ini busca error_reporting o si no desde php usa esto:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
tal como dice Destructor.php cuando tengas un servidor de desarrollo debes trabajar siempre con el reporte de errores habilitado o si no estarás programando a ciegas.

desde php.ini busca error_reporting o si no desde php usa esto:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

para que eso funcione el display errors debe estar activado, si no tienes acceso al archivo de inicialización de php (php.ini) puedes usar la directiva de configuración ini_set('regla', valor);

para activar el muestreo de error puedes usar ini_set('display_errors', TRUE); esto te puede servir para servidores web.

pido disculpas si mi respuesta está fuera de lugar, no me tomé el tiempo de leer las respuestas anteriores.

saludos!

Intentan con esto:

Código: php
<?php

include('funcion.php');

$cc=$_GET['cedula'];

$returnData = array();

if($resultset = getSQLResultSet("SELECT cedula,nombre,apellido,direccion,telefono FROM `tablaprueba` where cedula = '$cc'")){
   
    while($row = $resultset->fetch_array(MYSQLI_NUM)){
        $returnData[] = $row;
    }
}
echo json_encode($returnData);
?>


Saludos,
Xt3mP.
Cada vez que me das Karma me motivas