Foros del Web » Programando para Internet » PHP »

Problema con PHP y JSON

Estas en el tema de Problema con PHP y JSON en el foro de PHP en Foros del Web. Saludos... Que hay de nuevo amigos me descarge un datagrid basado en jquery que utiliza la notacion JSON para desplegar los datos de una BDD ...
  #1 (permalink)  
Antiguo 21/11/2008, 22:35
 
Fecha de Ingreso: junio-2008
Mensajes: 51
Antigüedad: 15 años, 10 meses
Puntos: 0
Pregunta Problema con PHP y JSON

Saludos...
Que hay de nuevo amigos me descarge un datagrid basado en jquery que utiliza la notacion JSON para desplegar los datos de una BDD en un DATAGRID(FLEXIGRID:http://www.webplicity.net/flexigrid/)...me baje un archivo de ejemplo con todos los scripts necesarios para ejecutarlo en local y empezar a usarlo(http://sanderkorvemaker.nl/test/flexigrid/) ejecute el script de la BDD configure la cuenta, el pass,la BDD, el host servidor de BDD "localhost en mi caso"....hasta ahi todo va bien pero verificando con la extension de firebug de firefox noto que el archivo post2.php, me devuelve el archivo como tal es decir:
Código PHP:
<? 
error_reporting
(0);
function 
runSQL($rsql) {
    
$hostname "localhost";
    
$username "root";
    
$password "";
    
$dbname   "country";
    
$connect mysql_connect($hostname,$username,$password) or die ("Error: could not connect to database");
    
$db mysql_select_db($dbname);
    
$result mysql_query($rsql) or die ('test'); 
    return 
$result;
    
mysql_close($connect);
}

function 
countRec($fname,$tname,$where) {
$sql "SELECT count($fname) FROM $tname $where";
$result runSQL($sql);
while (
$row mysql_fetch_array($result)) {
return 
$row[0];
}
}
$page $_POST['page'];
$rp $_POST['rp'];
$sortname $_POST['sortname'];
$sortorder $_POST['sortorder'];

if (!
$sortname$sortname 'name';
if (!
$sortorder$sortorder 'desc';
        if(
$_POST['query']!=''){
            
$where "WHERE `".$_POST['qtype']."` LIKE '%".$_POST['query']."%' ";
        } else {
            
$where ='';
        }
        if(
$_POST['letter_pressed']!=''){
            
$where "WHERE `".$_POST['qtype']."` LIKE '".$_POST['letter_pressed']."%' ";    
        }
        if(
$_POST['letter_pressed']=='#'){
            
$where "WHERE `".$_POST['qtype']."` REGEXP '[[:digit:]]' ";
        }
$sort "ORDER BY $sortname $sortorder";

if (!
$page$page 1;
if (!
$rp$rp 10;

$start = (($page-1) * $rp);

$limit "LIMIT $start, $rp";

$sql "SELECT id,iso,name,printable_name,iso3,numcode FROM country $where $sort $limit";
$result runSQL($sql);

$total countRec('iso','country',$where);

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
header("Last-Modified: " gmdate"D, d M Y H:i:s" ) . "GMT" );
header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache" );
header("Content-type: text/x-json");
$json "";
$json .= "{\n";
$json .= "page: $page,\n";
$json .= "total: $total,\n";
$json .= "rows: [";
$rc false;
while (
$row mysql_fetch_array($result)) {
if (
$rc$json .= ",";
$json .= "\n{";
$json .= "id:'".$row['id']."',";
$json .= "cell:['".$row['id']."','".$row['iso']."'";
$json .= ",'".addslashes($row['name'])."'";
$json .= ",'".addslashes($row['printable_name'])."'";
$json .= ",'".addslashes($row['iso3'])."'";
$json .= ",'".addslashes($row['numcode'])."']";
$json .= "}";
$rc true;
}
$json .= "]\n";
$json .= "}";
echo 
$json;
?>
Y verificando con la extension firebug en el sitio del script de ejemplo me devuelve esto como respuesta:
Código PHP:
{

page1,

total240,

rows: [

{
id:'1',cell:['1','AF','AFGHANISTAN','Afghanistan','AFG','4']},

{
id:'2',cell:['2','AL','ALBANIA','Albania','ALB','8']},

{
id:'3',cell:['3','DZ','ALGERIA','Algeria','DZA','12']},

{
id:'4',cell:['4','AS','AMERICAN SAMOA','American Samoa','ASM','16']},

{
id:'5',cell:['5','AD','ANDORRA','Andorra','AND','20']},

{
id:'6',cell:['6','AO','ANGOLA','Angola','AGO','24']},

{
id:'7',cell:['7','AI','ANGUILLA','Anguilla','AIA','660']},

{
id:'8',cell:['8','AQ','ANTARCTICA','Antarctica','','']},

{
id:'9',cell:['9','AG','ANTIGUA AND BARBUDA','Antigua and Barbuda','ATG','28']},

{
id:'10',cell:['10','AR','ARGENTINA','Argentina','ARG','32']}]


Por lo que es obvio que el archivo post2.php, no me esta devolviendo los datos tal y como deberia de ser, esto se podria deber a la configuracion de apache, o la extension de json de php ?? en el phpinfo() de mi server local me aparece:

json support enabled
json version 1.2.1


Aunque no veo el archivo php_json.dll (plataforma windows)dentro de la carpeta de extensiones...

Como puedo solucionar esto?? es configuracion de mi servidor apache o la extension json de php?? o podria solucionarse con un archivo .htaccess???...de cualquier forma mil gracias amigos ya que he estado rompiendome la cabeza y aun no le busco solucion de verdad que se les agradece su ayuda...
  #2 (permalink)  
Antiguo 21/11/2008, 23:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con PHP y JSON

estas diciendo que el código fuente del PHP sale como respuesta??

tal ves, debes cambiar los <? por <?php ... resulta evidente, ya que el PHP no se ejecuta.. o si?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 01/12/2008, 07:46
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
De acuerdo Respuesta: Problema con PHP y JSON

Hola IngDaemonK:

Lo que te sucede es que no estás utilizando la librería JSON nativa de PHP y estás tratando de contruir el JSON tu mismo mediante echos. No necesariamente es algo malo, pero en términos de performance, si los array de objetos son grandes, puede tener problemas.
Esa que tu ves en el phpifo es la librería nativa JSON pero no la estás utilizando desde tu código. Esa librería ha sido incorporada como nativa a PHP por lo tanto ya no la vas a encontrar como extensión, porque siempre está activa.
Te recomiendo investiges cómo utilizar la funcion json_encode($arr) para obtener JSON bien formado mediante esa librería nativa de PHP.

Saludos!
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:24.