Foros del Web » Programando para Internet » PHP »

consulta en json

Estas en el tema de consulta en json en el foro de PHP en Foros del Web. Hola, tengo este código en el que imprimo unos arrays para verlos en un datatable. El problema lo tengo en que no me saca mas ...
  #1 (permalink)  
Antiguo 24/10/2013, 15:25
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
consulta en json

Hola, tengo este código en el que imprimo unos arrays para verlos en un datatable. El problema lo tengo en que no me saca mas de unos 500 registros. Hay alguna otra forma de hacerlo ?

<?php


$con=mysql_connect ("localhost","","");
mysql_select_db("Pruebas",$con);

$sql="select recambio,denominacion,coste,pvp,existencias from almacen000";

$datos=mysql_query($sql,$con);

$first = 0;//separa los elementos con una coma
$json = '{"aaData":[';

while ($row=mysql_fetch_array($datos)) {

if ($first++) $json .=',';
$json .= '["'.$row['recambio'].'",';
$json .= '"'.$row['denominacion'].'",';
$json .= '"'.$row['pvp'].'",';
$json .= '"'.$row['coste'].'",';
$json .= '"'.$row['existencias'].'"]';

}
$json .= ']}';
print $json;
?>


Gracias y un saludo
  #2 (permalink)  
Antiguo 24/10/2013, 15:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: consulta en json

Cita:
El problema lo tengo en que no me saca mas de unos 500 registros
Por favor explica a que te refieres con eso, porque al menos yo no entiendo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/10/2013, 15:36
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: consulta en json

Lo que quiero es poder imprimir todos los datos de la consulta sql. Con el código que he puesto al imprimir la datatable me da el error:

Código:
DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error.

Este es el código de la datatable:

Código Javascript:
Ver original
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Documento sin título</title>
  6. <script src="scripts/jquery-1.6.1.min.js" type="text/javascript"></script>
  7. <script src="scripts/jquery.dataTables.min.js" type="text/javascript"></script>
  8. <script src="scripts/jquery.dataTables.columnFilter.js" type="text/javascript"></script>
  9. <script src="scripts/jquery.dataTables.pagination.js" type="text/javascript"></script>
  10. <link href="css/demo_table_jui.css" rel="stylesheet" type="text/css">
  11. <style type="text/css">
  12. /* BeginOAWidget_Instance_2586523: #dataTable */
  13.  
  14.     @import url("css/custom/sunny/jquery.ui.all.css");
  15.     #dataTable {padding: 0;margin:0;width:100%;}
  16.     #dataTable_wrapper{width:100%;}
  17.     #dataTable_wrapper th {cursor:pointer}
  18.     #dataTable_wrapper tr.odd {color:#000; background-color:#ffff00}
  19.     #dataTable_wrapper tr.odd:hover {color:#ffffff; background-color:#ff9900}
  20.     #dataTable_wrapper tr.odd td.sorting_1 {color:#000000; background-color:#ffcc00}
  21.     #dataTable_wrapper tr.odd:hover td.sorting_1 {color:#ffffff; background-color:#ff6600}
  22.     #dataTable_wrapper tr.even {color:#000000; background-color:#ffffff}
  23.     #dataTable_wrapper tr.even:hover, tr.even td.highlighted{color:#EEE; background-color:#cc6600}
  24.     #dataTable_wrapper tr.even td.sorting_1 {color:#000000; background-color:#cccc00}
  25.     #dataTable_wrapper tr.even:hover td.sorting_1 {color:#FFF; background-color:#cc3300}
  26.        
  27. /* EndOAWidget_Instance_2586523 */
  28. </style>
  29. <script type="text/xml">
  30. <!--
  31. <oa:widgets>
  32.   <oa:widget wid="2586523" binding="#dataTable" />
  33. </oa:widgets>
  34. -->
  35. </script>
  36. </head>
  37.  
  38. <body>
  39. <script type="text/javascript">
  40. // BeginOAWidget_Instance_2586523: #dataTable
  41.  
  42. $(document).ready(function() {
  43.    oTable = $('#dataTable').dataTable({
  44.       "bJQueryUI": true,
  45.       "bScrollCollapse": true,
  46.       "sScrollY": "200px",
  47.       "bAutoWidth": true,
  48.       "bPaginate": true,
  49.       "sPaginationType": "full_numbers", //full_numbers,two_button
  50.       "bStateSave": true,
  51.       "bInfo": true,
  52.       "bFilter": true,
  53.       "iDisplayLength": 10,
  54.       "bLengthChange": true,
  55.       "sAjaxSource": "datatable_1.php",
  56.      
  57.    });
  58. } );
  59.      
  60. // EndOAWidget_Instance_2586523
  61. </script>
  62. <table cellpadding="0" cellspacing="0" border="0" id="dataTable">
  63.   <thead>
  64.     <tr>
  65.       <th>Recambio</th>
  66.       <th>Denominación</th>
  67.       <th>Pvp</th>
  68.       <th>Coste</th>
  69.       <th>Exist/000</th>
  70.     </tr>
  71.   </thead>
  72.   <tbody>
  73.    
  74.    
  75.    
  76.    
  77.    
  78.   </tbody>
  79. </table>
  80. </body>
  81. </html>



Y el php que ya lo puse antes:

datatable_1.php

Código PHP:
<?php


$con
=mysql_connect ("localhost","","");
mysql_select_db("Pruebas",$con);

$sql="select recambio,denominacion,coste,pvp,existencias from almacen000";

$datos=mysql_query($sql,$con);

$first 0;//separa los elementos con una coma
$json '{"aaData":[';

while (
$row=mysql_fetch_array($datos)) {

if (
$first++) $json .=',';
$json .= '["'.$row['recambio'].'",';
$json .= '"'.$row['denominacion'].'",';
$json .= '"'.$row['pvp'].'",';
$json .= '"'.$row['coste'].'",';
$json .= '"'.$row['existencias'].'"]';

}
$json .= ']}';
print 
$json
?>
  #4 (permalink)  
Antiguo 24/10/2013, 15:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: consulta en json

Bueno, pues como no puedo ejecutar tu script que crea el JSON me es imposible adivinar si está bien formado o no, como sea eso se puede arreglar usando json_encode(), que es la forma correcta de generar JSON.

Revisa si usando dicha función puedes generar un JSON válido.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/10/2013, 15:45
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: consulta en json

Gracias, te refieres a una cosa así:

Código PHP:
$arr = array();
while(
$r mysql_fetch_array($miconsulta)){
   
$arr[] = $r;
}
 
echo 
json_encode($arr); 

Pero como lo hago con aaData ????
  #6 (permalink)  
Antiguo 24/10/2013, 15:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: consulta en json


Código PHP:
Ver original
  1. echo json_encode(array('aaData' => $arr));

Además te sugiero no usar mysql_fetch_array() para que te devuelve los valores combinados, es decir, índices numéricos y asociativos.

Deberías usar mysql_fetch_assoc() para extraer únicamente un array asociativo.

PDTA: MySQL está obsoleto, lee lo siguiente. http://www.forosdelweb.com/f18/anunc...oleta-1008145/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 24/10/2013, 16:15
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: consulta en json

Lo he puesto así pero me da error:

Código:
Warning : mysql_fetch_array (): suministrado argumento no es un recurso válido del resultado de MySQL en datatable_1.php on line 11
{"aDatos": []}
Código PHP:
<?php


     $con
=mysql_connect ("localhost","","");
     
mysql_select_db("Pruebas",$con);
     
$sql="select recambio,denominacion,coste,pvp,existencias from almacen000";
  
$arr = array();  
   
while(
$row mysql_fetch_array($sql)){
 
 
$arr[] = array( 
 
            
'recambio'          => $row['recambio'], 
            
'denominacion'          => $row['denominacion'], 
            
'pvp'      => $row['pvp'], 
            
'coste'       => $row['coste'],
            
'existencias'       => $row['existencias']
 
        
        ); 
    } 
    
   echo 
json_encode(array('aData' => $arr));
?>
  #8 (permalink)  
Antiguo 24/10/2013, 16:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: consulta en json

Pues si quitas el mysql_query() ¿cómo esperas que la consulta se ejecute?

El error no podía ser mas obvio, ¿cómo es posible que no te des cuenta de lo que haces?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 24/10/2013, 16:32
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: consulta en json

que despiste, perdona lo he puesto así y ya me imprime datos pero me da error:

Código:
Longitud de la matriz no válido

Código Javascript:
Ver original
  1. <?php
  2.  
  3.  
  4.      $con=mysql_connect ("localhost","","");
  5.      mysql_select_db("Pruebas",$con);
  6.      
  7. $sql="select recambio,denominacion,coste,pvp,existencias from almacen000";
  8.  
  9. $arr = array();
  10.  
  11. $resultado = mysql_query($sql);
  12.    
  13. while($row = mysql_fetch_assoc($resultado)){
  14.  
  15.  $arr[] = array(
  16.  
  17.             'recambio'          => $row['recambio'],
  18.             'denominacion'          => $row['denominacion'],
  19.             'pvp'      => $row['pvp'],
  20.             'coste'       => $row['coste'],
  21.             'existencias'       => $row['existencias']
  22.  
  23.        
  24.         );
  25.     }
  26.    
  27.    echo json_encode(array('aData' => $arr));
  28. ?>
  #10 (permalink)  
Antiguo 24/10/2013, 16:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: consulta en json

Pues ese error no viene de PHP, debe venir del lado de la librería que estás usando en el navegador, revisa en su documentación al respecto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 24/10/2013, 16:54
Avatar de elporfirio  
Fecha de Ingreso: octubre-2013
Mensajes: 37
Antigüedad: 10 años, 6 meses
Puntos: 4
Respuesta: consulta en json

el echo json_encode() tambien imprime la string comparala con lo que necesita recibir tu libreria de JS que estes utilizando.

En caso de AJAx puedes ver en la consola del inombrable (IE), tambien chrome y firefox incluyen una, ademas de Firebug y webdeveloper toolbar para revisar que regresa de respuesta tu script.
  #12 (permalink)  
Antiguo 24/10/2013, 17:03
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: consulta en json

Gracias, pero el problema es que si que lista registros pero poniendole un filtro al SELECT. Puede listar hasta 500 registros pero no todos los que tengo en la base de datos. Lo he puesto otra vez como lo tenia al principio porque de la forma que lo he hecho con pateketrueke no lista ningún registro.

Código PHP:
<?php


$con
=mysql_connect ("localhost","","");
mysql_select_db("Pruebas",$con);

$sql="select recambio,denominacion,coste,pvp,existencias from almacen000";

$datos=mysql_query($sql,$con);

$first 0;//separa los elementos con una coma
$json '{"aaData":[';

while (
$row=mysql_fetch_array($datos)) {

if (
$first++) $json .=',';
$json .= '["'.$row['recambio'].'",';
$json .= '"'.$row['denominacion'].'",';
$json .= '"'.$row['pvp'].'",';
$json .= '"'.$row['coste'].'",';
$json .= '"'.$row['existencias'].'"]';

}
$json .= ']}';
print 
$json
?>

Y como he comentado antes el error que me da sin ponerle ningun filtro al SELECT es:

Código HTML:
Ver original
  1. DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error.

Etiquetas: json, mysql, registro, select, sql
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 06:48.