Api de google organigrama

  • Autor Autor cooply
  • Fecha de inicio Fecha de inicio
C

cooply

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Muy buenas, estoy intentado hacer un orgranigrama con la api de google: API

El problema esque yo quiero sacar los datos de los usuarios de mi base de datos.

Tengo este codigo
PHP:
<? 	$sql = $db->Query("SELECT...'");
	$tops = $db->FetchArrayAll($sql);
	foreach($tops as $top){
	
	$sql3 = $db->Query("SELECT * FROM users LIMIT 5");
	$tops3 = $db->FetchArrayAll($sql3);

 foreach($tops3 as $top3){ ?> 
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["orgchart"]});
      google.setOnLoadCallback(drawChart);

     function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'name');
        data.addColumn('string', 'manager');

        data.addRows([[' <? echo $top3['login'];  ?>', '<? echo $top['login']?>']]);

        var chart = new google.visualization.OrgChart(document.getElementById('chart_div'));
        chart.draw(data, {allowHtml:true});
      }
   </script>

    <div id="chart_div"></div>

<? }}?>


este me funciona, pero solo enseña 1 usuario, y yo quiero que enseñe todos

Ahora mismo se queda asi 890ac76514b0e627af148df3734424ae.webp

Y yo quiero que en el mismo nivel de user2 muestre a user3, user4..

Ojala alguien pueda ayudarme, llevo horas y no consigo realizarlo, saludos y gracias de antemano.
 
Hola

Antes de meter el script deberias ver si los foreach te estan funcionando, mira la respuesta del primero, por ejemplo no veo que del primero estes sacando alguna variable solo lo pones pero no veo para que lo usas

PHP:
 $sql = $db->Query("SELECT...'");
    $tops = $db->FetchArrayAll($sql);
    foreach($tops as $top){

    // que dato estas sacando de este foreach? no veo que lo utilices en el segundo query

    $sql3 = $db->Query("SELECT * FROM users LIMIT 5");
    $tops3 = $db->FetchArrayAll($sql3);

Primero ve la respuesta de este

PHP:
 $sql = $db->Query("SELECT...'");
    $tops = $db->FetchArrayAll($sql);
    foreach($tops as $top){


}

Tambien se necesita ver el primer query

Saludos
 
Última edición:
Muy buenas [MENTION=41713]nestornoe[/MENTION] , muchisimas gracias por contestar,
he cambiado un poco el codigo en este rato y ahora lo tengo asi para no tener tanto codigo como dices.

PHP:
<?
      $result=mysql_query("SELECT login FROM users WHERE `ref`='1' ");
	while ($row=mysql_fetch_array($result))
{
?>

    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["orgchart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'name');
        data.addColumn('string', 'manager');

        data.addRows([     
		  ['<? echo $row['login'];?>', 'admin'], 
        ]);
	

        var chart = new google.visualization.OrgChart(document.getElementById('chart_div'));
        chart.draw(data, {allowHtml:true});
      }
   </script>

    <div id="chart_div"></div>

<?
     }
       mysql_free_result($result);
?>

No entiendo mucho de php ni de js, pero creo que el problema reside aquí,
PHP:
    data.addRows([     
		  ['<? echo $row['login'];?>', 'admin'], 
        ]);

es donde me debe de sacar todos los usuarios con ref=1 que son unos 15, y solo muestra uno...

¿Sabes que puede pasar?

Saludos y gracias por contestar.

PD: Si pongo esta linea: <? echo $row['login'];?> fuera del </script> si me muestra a todos los usuarios. Nose porque no funcina dentro...
 
Última edición:
si el la columna de ref de tu tabla es integer no puede pasale un string '1' solucion quitarle las comillas simples.

otra cosita men estas agregando un bucle cargando muchas veces la librerias js de google.

por otro lado mysql es deprecated osae absoleto cambia a mysqli o pdo.
 
Última edición:
A ver has esto

PHP:
<?
      $result=mysql_query("SELECT login FROM users WHERE `ref`='1' ");
    while ($row=mysql_fetch_array($result))
{

echo $row['login'].'<br>';

     }
       mysql_free_result($result);
?>

Cuantas respuestas te da?

Ahora de la parte del script, nunca lo he utilizado pero deja veo si

PHP:
data.addRows([     
          ['<? echo $row['login'];?>', 'admin'], 
        ]);

tiene que llevar un array, deja me doy una vuelta y veo

Saludos
 
Gracias por contestar [MENTION=127525]jsstoni[/MENTION] , pero no me funciona, sigue saliendo solo un usuario..
 
[MENTION=41713]nestornoe[/MENTION] sigue dandome un solo resultado..
Nose que puede estar pasando
 
[MENTION=121599]cooply[/MENTION] pasa el LINK de la documentación de google de lo que esta haciendo para ver como verdaderamente deben ir representados cada dato.
 
Insertar CODE, HTML o PHP:
<?php
$db = new mysqli('server', 'usuario', 'password', 'db');
$query = $db->query("SELECT login FROM users WHERE `ref`=1 ");
while($row = $query->fetch_assoc()) {
$data[] = $row['login'];
}
?>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["orgchart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'name');
        data.addColumn('string', 'manager');

        data.addRows([
                <?php echo "[".json_encode($data)."]"; ?>
        ]);
    

        var chart = new google.visualization.OrgChart(document.getElementById('chart_div'));
        chart.draw(data, {allowHtml:true});
      }
   </script>
<div id="chart_div"></div>
 
Última edición:
Muchisimas gracias por contestar y molestaros en ayudarme, pero este sigue sin funcionarme, ahora mismo no me aparece nada con ese codigo, sale todo blanco y en el codigo fuente no devuelve nada..

¿Alguna otra idea?

Gracias y saludos


Edito:

He probado con esto

PHP:
$sql2=mysql_query("SELECT login FROM users WHERE `ref`=1 ");

# Collect the results
while($obj = mysql_fetch_object($sql2)) {
    $arr[] = $obj;
}

# JSON-encode the response
$json_response = json_encode($arr);

 <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["orgchart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Name');
        data.addColumn('string', 'Manager');
        data.addColumn('string', 'ToolTip');

        data.addRows([
          [{v:'<?php echo "[".json_encode($arr)."]"; ?>', f:'usuario1'}, '', ''],

        ]);
	
        var chart = new google.visualization.OrgChart(document.getElementById('chart_div'));
        chart.draw(data, {allowHtml:true});
      }
   </script>

<div id="chart_div"></div>

y aunque sigue sin aparecer si aparece en el codigo fuente los usuarios en formato json.
¿Alguna idea de hacer que salgan en el organigrama?
 
Última edición:
Atrás
Arriba