Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: RedZer en 4 Diciembre 2010, 19:53 pm



Título: Ayuda con conteo de registros en php y mysql
Publicado por: RedZer en 4 Diciembre 2010, 19:53 pm
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


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: seele en 4 Diciembre 2010, 20:01 pm
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 (http://www.php.net/manual/en/function.mysql-num-rows.php)

saludos


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: RedZer en 4 Diciembre 2010, 20:18 pm
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


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: Shell Root en 4 Diciembre 2010, 20:21 pm
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.


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: RedZer en 4 Diciembre 2010, 20:45 pm
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:


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: 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¿?


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: RedZer en 4 Diciembre 2010, 20:51 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


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: 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


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: RedZer en 4 Diciembre 2010, 21:04 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


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: seele en 4 Diciembre 2010, 21:23 pm
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


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: Shell Root en 4 Diciembre 2010, 23:04 pm
Lo que me dio entendí... Creo que tienes que usar la unión te tablas [INNER JOIN] + [COUNT]


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: RedZer en 4 Diciembre 2010, 23:24 pm
y como le podria hacer
 :huh:


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: Shell Root en 4 Diciembre 2010, 23:35 pm
Podría ser algo como esto,

Código
  1.     SELECT citas.folio AS 'Citas - Folio',
  2. citas.id_servicio AS 'Citas - ID Servicio',
  3. citas.fecha AS 'Citas - Fecha',
  4. servicio.id_servicio AS 'Servicio - ID Servicio',
  5. servicio.nombre_servicio AS 'Servicio - Nombre Servicio'
  6.       FROM cita
  7. INNER JOIN servicio
  8.         ON citas.id_servicio = servicio.id_servicio
  9.      WHERE (id_servicio = 1)


Título: Re: Ayuda con conteo de registros en php y mysql
Publicado por: RedZer en 5 Diciembre 2010, 20:28 pm
muchas gracias resolvi el problema que tenia quedo de la siguiente forma
Código:
$reporte=mysql_query("SELECT diags_clave, count(diags_clave) as n_clientes FROM reporte where asistio='1' GROUP BY diags_clave ");


practicamente era agruparala con la instruccion GROUP BY   ;)