Ayuda con conteo de registros en php y mysql

Iniciado por RedZer, 4 Diciembre 2010, 19:53 PM

0 Miembros y 1 Visitante están viendo este tema.

RedZer

hola camaradas necesesito su ayuda , resulta que hay un codigo que me trae loco bueno el sistema que estoy ralizando es para un doctor el cual el introduce el numero de ficha del paciente cuando vaya aregistrar la cita ok y ahi en al apartado de citas el selecciona la fecha en el cual reservara la cita ok como tambien sus datos personales etc , y tambien selecciona el tipo de servicio al que ira ok los cuales son como 300 , cuando me refiero a servicio es por ejemplo si el paciente ira a traumatologia,genetica etc ok hasta ahi no hay ningun problema el problema me surge cuando yo ago los reportes por ejmplo por mes en el mes de diciembre tengo que sacar cuantos pacientes asisitieron a consulta y cuantos fueron de traumatologia,cuantos de genetica etc, osea quedaria algo asi
traumatologia=4 pacientes
genetica=5 pacientes

si me explico? mi problema es este el contar cuantos vinieron en un servicio yo lo estaba asiendo de la siguiente forma

conectar
();
$reporte=mysql_query("select * FROM reporte   where fecha='$fecha' and asistio='1'");
desconectar();
//aqui ago una consulta ami tabla reporte en donde el campo fecha se igual //a la variavle fecha ok
$gene=1;//variable que ocupo para incrementar si existe genetica
if (mysql_num_rows($reporte)>0)
{
while (
$row=mysql_fetch_array($reporte))
{
      
//si hay resultados los muestro entre eyos el servicio despues validaba //de la siguiente forma para contar por ejmplo cuantos habia de genetica

if($row[4]=='genetica'){//genetica
$ge=$gene;
$gene++;
}
//ciero el if de la genetica
}
}



//y ya despues solo imprimia  asi
<td><?php echo $ge?></td>


bueno entonces mi pregunta es como puedo hacer un ciclo para ir mostrando el nombre del servicio y cuantos pacientes hay en ese servicio  y  no estar validando servicioo por servicio imaginense validar los  :rolleyes:300
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

seele

para que te sea mas facil mysql tiene la funcion count() que te devuelve la cantidad de rows que cumplen con esa condicion

o sino en php puedes usar mysql_num_rows
http://www.php.net/manual/en/function.mysql-num-rows.php

saludos

RedZer

#2
pues si pero ahi me contaria el servicio en general con count y yo quiero especificar sabes que hay 10 de genetica ok y 10 de traumatologia, pero yo tengo otra tabla especial para servicio y ahi es donde tengo aproximadamente 300 servicios
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

Shell Root

A ver, Cómo dijo jack el destripador: vamos por partes...

Explicadnos, lo más exactamente posible -ojala con estructura de tablas y resultados originales - lo que quieres hacer.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

RedZer

#4
ok mira lo que deceo hacer es los siguiente:
tengo una tabla llamada citas la cual almacena todas las citas que el doctor registre tiene los siguientes campos(estructura):
folio
id_servicio
fecha
ok hay demas campos como son nombre,apellidos,rfc ect etc pero solo puse los que por el momento me interesa  yo ago reportes por mes en el cual por ejemplo si ago una consulta del mes siguiente:03/12/2010 como resultado me arojara todos los registros que se ayan dado de alta en el mes de de diciembre los campos amostrar los jalo de la tabla cita ok  ahora como pueden ver tengo un campo en la tabla citas que es una llave primaria el cual es id_servicio ok cada que el doctor llene el formulario de citas el doctor  selecciona el servicio al que ira el cliente , ya sea servicio de genetica, traumatologia etc los servicioos los muestro atra ves de un list/menu del cual los jalo de la tabla servicio  y ya en la tabla citas solo se agregara el id del servicio que se aya seleccionado, dicha tabla servicio tiene la siguiente estructura
id_servicio
nombre_servicio
solo tiene esos dos campos la tabla servicio pero son como 300 servicios que estan dados de alta en esa tabla servicio ok ahora cuando el doctor se va a la opcion de reporte (por mes) le aparecen todos los pacientes que el doctor aya registrado  en el mes que el aya decidido consultar ok el problema surge por que el quiere que ahi mismo en el reporte mensual  muestre cuantas personas dio de alta con el mismo servicio  ejemplo
genetica=2 personas
traumatologia=3 personas
si me explico?
yo lo que hacia era ir validando servicio por servicio pero imaginence son como 300 servicios e ir validando uno por uno  :rolleyes:
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

seele

pero con el count puedes usar la clausula where para contar solo los registros que necesitas

o estoy entendiendo mal la idea de lo que quieres hacer¿?

RedZer

Cita de: seele en  4 Diciembre 2010, 20:48 PM
pero con el count puedes usar la clausula where para contar solo los registros que necesitas

o estoy entendiendo mal la idea de lo que quieres hacer¿?
creo que me estas entendiendo mal amigo por que creo que seria lo mismo si condiciono campo por campo quedaria igual que el if ponle tu que quede asi
$reporte=mysql_query("select count(id_servicio) FROM reporte   where servicio='genetica' or servicio='traumatologia' etc etc etc ");
aqui tendria que ir validando uno por uno
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

seele

lo mas automatico que se me ocurre es poner todos los servicios en un array e ir recorriendo y haciendo cada consulta con un foreach.
sino deberias ya de agregar un campo a tu tabla o una tabla nueva con la cantidad de pacientes por servicio e ir sumandole uno cada vez que registras un paciente, son las opciones que se me ocurren

RedZer

Cita de: seele en  4 Diciembre 2010, 20:56 PM
lo mas automatico que se me ocurre es poner todos los servicios en un array e ir recorriendo y haciendo cada consulta con un foreach.
sino deberias ya de agregar un campo a tu tabla o una tabla nueva con la cantidad de pacientes por servicio e ir sumandole uno cada vez que registras un paciente, son las opciones que se me ocurren
la primera opcion como seria??? :silbar:
la segunda opcion de ponerle un campo a mi tabla e irle sumando con eso solo obtendria un total general??? de pacientes registrados y yo lo que quiero es un total pero por servicio
Nacido y criado entre gente que enseño a pensar antes de creer a ciegas, Todo me causa curiosidad en el mundo

seele

puedes buscar de tu tabla los servicios y guardar cada uno en un array, luego recorres ese array con un foreach y vas haciendo las consultas con una query a la base de datos, es basicamente lo que planteaste antes pero de una forma automatica, el unico problema es la cantidad de consultas que debes hacer a la DB por un dato tan insignificante

la segunda opcion es agregar una tabla donde tengas cada servicio y un numerio que represente el total de pacientes, puedes dividirlo por mes o como mejor se adapte a lo que necesites eso.
la idea en este caso es tener un row por servicio y cada vez que anotes a un paciente, le sumes uno al valor del servicio que vas utiizando
no se si quedo del todo claro, cualquier duda aqui estamos

saludos