MySQL - Poner el numero de registros encontrados en cada actividad

 
Vista:
sin imagen de perfil

Poner el numero de registros encontrados en cada actividad

Publicado por Unexes (16 intervenciones) el 25/01/2014 12:39:08
Hola a tod@s.

Vereis tengo un pequeño problema que no se resolver, en mi página tengo un menu de actividades que se forma desde una tabla mysql cuando hago click sobre una determinada actividad me carga una pagina que contiene los clientes de dicha actividad cada actividad tiene una página distinta que lee desde una tabla solo los clientes que son de dicha actividad con un Where, tal como esta funciona bien, pero lo que ahora quisiera es que en el menu al lado de cada actividad pusiera el numero total de clientes que existe en cada actividad algo parecido a esto:

********************************
Centros de Estética (21)
Talleres de mecanicos (12)
Veterinarios (6)
********************************

El menu lo formo de esta manera:
1
2
3
4
5
6
7
8
$tablaactividad = mysql_query("SELECT * FROM actividades WHERE Activacion = '1' ORDER BY NomActividad ASC");
	while ($registroactividad = mysql_fetch_array($tablaactividad)) {?>
              <tr>
                     <td><a href="<?php echo $registroactividad['Url']; ?>">&nbsp;<?php echo $registroactividad['NomActividad']; ?></a></td>
              </tr>
              <?php
	}
	mysql_free_result($tablaactividad);

Y cada pagina que me nuestra los clientes lo hace leyendo la base de datos de clientes de esta manera
1
2
3
4
5
6
7
$tablaactividad = mysql_query("SELECT * FROM clientes WHERE  Activacion = '1' And clientes.Actividades = " .$tipoEmpresa. " OR Activacion = '1' And clientes.Actividades2 = " .$tipoEmpresa. " ORDER BY NombreComer ASC");
	while ($registroactividad = mysql_fetch_array($tablaactividad)) {?>
    <tr>
    <td class="Menu">&nbsp;<a href="<?php echo $registroactividad['Url']; ?>">&nbsp;<?php echo $registroactividad['NombreComer']; ?></a></td>
    </tr>
<?php
	} 	mysql_free_result($tablaactividad);

Espero me podais ayudar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Poner el numero de registros encontrados en cada actividad

Publicado por xve (1151 intervenciones) el 25/01/2014 19:35:49
Hola Unexes, hay una cosa que no me queda clara, y es como se vinculan las dos tablas, la tabla clientes con la tabla actividades?
Es decir, como se a que actividad corresponde cada cliente?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Poner el numero de registros encontrados en cada actividad

Publicado por Unexes (16 intervenciones) el 26/01/2014 10:34:54
xve. Gracias por responderme.

En primer lugar creo que aunque funciona tengo mal planteado la forma de presentar los resultados en mi página y creo que voy a tener que replantearme el hacerlo de otra forma, dicho esto te respondo a tu pregunta.

En la tabla "actividades" tengo un campo que se llama NomActividad, con dicho campo creo un menu lateral con todas las actividades activadas.
En la tabla clientes tengo 2 campos "Actividades" y "Actividades2" ya que cada cliente puede tener hasta 2 actividades por las que se le pueda buscar.

Lo que hago y creo que es ahi donde esta mal planteada mi página, (a pesar de que funciona y cumple su cometido) es que al púlsar sobre una determinada actividad en el menu de actividades me habre una pagina especifica de esa actividad en dicha página en la variable "$tipoEmpresa" le pongo directamente el valor correspondiente a dicha actividad y en la consulta de dicha página busco los clientes que coinciden con el valor dado a "$TipoEmpresa" en el campo "Actividad" y "Actividad2", por lo tanto en estos momentos tengo una página distinta por cada actividad o lo que es lo mismo tantas páginas diferentes como actividades.

Ya que me estoy replanteando el hacerlo casi todo de nuevo ¿Como deberia hacerlo? ya que nunca he puesto junto al menu la cantidad de registros que me encuentra en cada una de las opciones (Actividades en mi caso).

Gracias por tu ayuda y por tu paciencia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Poner el numero de registros encontrados en cada actividad

Publicado por xve (1151 intervenciones) el 26/01/2014 21:24:37
Hola Unexes, en esto que me comentas de las actividades, yo lo veo correcto, creo que lo haces correctamente.

Sobre la primera pregunta de como mostrar los totales, yo lo haría con una consulta sql, algo así:
1
2
3
4
SELECT NomActividad,count(*) as Total
FROM actividades a LEFT JOIN clientes c ON a.Actividades=c.Actividades
LEFT JOIN clientes c ON a.Actividades=c.Actividades2
GROUP BY a.Actividades

Si no me he equivocado, esto te tiene que devolver el listado de actividades con sus cantidades...

Si lo puedes probar y comentarnos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Poner el numero de registros encontrados en cada actividad

Publicado por Unexes (16 intervenciones) el 29/01/2014 09:01:39
Perdonar la tardanza en contestar y en probar el código, pero asuntos de salud me lo han impedido.

xve, he hecho lo siguiente he sustituido el código:
1
2
3
4
5
6
7
8
$tablaactividad = mysql_query("SELECT * FROM actividades WHERE Activacion = '1' ORDER BY NomActividad ASC");
	while ($registroactividad = mysql_fetch_array($tablaactividad)) {?>
              <tr>
                     <td><a href="<?php echo $registroactividad['Url']; ?>">&nbsp;<?php echo $registroactividad['NomActividad']; ?></a></td>
              </tr>
              <?php
	}
	mysql_free_result($tablaactividad);
por este otro:
1
2
3
4
5
6
7
8
9
10
11
$tablaactividad = mysql_query("SELECT NomActividad,count(*) as Total
FROM actividades a LEFT JOIN clientes c ON a.Actividades=c.Actividades
LEFT JOIN clientes c ON a.Actividades=c.Actividades2
GROUP BY a.Actividades");
	while ($registroactividad = mysql_fetch_array($tablaactividad)) {?> <!-- Esta linea es la 108 -->
              <tr>
                     <td><a href="<?php echo $registroactividad['Url']; ?>">&nbsp;<?php echo $registroactividad['NomActividad']; ?></a></td>
              </tr>
              <?php
	}
	mysql_free_result($tablaactividad); //Esta linea es la 115
Y me da los siguientes errores:
( ! ) Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\Tu Zona Valencia-2014-01-25\index.php on line 108
Y
Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in C:\wamp\www\Tu Zona Valencia-2014-01-25\index.php on line 115

No se porque me da este error.

Un saludo y gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Poner el numero de registros encontrados en cada actividad

Publicado por xve (1151 intervenciones) el 29/01/2014 10:05:14
Hola Unexes, puede ser que haya algun nombre de campo que este mal... no se muy bien si lo puse correctamente...

Si ejecutas esta instrucción directamente en la base de datos que error te da?
1
SELECT NomActividad,count(*) as Total FROM actividades a LEFT JOIN clientes c ON a.Actividades=c.Actividades LEFT JOIN clientes c ON a.Actividades=c.Actividades2 GROUP BY a.Actividades

Si nos puedes comentar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Poner el numero de registros encontrados en cada actividad

Publicado por Unexes (16 intervenciones) el 30/01/2014 09:06:08
Hola xve.

El error que me da es:

#1066 - Not unique table/alias: 'c'

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Poner el numero de registros encontrados en cada actividad

Publicado por xve (1151 intervenciones) el 30/01/2014 15:19:16
Es verdad, se repite dos veces el alias c... no me di cuenta...
....LEFT JOIN clientes c ON a.Actividades=c.Actividades LEFT JOIN clientes c....

prueba a cambiar una de las c's... algo así:
1
SELECT NomActividad,count(*) as Total FROM actividades a LEFT JOIN clientes c1 ON a.Actividades=c1.Actividades LEFT JOIN clientes c2 ON a.Actividades=c2.Actividades2 GROUP BY a.Actividades

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Poner el numero de registros encontrados en cada actividad

Publicado por Unexes (16 intervenciones) el 30/01/2014 22:43:19
Hola de nuevo xve.

Gracias por tu ayuda esta casi solucionado me daba un error pero sustitui el nombre de un campo que estaba mal puesto en la consulta y consegui hacerlo funcionar, pero aun hay un pequeño problema que me da un error y he comprobado que si elimino una parte del codigo que pongo a continuacion funciona bien pero por supuesto no me hace el enlace por lo tanto no puedo eliminar esa parte pero tendre que modificarla para evitar el error,
El codigo ha quedado así:

1
2
3
4
5
6
7
8
9
10
11
<?php
	$tablaactividad = mysql_query("SELECT NomActividad,count(*) as Total FROM actividades a LEFT JOIN clientes c1 ON a.Actividad=c1.Actividades LEFT JOIN clientes c2 ON a.Actividad=c2.Actividades2 Where a.Activacion=1 GROUP BY a.Actividad");
	while ($registroactividad = mysql_fetch_array($tablaactividad)) {?> <!-- Esta linea es la 108 -->
 
              <tr>
                  <td><a href="<?php echo $registroactividad['Url']; ?>"><?php echo $registroactividad['Total']; ?>&nbsp;&nbsp;<?php echo $registroactividad['NomActividad']; ?></a></td>
              </tr>
              <?php
	}
	mysql_free_result($tablaactividad);
?>
Tal cual esta me da el siguiente error por cada actividad que tengo activada:

1
( ! ) Notice: Undefined index: Url in C:\wamp\www\Tu Zona Valencia-2014-01-25\indexpruebacontarregistros.php on line 108 Call Stack #TimeMemoryFunctionLocation 10.0015169056{main}( )..\indexpruebacontarregistros.php:0 ">1  Carpinterías PVC
Para comprobar si el resto del codigo funciona bien he eliminado temporalmente este trozo del codigo:

1
<a href="<?php echo $registroactividad['Url']; ?>">
Eliminando este trozo desaparece el error, pero lo necesito para hacer el enlace como deberia hacerlo.

Un saludo y un millon de gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Poner el numero de registros encontrados en cada actividad

Publicado por xve (1151 intervenciones) el 31/01/2014 08:14:06
El problema lo tienes porque en la consulta SQL no solicitas esos valores..., unicamente solicitas: NomActividad y Total...
1
SELECT NomActividad,count(*) as Total FROM acti...

solicita a la consulta el resto de valores que quieras utilizar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

SOLUCIONADO: Poner el numero de registros encontrados en cada actividad

Publicado por Unexes (16 intervenciones) el 31/01/2014 09:16:48
Gracias xve.

Ya esta solucionado a quedado así:

1
2
3
4
5
6
7
8
9
10
11
<?php
	$tablaactividad = mysql_query("SELECT a.Url, NomActividad,count(*) as Total FROM actividades a LEFT JOIN clientes c1 ON a.Actividad=c1.Actividades LEFT JOIN clientes c2 ON a.Actividad=c2.Actividades2 Where a.Activacion = '1' GROUP BY a.Actividad");
	while ($registroactividad = mysql_fetch_array($tablaactividad)) {?> <!-- Esta linea es la 108 -->
 
              <tr>
                  <td><a href="<?php echo $registroactividad['Url']; ?>"><?php echo $registroactividad['Total']; ?>&nbsp;&nbsp;<?php echo $registroactividad['NomActividad']; ?></a></td>
              </tr>
              <?php
	}
	mysql_free_result($tablaactividad);
?>

Gracias por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

SOLUCIONADO: Poner el numero de registros encontrados en cada actividad

Publicado por xve (1151 intervenciones) el 31/01/2014 09:21:42
Gracias por comentarlo Unexes!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar