Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

como mostrar datos en cakephp

Estas en el tema de como mostrar datos en cakephp en el foro de Frameworks y PHP orientado a objetos en Foros del Web. no puedo visualizar los datos de manera directa; tengo un archivo llamado rios.ctp: Código PHP: foreach ( $mrios  as  $mrio ):             echo ( $mrio [ 'Mrio' ][ ...
  #1 (permalink)  
Antiguo 18/07/2013, 16:12
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 9 meses
Puntos: 2
Exclamación como mostrar datos en cakephp

no puedo visualizar los datos de manera directa; tengo un archivo llamado rios.ctp:
Código PHP:
foreach ($mrios as $mrio):
            echo (
$mrio['Mrio']['id'].'-'.$mrio['Mrio']['mriosfecha'].'+'.$mrio['Mrio']['cuenca'].'*'.$mrio['Mrio']['estacion'].'/'.$mrio['Mrio']['nombre'].'--'.$mrio['Mrio']['periodo'].'++'.$mrio['Mrio']['mc'].'//'.$mrio['Mrio']['promedio'].'**'.$this->Html->link($mrio['Location']['name'], array('controller' => 'locations''action' => 'view'$mrio['Location']['id'])));
        endforeach; 
me da el error de que mrios es una variable indefinida.

si es que pongo ese condigo dentro de mi controlador - mrios_controller.php:
Código PHP:
foreach ($mrios as $mrio):
            
pr($mrio['Mrio']['id'].'-'.$mrio['Mrio']['mriosfecha'].'+'.$mrio['Mrio']['cuenca'].'*'.$mrio['Mrio']['estacion'].'/'.$mrio['Mrio']['nombre'].'--'.$mrio['Mrio']['periodo'].'++'.$mrio['Mrio']['mc'].'//'.$mrio['Mrio']['promedio'].'**'.$this->Html->link($mrio['Location']['name'], array('controller' => 'locations''action' => 'view'$mrio['Location']['id'])));
        endforeach; 
con la funcion "pr" me deberia de mostrar los datos, pero tampoco lo hace; donde deberia de colocar el pr?????.
  #2 (permalink)  
Antiguo 18/07/2013, 20:19
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: como mostrar datos en cakephp

Se supone que el controlador pasa el arreglo a tu vista. Si pones tu código es mas probable que alguien te pueda ayudar
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 19/07/2013, 09:55
 
Fecha de Ingreso: febrero-2012
Mensajes: 37
Antigüedad: 12 años, 2 meses
Puntos: 5
Respuesta: como mostrar datos en cakephp

Hola Compañero, para mandar el valor de la variable desde el controlador a la vista, lo puedes hacer con
Código PHP:
set() 
ejemplo:

Código PHP:
// First you pass data from the controller:

$this->set('color', 'pink');

// Then, in the view, you can utilize the data:
You have selected <?php echo $color?>
documentación: [URL="http://book.cakephp.org/2.0/en/controllers.html#interacting-with-views"]http://book.cakephp.org/2.0/en/controllers.html#interacting-with-views[/URL]

ahí también te dice como pasar arrays.

Recuerda que esta variable sólo estará disponible en su correspondiente vista del controlador.

Ahora la duda que tienes acerca del pr(), este sirve para imprimir arrays:

pr(mixed $var): Convenience wrapper for print_r(), with the addition of wrapping <pre> tags around the output.

Intenta con:
Código PHP:
pr($mrios
fuera del forearch y veremos que tal te va.

Saludos
  #4 (permalink)  
Antiguo 19/07/2013, 14:28
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 9 meses
Puntos: 2
Exclamación Respuesta: como mostrar datos en cakephp

claro, pero el problema esta en que actualmente estoy usando el modelo A, y la informacion de rios esta en el modelo B; segun leí se deberia de poner con loadmodel pero igual no carga.
Ahora, mi intencion es mostar un grafico; para lo cual pude implementar el siguiente codigo:
Código PHP:
<!--
 * Archivo:         rios.ctp
 * Función:         vista de boletines
 * Institución:     I+D Consultores
 * Proyecto:        Sistema de Informaciön de Inteligencia de Negocios
 * Dependencias:    clients_controller.php
 * Programador:     Frank Tapia
 * Creacion:        2013/07/18
 * Modificación:    2013/007/18
-->

<?php echo $html->css('main'); ?>
<?php 
echo $html->css('jquery.calendarPicker'); ?>
<?php 
echo $html->css('demo_table'); ?>
<?php 
echo $html->css('TableTools'); ?>

<?php echo $html->script('https://www.google.com/jsapi'); ?>
<?php 
echo $html->script('jquery-1.4.4.min');  ?>
<?php 
echo $html->script('jquery.tools.min');  ?>
<?php 
echo $html->script('jquery.timers-1.2'); ?>
<?php 
echo $html->script('jquery-masonry-1.3.2.min'); ?>
<?php 
echo $html->script('jquery.dataTables.min'); ?>
<?php 
echo $html->script('jquery.jqplot.min'); ?>
<?php 
echo $html->script('jqplot.dateAxisRenderer.min'); ?>
<?php 
echo $html->script('jqplot.dragable.min'); ?>
<?php 
echo $html->script('jqplot.trendline.min'); ?>
<?php 
echo $html->script('jqplot.bubbleRenderer.min'); ?>
<?php 
echo $html->script('rio'); ?>
<?php 
echo $html->script('TableTools.min'); ?>
<!--[if IE]>
<?php echo $html->script('excanvas.min'); ?>
<![endif]-->
<?php include 'vendors/phplot.php';?>


<div id="main">
  <div id="nbanner">    
            <div class="pagelogo">&nbsp;</div>    
            <div class="pagemaintitle">Agro II</div>
            <div class="pagemainsubtitle"><?php echo $html->link('Inicio''/clients/index');?> / Caudales de Rios</div>
                        
  </div>   
  <div id="maincontent">
  
      <?php
      $datos
=array();
      foreach (
$mrios as $mrio):
            
//pr ($mrio['Mrio']['id'].'-'.$mrio['Mrio']['mriosfecha'].'+'.$mrio['Mrio']['cuenca'].'*'.$mrio['Mrio']['estacion'].'/'.$mrio['Mrio']['nombre'].'--'.$mrio['Mrio']['periodo'].'++'.$mrio['Mrio']['mc'].'//'.$mrio['Mrio']['promedio'].'**'.$this->Html->link($mrio['Location']['name'], array('controller' => 'locations', 'action' => 'view', $mrio['Location']['id'])));
            
$lugar=$mrio['Mrio']['cuenca'];
            
$medida=$mrio[Mrio]['mc'];
            
$datos[]=array($lugar,(int) $medida);
        endforeach;
        
pr ($datos);
       
$grafico= new PHPlot();
       
$grafico -> SetPlotType('bars');
       
$grafico -> SetTitle('Grafico 01');
       
$grafico -> setXTitle('medida');
       
$grafico -> setYTitle('cuenca');
       
$grafico -> setDataValues($datos);
       
$grafico -> DrawGraph();
      
?>
     
      <?php $bc '/bc:Inicio,index;Caudales de Rios,rios.module:AgroII';?>
     
        
    </div>
  <div id="sponsors">
        <div class="minag">&nbsp;</div>
  </div>
  <div id="footer">Todos los derechos reservados 2010 - Dirección de Información Agraria - Ministerio de Agricultura</div>
</div>
pero me da dos errores, el 1ero, si comento la variable grafico me da el siguiente error:
Cita:
Notice (8): Use of undefined constant Mrio - assumed 'Mrio' [APP\views\mrios\rios.ctp, line 50]
pero si imprime el array; ahora si es no comento el grafico me da el siguiente error:
Cita:
No se puede mostrar la imagen “http://localhost/agroaldia/sisin/ind...module:AgroII” porque contiene errores.
  #5 (permalink)  
Antiguo 19/07/2013, 19:07
 
Fecha de Ingreso: febrero-2012
Mensajes: 37
Antigüedad: 12 años, 2 meses
Puntos: 5
Respuesta: como mostrar datos en cakephp

Mira tu linea:

Código PHP:
$medida=$mrio[Mrio]['mc']; 
¿Mrio es verdaderamente una constante? o te faltan las comillas

en la linea superior la pones nombre de indice:
Código PHP:
 $lugar=$mrio['Mrio']['cuenca']; 
a mi se me hace que te faltan las comillas, y asegurate que tiene la variable
Código PHP:
      <?php
      $datos
=array();
pr($mrios);
      foreach (
$mrios as $mrio): 
......
de estar vacia, tendras que poner como la estas estableciendo desde tu controller.

Saludos
  #6 (permalink)  
Antiguo 22/07/2013, 16:09
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 9 meses
Puntos: 2
Exclamación Respuesta: como mostrar datos en cakephp

estoy intentando mostrar los datos en un grafico con google chart pero solo me muestra el array mas no el grafico; este es el codigo que implemento:
Código PHP:
<!--
 * Archivo:         rios.ctp
 * Función:         vista de boletines
 * Institución:     I+D Consultores
 * Proyecto:        Sistema de Informaciön de Inteligencia de Negocios
 * Dependencias:    clients_controller.php
 * Programador:     Frank Tapia
 * Creacion:        2013/07/18
 * Modificación:    2013/007/18
-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<?php echo $html->css('main'); ?>
<?php 
require_once 'vendors/phplot/phplot.php';?>

<?php
    $informacion
=array();
        foreach (
$mrios as $mrio):
            
$lugar=$mrio['Mrio']['cuenca'];
            
$medida=$mrio['Mrio']['mc'];
            
$informacion[]=array($lugar,$mrio['Mrio']['estacion'],(double)$medida);
        endforeach;
        echo 
json_encode( array($informacion) );
    
?>
    <script type="text/javascript">
        
        datos = JSON.parse(datos);
        google.load("visualization", "1", {packages:["corechart"]});
          google.setOnLoadCallback(dibujarGrafico);
      
          function dibujarGrafico() {
            var data = google.visualization.arrayToDataTable(datos);

            var options = {
              title: 'VENTAS DEL PRIMER BIMESTRE',
              hAxis: {title: 'MESES', titleTextStyle: {color: 'green'}},
              vAxis: {title: 'MILES DE PESOS', titleTextStyle: {color: '#FF0000'}},
              backgroundColor:'#ffffcc',
              legend:{position: 'bottom', textStyle: {color: 'blue', fontSize: 13}},
              width:900,
            height:500
            };

            var grafico = new google.visualization.ColumnChart(document.getElementById('grafica'));
            grafico.draw(data, options);
          }
    </script>

<div id="main">
  <div id="nbanner">    
            <div class="pagelogo">&nbsp;</div>    
            <div class="pagemaintitle">Agro II</div>
            <div class="pagemainsubtitle"><?php echo $html->link('Inicio''/clients/index');?> / Caudales de Rios</div>
                        
  </div>   
  <div id="maincontent">
     <div id="grafica"></div>

      <?php $bc '/bc:Inicio,index;Caudales de Rios,rios.module:AgroII';?>
     
        
    </div>
  <div id="sponsors">
        <div class="minag">&nbsp;</div>
  </div>
  <div id="footer">Todos los derechos reservados 2010 - Dirección de Información Agraria - Ministerio de Agricultura</div>
</div>
este es el array que me imprime:

Cita:
[[["la cuenca","la estacion",180],["cuenca -a","estacion b",200.12],["cuenca -b","estacion g",35.68],["jequetepe","jequetepes",200],["jequetepe","jequetepes",150]]]
espero me puedan ayudar. gracias.
  #7 (permalink)  
Antiguo 25/07/2013, 08:57
 
Fecha de Ingreso: febrero-2012
Mensajes: 37
Antigüedad: 12 años, 2 meses
Puntos: 5
Respuesta: como mostrar datos en cakephp

En tu linea esta haciendo esto:
Código PHP:
 echo json_encode( array($informacion) ); 
La documentación de json_encode nos dice que regresa un string y es justamente lo que esta imprimiendo.

luego en tu Js pones:

datos = JSON.parse(datos);

la variable datos por lo visto no esta previamente declarada, parece que esa variable es en gran parte responsable de dibujar el gráfico, lee la documentación de como generar gráfico para que sepas como pasarle los datos necesarios.

Saludos

Etiquetas: cakephp, html, php, variable
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 10:34.