Ayuda para visualizar un resultado

Mensajes
81
Puntuación de reacción
0
Chicos, tengo este código que me cuenta la cantidad de veces que se repite cierto valor de una tabla y me lo muestra en texto plano.

PHP:
    echo "<td>{$row['COUNT(source)']}</td>";

Sin embargo me gustaría poder hacer click en dichos números y que me muestre los resultados, el tema es que no se me ocurre como hacerlo, alguna idea?:dale2:
 
Mensajes
16
Puntuación de reacción
0
Hola, disculpa pero podrías detallar un poco más lo que deseas hacer?

Tengo una idea muy vaga pero no se si es lo que buscas:
Podrías mostrar todos los registros de forma oculta, utilizando los números como header, y empleando javascript (lib jquery, por ejemplo), haces una función para mostrar/ocultar todos los registros de cada grupo de numero al hacer click en ellos (puedes utilizar un tag de enlace para ellos)
Ej:
PHP:
echo "<td><a href='#' class='ver-lista' data-lista='primera'>{$row['COUNT(source)']}</a></td>";

HTML:
<div id="primera" class="hide"> /* Registros */ </div>

HTML:
<script>
$('.ver-lista').on('click',function(){
  var target = $(this).data('lista');
  
  $('#'+target).toggleClass('show');
});
</script>

Para las clases CSS:
HTML:
<style>
.hide{
 display:none
}
.show{
 display: in-line
}
</style>

el código no está probado, solo te lo coloco como guía.

Espero que te sirve y como te comenté, esta puede ser una forma, no la única.
 
Mensajes
81
Puntuación de reacción
0
Hola, disculpa pero podrías detallar un poco más lo que deseas hacer?

Tengo una idea muy vaga pero no se si es lo que buscas:
Podrías mostrar todos los registros de forma oculta, utilizando los números como header, y empleando javascript (lib jquery, por ejemplo), haces una función para mostrar/ocultar todos los registros de cada grupo de numero al hacer click en ellos (puedes utilizar un tag de enlace para ellos)
Ej:
PHP:
echo "<td><a href='#' class='ver-lista' data-lista='primera'>{$row['COUNT(source)']}</a></td>";

HTML:
<div id="primera" class="hide"> /* Registros */ </div>

HTML:
<script>
$('.ver-lista').on('click',function(){
  var target = $(this).data('lista');
  
  $('#'+target).toggleClass('show');
});
</script>

Para las clases CSS:
HTML:
<style>
.hide{
 display:none
}
.show{
 display: in-line
}
</style>

el código no está probado, solo te lo coloco como guía.

Espero que te sirve y como te comenté, esta puede ser una forma, no la única.

Mira este es el código completo:


PHP:
  <div class="col-sm-12 col-md-4">
        <div class="chart-wrapper">
          <div class="chart-title">
            TOP CLIENTE TWITTER
          </div>
          <div class="chart-stage">
<?php
        $sql = "SELECT source,COUNT(source) FROM geo_tweets t ";
        $where = "eliminar IS NULL AND ";
        $sql .= sqlSubset($where);
        $sql .= "GROUP BY source ORDER BY COUNT(source) DESC limit 10";
        $sqlresults = mysql_query($sql);   
   //  echo $sql;
                        echo "<div class=\"tabla\">";  



            echo "<table>";  
echo "<tr>";
echo "<td>Cliente</td>";  
echo "<td>Cantidad</td>";  

echo "</tr>";  
while ($row = mysql_fetch_assoc($sqlresults)){   
    echo "<tr>";
    echo "<td>{$row['source']}</td>";
    echo "<td>{$row['COUNT(source)']}</td>";

    echo "</tr>"; 
}  
echo "</table>";  
echo "</div>";

Trate de agregar tu codigo pero me da problemas :(:(
 
Mensajes
16
Puntuación de reacción
0
¿Cuales son los "resultados" que deseas mostrar cuando le des click a
PHP:
"<td>{$row['COUNT(source)']}</td>";
???

Con respecto al ejemplo que te envié, solo servirá si estás llamando la librería de jquery (en el head). Sino agrega esto dentro del <head>
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

- - - Actualización- - -

Aquí organicé un poco mejor el código:

Ubica esto dentro de <head>

HTML:
<!-- Dentro de head -->
<style>
.hide{
 display:none
}
.show{
 display: in-line
}
</style>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<!-- final de head -->
* (Si ya tienes jquery omitelo)

Esto por tu código
PHP:
<div class="col-sm-12 col-md-4"> 
        <div class="chart-wrapper"> 
          <div class="chart-title"> 
            TOP CLIENTE TWITTER 
          </div> 
          <div class="chart-stage"> 
<?php 
        $sql = "SELECT source,COUNT(source) FROM geo_tweets t "; 
        $where = "eliminar IS NULL AND "; 
        $sql .= sqlSubset($where); 
        $sql .= "GROUP BY source ORDER BY COUNT(source) DESC limit 10"; 
        $sqlresults = mysql_query($sql);    
   //  echo $sql; 
                        echo "<div class=\"tabla\">";   



            echo "<table>";   
echo "<tr>"; 
echo "<td>Cliente</td>";   
echo "<td>Cantidad</td>";   

echo "</tr>";   
while ($row = mysql_fetch_assoc($sqlresults)){    
    echo "<tr>"; 
    echo "<td>{$row['source']}</td>"; 
    // nuevo
    echo "<td><a href='#' class='ver-lista' data-lista='primera'>{$row['COUNT(source)']}</a></td>";  
    echo "</tr>";  
    // nuevo
    echo "<tr  id='primera' class='hide'>";
    echo "<td>< /* Registros o datos a mostrar cuando se haga click */ <td>";
    echo "</tr>";
}   
echo "</table>";   
echo "</div>";

Y esto luego de ejecutar tu código (incluso puede ser antes de terminar <body>
HTML:
<!-- al final si deseas -->
<script>
$('.ver-lista').on('click',function(){
  var target = $(this).data('lista');
  
  $('#'+target).toggleClass('show');
});
</script>
 
Mensajes
81
Puntuación de reacción
0
¿Cuales son los "resultados" que deseas mostrar cuando le des click a
PHP:
"<td>{$row['COUNT(source)']}</td>";
???

Con respecto al ejemplo que te envié, solo servirá si estás llamando la librería de jquery (en el head). Sino agrega esto dentro del <head>
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>


Me gustaria ver todos los resultados de:

PHP:
     echo "<td>{$row['source']}</td>";

Si muestra valor 10, ver los 10 resultados, se puede cierto?
 
Mensajes
16
Puntuación de reacción
0
Así como lo estas haciendo no.

Como dije primeramente hay muchas maneras de hacerlo, bien sea juntando los datos al momento de la consulta o hacerlos mediante una consulta nueva.

La primera solución que te menciono es la que he intentado explicarte. Salvo que faltaría hacer la otra consulta con los grupos de resultado de cada "grupo".
 
Mensajes
81
Puntuación de reacción
0
Así como lo estas haciendo no.

Como dije primeramente hay muchas maneras de hacerlo, bien sea juntando los datos al momento de la consulta o hacerlos mediante una consulta nueva.

La primera solución que te menciono es la que he intentado explicarte. Salvo que faltaría hacer la otra consulta con los grupos de resultado de cada "grupo".


Me funciono bien tu codigo, solo que al hacer click se va al top del la web y debo scrollear para volver al dato, y ahora deberia hacer otra consulta para ver dicho dato?

Adjunto pantallazo.
qCUgQPr.png
 
Mensajes
16
Puntuación de reacción
0
Buenisimo, bueno tendrías que editar el <td> del ejemplo que te envié. Así:
PHP:
echo "<td colspan='2'>< /* Registros o datos a mostrar cuando se haga click */ <td>";

En un momento te envío más detalles

Eliminale href='#' al tag <a>

PHP:
echo "<td><a class='ver-lista' data-lista='primera'>{$row['COUNT(source)']}</a></td>";

Como recomendación: tienes unas cuentas muy altas, por ejemplo: 531 registros. Si despliegas una lista abajo de ella de 531 rows no queda bien de manera visual. Podrías irte a una nueva sección al hacer click en ella y mostrar una tabla paginada.
 
Última edición:
Mensajes
81
Puntuación de reacción
0
Buenisimo, bueno tendrías que editar el <td> del ejemplo que te envié. Así:
PHP:
echo "<td colspan='2'>< /* Registros o datos a mostrar cuando se haga click */ <td>";

En un momento te envío más detalles

Eliminale href='#' al tag <a>

PHP:
echo "<td><a class='ver-lista' data-lista='primera'>{$row['COUNT(source)']}</a></td>";

Como recomendación: tienes unas cuentas muy altas, por ejemplo: 531 registros. Si despliegas una lista abajo de ella de 531 rows no queda bien de manera visual. Podrías irte a una nueva sección al hacer click en ella y mostrar una tabla paginada.

Le saque el # pero ahora al hacer click se despliega abajo, pero inmediatamente se recarga el sitio, mi idea es hacer click y que levante un popup o algo para visualizar los 531 registros, que tendría que hacer?
 
Mensajes
16
Puntuación de reacción
0
Bueno primero, reemplaza el script por este otro:
HTML:
<script>
$('.ver-lista').on('click',function(e){
  e.preventDefault();
  var target = $(this).data('lista');
  
  $('#'+target).toggleClass('show');
});
</script>

en cuanto a los registros, dame unos minutos y te aconsejo

Acá el ejemplo (Usando lo que ya tenemos)
PHP:
<div class="col-sm-12 col-md-4"> 
        <div class="chart-wrapper"> 
          <div class="chart-title"> 
            TOP CLIENTE TWITTER 
          </div> 
          <div class="chart-stage"> 
<?php 
        $sql = "SELECT source,COUNT(source) FROM geo_tweets t "; 
        $where = "eliminar IS NULL AND "; 
        $sql .= sqlSubset($where); 
        $sql .= "GROUP BY source ORDER BY COUNT(source) DESC limit 10"; 
        $sqlresults = mysql_query($sql);    
   //  echo $sql; 
echo "<div class=\"tabla\">";   



echo "<table>";   
echo "<tr>"; 
echo "<td>Cliente</td>";   
echo "<td>Cantidad</td>";   

echo "</tr>";   
while ($row = mysql_fetch_assoc($sqlresults)){    

	$sql = "SELECT * FROM tabla";
	$where = "source_id = {$row['source']}";
	$sql.= sqlSubset($where);
	$registros = mysql_query($sql);
    echo "<tr>"; 
    echo "<td>{$row['source']}</td>"; 
    // nuevo
    echo "<td><a href='#' class='ver-lista' data-lista='primera'>{$row['COUNT(source)']}</a></td>";  
    echo "</tr>";  
    // nuevo
    echo "<tr  id='primera' class='hide'>";
    echo "<td colspan='2'>";
    // nueva lista de registros
    echo "<ul>";
    while($r = mysql_fetch_assoc($registros)){
    	echo "<li>Texto a mostrar</li>"
    }
    echo "</ul>";
    echo "</td>";
    echo "</tr>";
}   
echo "</table>";   
echo "</div>";

tal vez no sería la solución más optima pero ayuda. Claro que debes reescribir el 2do query según tus tablas. Coméntame como te va con esto.
 
Última edición:
Mensajes
81
Puntuación de reacción
0
Bueno primero, reemplaza el script por este otro:
HTML:
<script>
$('.ver-lista').on('click',function(e){
  e.preventDefault();
  var target = $(this).data('lista');
  
  $('#'+target).toggleClass('show');
});
</script>

en cuanto a los registros, dame unos minutos y te aconsejo

Acá el ejemplo (Usando lo que ya tenemos)
PHP:
<div class="col-sm-12 col-md-4"> 
        <div class="chart-wrapper"> 
          <div class="chart-title"> 
            TOP CLIENTE TWITTER 
          </div> 
          <div class="chart-stage"> 
<?php 
        $sql = "SELECT source,COUNT(source) FROM geo_tweets t "; 
        $where = "eliminar IS NULL AND "; 
        $sql .= sqlSubset($where); 
        $sql .= "GROUP BY source ORDER BY COUNT(source) DESC limit 10"; 
        $sqlresults = mysql_query($sql);    
   //  echo $sql; 
echo "<div class=\"tabla\">";   



echo "<table>";   
echo "<tr>"; 
echo "<td>Cliente</td>";   
echo "<td>Cantidad</td>";   

echo "</tr>";   
while ($row = mysql_fetch_assoc($sqlresults)){    

	$sql = "SELECT * FROM tabla";
	$where = "source_id = {$row['source']}";
	$sql.= sqlSubset($where);
	$registros = mysql_query($sql);
    echo "<tr>"; 
    echo "<td>{$row['source']}</td>"; 
    // nuevo
    echo "<td><a href='#' class='ver-lista' data-lista='primera'>{$row['COUNT(source)']}</a></td>";  
    echo "</tr>";  
    // nuevo
    echo "<tr  id='primera' class='hide'>";
    echo "<td colspan='2'>";
    // nueva lista de registros
    echo "<ul>";
    while($r = mysql_fetch_assoc($registros)){
    	echo "<li>Texto a mostrar</li>"
    }
    echo "</ul>";
    echo "</td>";
    echo "</tr>";
}   
echo "</table>";   
echo "</div>";

tal vez no sería la solución más optima pero ayuda. Claro que debes reescribir el 2do query según tus tablas. Coméntame como te va con esto.

Muchas gracias!

Te cuento que pude implementar el codigo, pero me salen estas dudas:

1.- Cuando hago click en cualquier valor siempre se despliega el primer valor que tiene 531 campos.
2.- Hice la consulta SQL, funciona bien pero en la linea
PHP:
        echo "<li>Texto a mostrar</li>";
cuando pongo un campo de la tabla me sale en blanco
PHP:
        echo "<li>{$row['username']}</li>";

Alguna idea pq pasan estas cosas?

Gracias!
 
Última edición:
Mensajes
16
Puntuación de reacción
0
Dame unos minutos y reviso

- - - Actualización- - -

Fijate que estás usando la variable $row y esa tiene los registros del primer query, debes usar $r (o como la hayas llamado) del 2do quero (En el ejemplo que te pase sería $r.

asi:
PHP:
while($r = mysql_fetch_assoc($registros)){
        echo "<li>{$r['username']}</li>"
    }
 
Mensajes
81
Puntuación de reacción
0
Dame unos minutos y reviso

- - - Actualización- - -

Fijate que estás usando la variable $row y esa tiene los registros del primer query, debes usar $r (o como la hayas llamado) del 2do quero (En el ejemplo que te pase sería $r.

asi:
PHP:
while($r = mysql_fetch_assoc($registros)){
        echo "<li>{$r['username']}</li>"
    }

Toda la razon!! ahi funcionó, pero sabes pq no se despliega donde hago click? siempre se despliega el primer campo, el de 531.

Gracias!
 
Mensajes
16
Puntuación de reacción
0
Buen día, ya vi porque solo despliega la 1ra: Yo le puse a el <tr> oculto un ID ("primera") el cual hace llamada aquí:
PHP:
 // nuevo
    echo "<td><a href='#' class='ver-lista' data-lista='primera'>{$row['COUNT(source)']}</a></td>";  
    echo "</tr>";  
    // nuevo
    echo "<tr  id='primera' class='hide'>";

Se me ocurre poner esto:
PHP:
$i = 0;
while ($row = mysql_fetch_assoc($sqlresults)){    

	$sql = "SELECT * FROM tabla";
	$where = "source_id = {$row['source']}";
	$sql.= sqlSubset($where);
	$registros = mysql_query($sql);
    echo "<tr>"; 
    echo "<td>{$row['source']}</td>"; 
    // nuevo
    $lista = "list_".$i;
    echo "<td><a href='#' class='ver-lista' data-lista='{$lista}'>{$row['COUNT(source)']}</a></td>";  
    echo "</tr>";  
    // nuevo
    echo "<tr  id='{$lista}' class='hide'>";
    echo "<td colspan='2'>";
    // nueva lista de registros
    echo "<ul>";
    while($r = mysql_fetch_assoc($registros)){
    	echo "<li>Texto a mostrar</li>"
    }
    $i++;
    echo "</ul>";
    echo "</td>";
    echo "</tr>";
}

Agregue la inicialización de la variable
PHP:
$i = 0;
antes del
PHP:
while
y dentro hay una variable que se le asigna a cada tr y se incrementa luego de la recorrida de cada lista.

Prueba y me comentas.
 
Mensajes
81
Puntuación de reacción
0
Excelente!!! ahi funciona! :D:D:D Sos un amor!

Puedo hacer que la lista se abra en una especie de POPUP? por que me queda la web con un enorme scroll al abrir los 531 registros xD
 
Mensajes
16
Puntuación de reacción
0
Se puede pero es un poco mas trabajoso.

Prueba con esto para evitar tanto scroll:

HTML:
<!-- agrega esto al style que ya teniamos en <head> -->

.lista{
	max-height: 200px; /*Aquí ponlo a tu gusto*/
	overflow-y: scroll; /*sinon te funciona cambialo por solo overflow*/
}

Y agrega un div:

PHP:
    echo "<div class='lista'>"; //div nuevo
    echo "<ul>";
    while($r = mysql_fetch_assoc($registros)){
    	echo "<li>Texto a mostrar</li>"
    }
    $i++;
    echo "</ul>";
    echo "</div>"; //cierre div nuevo

Prueba con eso
 
Mensajes
81
Puntuación de reacción
0
Excelente un scroll! :D Muchas gracias te pasaste!

- - - Actualización- - -

Se puede pero es un poco mas trabajoso.

Prueba con esto para evitar tanto scroll:

HTML:
<!-- agrega esto al style que ya teniamos en <head> -->

.lista{
	max-height: 200px; /*Aquí ponlo a tu gusto*/
	overflow-y: scroll; /*sinon te funciona cambialo por solo overflow*/
}

Y agrega un div:

PHP:
    echo "<div class='lista'>"; //div nuevo
    echo "<ul>";
    while($r = mysql_fetch_assoc($registros)){
    	echo "<li>Texto a mostrar</li>"
    }
    $i++;
    echo "</ul>";
    echo "</div>"; //cierre div nuevo

Prueba con eso

Se ve bien, aunque igual me hace cariño la idea de un popup :D
 
Mensajes
16
Puntuación de reacción
0
Bueno, con eso que ya tenemos, la verdad no mucho. Principalmente apóyate en la documentación de Jquery . Sería cuestión de buscar como mostrar el <div> en la posición del cursos y que se muestre en el evento 'mouseover' de cada elemento <a> de la tabla.
 
Arriba