Foros del Web » Programando para Internet » PHP »

Contar y Mostrar Registros iguales

Estas en el tema de Contar y Mostrar Registros iguales en el foro de PHP en Foros del Web. Hola , No se si este post va aqui o en MySQL, pero bueno... A ver si me explico bien, trabajando en conjunto con MySQL ...
  #1 (permalink)  
Antiguo 06/08/2010, 20:14
 
Fecha de Ingreso: julio-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Busqueda Contar y Mostrar Registros iguales

Hola , No se si este post va aqui o en MySQL, pero bueno... A ver si me explico bien, trabajando en conjunto con MySQL quisiera mostrar en una pagina el total de registros que tengan (la misma ciudad, por ejemplo) y que active un boton cuando la cantidad llegue a 10, muestro unas imagenes para ver si me entienden:


en la tabla de arriba hay 2 registros q tienen la misma ciudad, entonces quiero que al hacer click en "X" boton, se abra una pagina y se muestre algo parecido a la siguiente imagen...

Pero el botón "Activar" solo se habilita cuando la cantidad de registros llegue a 10, de tal manera que se puedan seleccionar estos 10 registros y al hacer click en "Activar" con un UPDATE se le pueda cambiar el status... Espero hayan entendido lo que necesito y puedan ayudarme. GRACIAS DE ANTEMANO!!
  #2 (permalink)  
Antiguo 06/08/2010, 20:25
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Contar y Mostrar Registros iguales

haz un count segun la ciudad ej
Código PHP:
Ver original
  1. mysql_query("select count(*) from tabla where ciudad='caracas'") or die (mysql_error());
ahi te devuelve la cantidad de registros que tienen esa ciudad suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 06/08/2010, 23:57
 
Fecha de Ingreso: julio-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

Cita:
Iniciado por carlos_belisario Ver Mensaje
haz un count segun la ciudad ej
Código PHP:
Ver original
  1. mysql_query("select count(*) from tabla where ciudad='caracas'") or die (mysql_error());
ahi te devuelve la cantidad de registros que tienen esa ciudad suerte
Gracias, pero el caso que expuse arriba con las imagenes fue un ejemplo para que me entiendieran y si, funcionó con el COUNT... Ahora bien, como expliqué, cuando la cantidad de registros llegue a 10 quiero que el botón se habilite, cosa que estoy seguro que es facil, lo complicado para mi es hacer que esos 10 registros que se cuentan por cada grupo ("ciudad", siguiendo el caso que puse de ejemplo)le pueda aplicar un UPDATE para modificarle un dato al hacer click al boton... No se si dentro de la consulta sea buena aplicar tambien un LIMIT para seleccionar los primeros 10 registros que se vayan agregando a la tabla para seguir el orden... Espero me haya explicado bien
  #4 (permalink)  
Antiguo 07/08/2010, 00:03
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Contar y Mostrar Registros iguales

siguiendo el ejemplo puedes hacer un update asi
Código PHP:
Ver original
  1. mysql_query("update tabla set estatus='activo' where ciudad='caracas') or die (mysql_error());
y bueno segun veo cuando actives el contador debe irse a cero entonces la consulta que te dig antes debe ser asi
Código PHP:
Ver original
  1. mysql_query("select count(*) from tabla where ciudad='caracas' and estatus<>'activo'") or die (mysql_error());
esto para que no te cuente los que ya activaste
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 07/08/2010, 11:42
 
Fecha de Ingreso: julio-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

Cita:
Iniciado por carlos_belisario Ver Mensaje
siguiendo el ejemplo puedes hacer un update asi
Código PHP:
Ver original
  1. mysql_query("update tabla set estatus='activo' where ciudad='caracas') or die (mysql_error());
y bueno segun veo cuando actives el contador debe irse a cero entonces la consulta que te dig antes debe ser asi
Código PHP:
Ver original
  1. mysql_query("select count(*) from tabla where ciudad='caracas' and estatus<>'activo'") or die (mysql_error());
esto para que no te cuente los que ya activaste
Ok, se q ya me estoy poniendo fastidioso, pero parece que no me he explicado bien, esta bien todo lo que has puesto, pero se me olvidó decir que lo de las ciudades es algo que necesito se haga automaticamente, a medida que se registran se vayan sumando, cosa q a está resuelta. Como puse en la segunda imagen cada fila de la tabla contiene una "ciudad cualquiera" y su boton de activar, esto se repite por cada ciudad diferente. Lo que no he logrado hacer es q cuando se le de click al boton "activar" me actualize solo la ciudad que aparezca en esa fila, y asi para toda la tabla... Espero puedas ayudarme
  #6 (permalink)  
Antiguo 07/08/2010, 12:28
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Contar y Mostrar Registros iguales

bueno me imagino que para crear el boton lo creas a partir de una consulta con un evento onclick="window.location='pagina.php'"?? para ir a la pagina donde te va a actualizar??? si es asi agregale como parametro el nombre de la ciudad y has la consulta de la manera que te dig algo asi
Código PHP:
Ver original
  1. <input type="button" name="validar" onclick="window.location='pagina.php?ciudad=<?php echo $ciudad'"/>
en la otra pagina
Código PHP:
Ver original
  1. #recibes parametro
  2. $ciudad=$_GET['ciudad'];
  3.  mysql_query("update tabla set estatus='activo' where ciudad='$cuidad') or die (mysql_error());
eso lo hago suponiendo que tienes el codigo asi seria bueno que mostraras algo de como tienes el codigo xq adivino no puedo ser pero lo que te estoy dando es una idea pero para mejorarla debo o debemos ver algo de codigo para poder indicarte donde como hacerlo suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 07/08/2010, 13:22
 
Fecha de Ingreso: julio-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

Cita:
Iniciado por carlos_belisario Ver Mensaje
bueno me imagino que para crear el boton lo creas a partir de una consulta con un evento onclick="window.location='pagina.php'"?? para ir a la pagina donde te va a actualizar??? si es asi agregale como parametro el nombre de la ciudad y has la consulta de la manera que te dig algo asi
Código PHP:
Ver original
  1. <input type="button" name="validar" onclick="window.location='pagina.php?ciudad=<?php echo $ciudad'"/>
en la otra pagina
Código PHP:
Ver original
  1. #recibes parametro
  2. $ciudad=$_GET['ciudad'];
  3.  mysql_query("update tabla set estatus='activo' where ciudad='$cuidad') or die (mysql_error());
eso lo hago suponiendo que tienes el codigo asi seria bueno que mostraras algo de como tienes el codigo xq adivino no puedo ser pero lo que te estoy dando es una idea pero para mejorarla debo o debemos ver algo de codigo para poder indicarte donde como hacerlo suerte

Aqui te pongo una imagen detallando lo que necesito hacer:



La consulta UPDATE para el boton Procesar ya la tengo practicamente lista, lo que me falta seria condicionar lo de como tomar esa ciudad de esa fila, veo que tienes experiencia y ojalá se te ocurra algo... GRACIAS!!
  #8 (permalink)  
Antiguo 07/08/2010, 14:22
 
Fecha de Ingreso: julio-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

con esta consulta pude cambiar el status de la solicitud:

Código PHP:
Ver original
  1. $obt_comunidad = $row_solicitudes_fecha['sec'];    
  2. $procesar=$_POST['but_procesar'];
  3. switch($procesar){
  4.     case 'Procesar':
  5.         mysql_select_db($database_solicitudes, $solicitudes);            
  6.         $query_procesar_sol = "UPDATE solicitar SET fecha_sol = DATE_ADD(CURDATE(), INTERVAL 3 DAY), procesada = 2 WHERE sec = '$obt_comunidad'";
  7.         $solicitudes_procesar = mysql_query($query_procesar_sol, $solicitudes) or die(mysql_error());
  8.     break;
  9.     }

Pero me modifica los registros por la ciudad que tenga la menor cantidad de solicitudes, ejemplo, le doy click al boton procesar de la segunda fila que tiene 3 en cantidad y me modifica el que esta de primero q tiene sólo 2, por eso necesito que lo haga por la ciudad que se encuentra en la fila del boton...
  #9 (permalink)  
Antiguo 07/08/2010, 22:03
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Contar y Mostrar Registros iguales

bueno seria bueno que me mostraras el codigo que tienes del boton de procesar para ver que hace y q mandas a actualizar en ese boton es que tenemos que poner a diga el nombre de la ciudad a procesar para luego hacer el update segun la ciudad pasada por ese boton
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #10 (permalink)  
Antiguo 07/08/2010, 22:39
 
Fecha de Ingreso: julio-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

Cita:
Iniciado por carlos_belisario Ver Mensaje
bueno seria bueno que me mostraras el codigo que tienes del boton de procesar para ver que hace y q mandas a actualizar en ese boton es que tenemos que poner a diga el nombre de la ciudad a procesar para luego hacer el update segun la ciudad pasada por ese boton
Ese es el gran detalle... El switch es el codigo q uso para que el boton realice su trabajo de actualizar, que funciona perfecto, pero lo que no puedo hacer es que procese los registros de la ciudad de su fila, sino que me procesa las solicitudes de cualquier ciudad por grupos de forma ordenada, no a la fila que yo le doy click... De todas formas voy a crear otro post a ver si alguien mas me ayuda y te dejo saber q se les ocurre. Sin embargo, espero tu respuesta!!
  #11 (permalink)  
Antiguo 07/08/2010, 22:43
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Contar y Mostrar Registros iguales

bueno ahi si q me es algo confuso xq segun lo que veo yo y creo q estas pidiendo kieres actualizar es directamente el de la fila que le haces click no cualkiera xq no tienes control, una pregunta los parametros q optienes en el codigo q pusist de dfonde los optienes???
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #12 (permalink)  
Antiguo 07/08/2010, 23:37
 
Fecha de Ingreso: julio-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

Cita:
Iniciado por carlos_belisario Ver Mensaje
bueno ahi si q me es algo confuso xq segun lo que veo yo y creo q estas pidiendo kieres actualizar es directamente el de la fila que le haces click no cualkiera xq no tienes control, una pregunta los parametros q optienes en el codigo q pusist de dfonde los optienes???
ahora si me entendiste!!! los parametros los saca de la consulta que hago para mostrar la cantidad de registros por cada ciudad, o en este caso, la direccion agrupada...

Código MySQL:
Ver original
  1. "SELECT fecha_sol, com, sec AS direccion, COUNT(*) AS cantidad FROM solicitar GROUP BY fecha_sol, com, sec HAVING fecha_sol = CURDATE()";
  #13 (permalink)  
Antiguo 08/08/2010, 00:50
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Contar y Mostrar Registros iguales

hola
bueno, como carlos_belisario te comenta, sería más fácil si muestras el código que estas usando, a vuelo de pajaro se me ocurre que si estas dibujando la tabla con un while por ej, uses la misma variable que muestra el nombre de la ciudad para el botón que haces referencia, esto si es el mismo valor ('Cucuta' por ej), pero si estan con ids (ej 'Cucuta' es la ciudad 1 de la tabla ciudades por ej) entonces se tendría que agregar esto en la consulta y hacer uso de ese id si eso es lo que se necesita

y en cuanto al update, si se hara siempre que llegue a 10, en cuyo caso imagino que validaras que no sea ni menor ni mayor, puede haber un pero y es que tengas 11 registros para actualizar, pero no se podría hacer pues el count es de 11 y no de 10, pero si se habilita que sea mayor o igual a 10, el actualizara tantos registros como las condiciones del update le permitan, y si pones el limit, puede que algunos registros queden sin actualizar, así que tendrías que hacer uso de otras funciones como min o max para traer el menor primero y luego a partir de ese si actualizar los 10 con el limit que comentabas, es mas vuelta pero se puede hacer, yo simplemente haria el update cuando es igual o mayor a 10 a todos los registros a menos que me pidan explicitamente esas condiciones y no haya flexibilidad para el asunto

bueno, nos comentas entonces
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #14 (permalink)  
Antiguo 08/08/2010, 04:01
 
Fecha de Ingreso: junio-2009
Mensajes: 2
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

lo que pienso que este bro necesita es desplegar el listado con la condicion de que la que tenga 10 tenga el boton de procesar, y al dar click a dicho boton actualice la ciudad mencionada, eso es facil viejo solo debes hacer lo siguiente:

despliega la linea de la ciudad con una consulta a la base de datos con un if y un else basta para mostrar con o sin boton de actualizar , entonces luego al boton lo llamas con un echo le dices que al hacer click vaya al php que procesara la solicitud dandole un valor get osea
supongamos que es la imagen del boton
echo "<a href=\"procesa.php?id=".$row['ciudad']." \"><img src=\"boton.jpg\" ></a>

esto ira a procesa.php?id=venecia entonces el programa con tu codigo actualiza asi:

$ciudad_a_procesar = $_GET['id'];

$obt_comunidad = $row_solicitudes_fecha['sec'];
$procesar=$_POST['but_procesar'];
switch($procesar){ case 'Procesar':
mysql_select_db($database_solicitudes, $solicitudes);
$query_procesar_sol = "UPDATE solicitar SET fecha_sol = DATE_ADD(CURDATE(), INTERVAL 3 DAY), procesada = 2 WHERE sec = '$obt_comunidad' and ciudad='$ciudad_a_procesar' ";
$solicitudes_procesar = mysql_query($query_procesar_sol, $solicitudes) or die(mysql_error());
if(mysql_affected_rows($solicitudes)){
header("location: paginainicial.php");
break;
}
me supongo que el mysql_connect es $solicitudes
y bueno
ya se actualiza, para no cambiar de pagina por usar el get se usa el location y bam! automaticamente se actualiza sin cambiar de pagina y solo la ciudad que elegiste, las demas quedan intactas.

creo que es lo que preguntas espero te haya servido.
  #15 (permalink)  
Antiguo 08/08/2010, 05:22
 
Fecha de Ingreso: agosto-2010
Mensajes: 28
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

Haber si entendi...tu quieres que cuando la solicitud llegue a 10 aparesca una imagen "Procesar". Si es asi has simplemente esto.

Código PHP:
Ver original
  1. $query=mysql_query("select count(*) from tabla where ciudad='caracas'",$sql);
  2.      array=mysql_fetch_object($query);
  3.        
  4. /*Y aqui pones la condicion para que aparesca la imagen a mostrar cuando la solicitud lllegue a 10*/
  5.  
  6. if($array->solicitudes>=10){
  7. -mostrar-imagen-o-boton"procesar"
  8. }

Espero que esta haya sido tu problema saludos
  #16 (permalink)  
Antiguo 08/08/2010, 07:26
 
Fecha de Ingreso: julio-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

Cita:
Iniciado por mortiprogramador Ver Mensaje
hola
bueno, como carlos_belisario te comenta, sería más fácil si muestras el código que estas usando, a vuelo de pajaro se me ocurre que si estas dibujando la tabla con un while por ej, uses la misma variable que muestra el nombre de la ciudad para el botón que haces referencia, esto si es el mismo valor ('Cucuta' por ej), pero si estan con ids (ej 'Cucuta' es la ciudad 1 de la tabla ciudades por ej) entonces se tendría que agregar esto en la consulta y hacer uso de ese id si eso es lo que se necesita

y en cuanto al update, si se hara siempre que llegue a 10, en cuyo caso imagino que validaras que no sea ni menor ni mayor, puede haber un pero y es que tengas 11 registros para actualizar, pero no se podría hacer pues el count es de 11 y no de 10, pero si se habilita que sea mayor o igual a 10, el actualizara tantos registros como las condiciones del update le permitan, y si pones el limit, puede que algunos registros queden sin actualizar, así que tendrías que hacer uso de otras funciones como min o max para traer el menor primero y luego a partir de ese si actualizar los 10 con el limit que comentabas, es mas vuelta pero se puede hacer, yo simplemente haria el update cuando es igual o mayor a 10 a todos los registros a menos que me pidan explicitamente esas condiciones y no haya flexibilidad para el asunto

bueno, nos comentas entonces
saludos
Hola Mortiprogramador, estuve leyendo y creo q olvidé mencionar algo importante, lo de las tablas con las ciudades es para procesar solicitudes de un servicio a usuarios por grupos de personas con la misma direccion, puse el caso de las ciudades porq es mas facil de ver. Lo de las 10 personas es porque necesito que cuando de una misma "comunidad" un minimo de 8 y maximo 10 personas solicitan el servicio, procesar su solicitud, por lo tanto, me debe mostrar en la tabla grupos de maximo 10 personas, sin importar que sea de la misma comunidad, por ejemplo, si tengo 12 solicitudes al mismo sitio tenga la fila con el maximo de 10 y me cree una nueva fila con las 2 restantes y sumando sucesivamente las personas que vayan solicitando el servicio a esa direccion.

Código PHP:
Ver original
  1. mysql_select_db($database_solicitudes, $solicitudes);
  2. $query_solicitudes_fecha = "SELECT fecha_sol, com, sec AS direccion, COUNT(*) AS cantidad FROM solicitar GROUP BY fecha_sol, com, sec HAVING fecha_sol = CURDATE()";
  3. $solicitudes_fecha = mysql_query($query_solicitudes_fecha, $solicitudes) or die(mysql_error());
  4. $row_solicitudes_fecha = mysql_fetch_assoc($solicitudes_fecha);

ese es el codigo para que me sume las solicitudes de la misma direccion o comunidad, la variable que tome para el do while de la tabla fue:
$row_solicitudes_fecha = mysql_fetch_assoc($solicitudes_fecha)
  #17 (permalink)  
Antiguo 08/08/2010, 09:52
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Contar y Mostrar Registros iguales

bueno lo unico que se me ocurre es que enumeres tu consulta siendo esto como un id y luego por ese numero hagas el update ej:
Código PHP:
Ver original
  1. mysql_query("SET @enumerar=0;") or die (mysql_erro());#inicializas el contador
  2. $consulta=mysql_query("select (@enumerar:=@enumerar+1") as enumerar,campo1,campo2 from tabla) or die (mysql_error());
el campo q cree enumerar es un contador que cree con mysql ahi el te va a ir incrementando ese campo tomalo como un id para que actualics segun el y sea la fila que se te creo es lo unico q se me ocurrio adaptalo xq no copie tu consulta sino puse un ejemplito suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #18 (permalink)  
Antiguo 08/08/2010, 16:43
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Contar y Mostrar Registros iguales

hola
bueno, lo que aporta carlos_belisario es interesante para la numeración,
pero si creo entender lo que necesita garciaisidro no se soluciona con eso

ahora, voy a tratar de explicar lo que entendí, por ej tengo esto

Código MySQL:
Ver original
  1. +------------+--------+-----------+
  2. | fecha_sol  | com    | sec       |
  3. +------------+--------+-----------+
  4. | 2010-08-08 | bogota | centro    |
  5. | 2010-08-08 | bogota | centro    |
  6. | 2010-08-08 | bogota | centro    |
  7. | 2010-08-08 | bogota | centro    |
  8. | 2010-08-08 | bogota | centro    |
  9. | 2010-08-08 | bogota | centro    |
  10. | 2010-08-08 | bogota | centro    |
  11. | 2010-08-08 | bogota | centro    |
  12. | 2010-08-08 | bogota | centro    |
  13. | 2010-08-08 | bogota | centro    |
  14. | 2010-08-08 | bogota | unicentro |
  15. | 2010-08-08 | bogota | unicentro |
  16. | 2010-08-08 | bogota | unicentro |
  17. | 2010-08-08 | cali   | centro    |
  18. | 2010-08-08 | bogota | centro    |
  19. +------------+--------+-----------+

y si ejecuto la consulta mas reciente de garciaisidro obtengo esto

Código MySQL:
Ver original
  1. +------------+--------+-----------+----------+
  2. | fecha_sol  | com    | direccion | cantidad |
  3. +------------+--------+-----------+----------+
  4. | 2010-08-08 | bogota | centro    |       11 |
  5. | 2010-08-08 | bogota | unicentro |        3 |
  6. | 2010-08-08 | cali   | centro    |        1 |
  7. +------------+--------+-----------+----------+

si todo lo que explique coincide con lo que se quiere, entonces esto se convierte en un caso de estudio interesante, y yo haría lo siguiente:

usaría esta consulta, y en un ciclo (while por ej) donde manipularia cada registro, haria un if donde revisaría si la cantidad es mayor al limite de registros que se quieren (para este caso 10 y en adelante limite), y si lo es, entonces manejaria una variable (en adelante total) que dividiría la cantidad sobre los registros de cada grupo (10 en este caso) y al resultado (que generalmente será decimal, solo necesitaria la parte entera) le sumaria 1, y luego haria un for que parta desde 1 hasta si es menor o igual al resultado de la operación anterior

y en este for, preguntaria si la variable que itera en el for (en adelante i) es menor a total, y si es verdadero entonces creo un array cuyas keys serían por un lado el com o la dirección, y por el otro el valor de i, y dentro agrego un array asociativo con las posiciones com, sec y cant cuyos valores serán en los 2 primeros campos lo que viene de la base de datos, y en el caso de cant el valor de limite (10)

si es falso, creo el mismo array pero le asigno a cant el resultado de restar el limite contra el resultado de la resta de esta operación:
multiplicar limite por total y a esta multiplicación restarle el campo cantidad de la base de datos

así entonces, tendríamos para el caso de bogotacentro 2 posiciones en el array
bogotacentro (pues son 11 registros) repartidos como se ve a continuación:

Array ( [com] => bogota [sec] => centro [cant] => 10 ) Array ( [com] => bogota [sec] => centro [cant] => 1 )

este if controlara entonces si es mayor a 10 la cantidad del grupo, pero si no es el caso, entonces hacemos un else y creamos el mismo array que hicimos en el if, con la diferencia que cant ya no tendrá nada de operaciones, sino que será igual al campo cantidad que viene del registro de la bd

y pues ya con este super array o colección de arrays, pues no queda mas que con ayuda de ciclos (while, for, o for each) iterar sobre los mismos para mostrar los resultados

enredado?? un poco mientras el teje maneje, y bueno, quedaría algo así

Código PHP:
Ver original
  1. <?php
  2. $limite = 10;
  3. $consulta=mysql_query("SELECT fecha_sol, com, sec AS direccion, COUNT( * ) AS cantidad
  4. FROM solicitar
  5. GROUP BY fecha_sol, com, sec
  6. HAVING fecha_sol = CURDATE( )",$conexion);
  7.  
  8. while ($row = mysql_fetch_array($consulta))
  9. {
  10.     if( $row['cantidad'] > 10 )
  11.     {
  12.         $total = floor(($row['cantidad']) / $limite) + 1;
  13.         for($i = 1; $i <= $total; $i++)
  14.         {
  15.         if( $i < $total ){
  16.             $array[$row['com'].$row['direccion']][$i] = array('com'=>$row['com'],'sec'=>$row['direccion'],'cant'=>$limite);   }        
  17.         else
  18.         {
  19.             $cant = $limite - (($limite * $total) - $row['cantidad']);
  20.             $array[$row['com'].$row['direccion']][$i] = array('com'=>$row['com'],'sec'=>$row['direccion'],'cant'=>$cant);   }
  21.         }
  22.     }
  23.     else
  24.     {
  25.         $array[$row['com'].$row['direccion']][$i] = array('com'=>$row['com'],'sec'=>$row['direccion'],'cant'=>$row['cantidad']);
  26.     }
  27. }
  28.  
  29. //aquí iria el ciclo para mostrar los datos de $array
  30.  
  31. ?>

espero que esto de solución a lo que se quiere, pues siempre me tomó un rato el análisis de este caso,
y el update si también se quiere que sean 10 solamente entonces en efecto como se comento anteriormente,
necesita el limit 10, agregaría un order by el campo que se quiera, y yo agregaría en el where el com por si en algun momento
hay repetición de datos, quedandome por ej algo así

Código MySQL:
Ver original
  1. UPDATE solicitar SET fecha_sol = DATE_ADD(CURDATE(), INTERVAL 3 DAY), procesada = 2 WHERE com = '$var'
  2. AND sec = '$obt_comunidad' ORDER BY campo limit 10

si esto no da solución total, entonces yo propondría modificar el mer de la bd para optimizar el manejo
de este caso, pero esto obviamente viene a modificar también funcionamiento del código

sin embargo prueba y nos comentas
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 08/08/2010 a las 17:08 Razón: add_comment()
  #19 (permalink)  
Antiguo 09/08/2010, 10:53
 
Fecha de Ingreso: julio-2010
Mensajes: 39
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

Cita:
Iniciado por mortiprogramador Ver Mensaje
hola
bueno, lo que aporta carlos_belisario es interesante para la numeración,
pero si creo entender lo que necesita garciaisidro no se soluciona con eso

ahora, voy a tratar de explicar lo que entendí, por ej tengo esto

Código MySQL:
Ver original
  1. +------------+--------+-----------+
  2. | fecha_sol  | com    | sec       |
  3. +------------+--------+-----------+
  4. | 2010-08-08 | bogota | centro    |
  5. | 2010-08-08 | bogota | centro    |
  6. | 2010-08-08 | bogota | centro    |
  7. | 2010-08-08 | bogota | centro    |
  8. | 2010-08-08 | bogota | centro    |
  9. | 2010-08-08 | bogota | centro    |
  10. | 2010-08-08 | bogota | centro    |
  11. | 2010-08-08 | bogota | centro    |
  12. | 2010-08-08 | bogota | centro    |
  13. | 2010-08-08 | bogota | centro    |
  14. | 2010-08-08 | bogota | unicentro |
  15. | 2010-08-08 | bogota | unicentro |
  16. | 2010-08-08 | bogota | unicentro |
  17. | 2010-08-08 | cali   | centro    |
  18. | 2010-08-08 | bogota | centro    |
  19. +------------+--------+-----------+

y si ejecuto la consulta mas reciente de garciaisidro obtengo esto

Código MySQL:
Ver original
  1. +------------+--------+-----------+----------+
  2. | fecha_sol  | com    | direccion | cantidad |
  3. +------------+--------+-----------+----------+
  4. | 2010-08-08 | bogota | centro    |       11 |
  5. | 2010-08-08 | bogota | unicentro |        3 |
  6. | 2010-08-08 | cali   | centro    |        1 |
  7. +------------+--------+-----------+----------+

si todo lo que explique coincide con lo que se quiere, entonces esto se convierte en un caso de estudio interesante, y yo haría lo siguiente:

usaría esta consulta, y en un ciclo (while por ej) donde manipularia cada registro, haria un if donde revisaría si la cantidad es mayor al limite de registros que se quieren (para este caso 10 y en adelante limite), y si lo es, entonces manejaria una variable (en adelante total) que dividiría la cantidad sobre los registros de cada grupo (10 en este caso) y al resultado (que generalmente será decimal, solo necesitaria la parte entera) le sumaria 1, y luego haria un for que parta desde 1 hasta si es menor o igual al resultado de la operación anterior

y en este for, preguntaria si la variable que itera en el for (en adelante i) es menor a total, y si es verdadero entonces creo un array cuyas keys serían por un lado el com o la dirección, y por el otro el valor de i, y dentro agrego un array asociativo con las posiciones com, sec y cant cuyos valores serán en los 2 primeros campos lo que viene de la base de datos, y en el caso de cant el valor de limite (10)

si es falso, creo el mismo array pero le asigno a cant el resultado de restar el limite contra el resultado de la resta de esta operación:
multiplicar limite por total y a esta multiplicación restarle el campo cantidad de la base de datos

así entonces, tendríamos para el caso de bogotacentro 2 posiciones en el array
bogotacentro (pues son 11 registros) repartidos como se ve a continuación:

Array ( [com] => bogota [sec] => centro [cant] => 10 ) Array ( [com] => bogota [sec] => centro [cant] => 1 )

este if controlara entonces si es mayor a 10 la cantidad del grupo, pero si no es el caso, entonces hacemos un else y creamos el mismo array que hicimos en el if, con la diferencia que cant ya no tendrá nada de operaciones, sino que será igual al campo cantidad que viene del registro de la bd

y pues ya con este super array o colección de arrays, pues no queda mas que con ayuda de ciclos (while, for, o for each) iterar sobre los mismos para mostrar los resultados

enredado?? un poco mientras el teje maneje, y bueno, quedaría algo así

Código PHP:
Ver original
  1. <?php
  2. $limite = 10;
  3. $consulta=mysql_query("SELECT fecha_sol, com, sec AS direccion, COUNT( * ) AS cantidad
  4. FROM solicitar
  5. GROUP BY fecha_sol, com, sec
  6. HAVING fecha_sol = CURDATE( )",$conexion);
  7.  
  8. while ($row = mysql_fetch_array($consulta))
  9. {
  10.     if( $row['cantidad'] > 10 )
  11.     {
  12.         $total = floor(($row['cantidad']) / $limite) + 1;
  13.         for($i = 1; $i <= $total; $i++)
  14.         {
  15.         if( $i < $total ){
  16.             $array[$row['com'].$row['direccion']][$i] = array('com'=>$row['com'],'sec'=>$row['direccion'],'cant'=>$limite);   }        
  17.         else
  18.         {
  19.             $cant = $limite - (($limite * $total) - $row['cantidad']);
  20.             $array[$row['com'].$row['direccion']][$i] = array('com'=>$row['com'],'sec'=>$row['direccion'],'cant'=>$cant);   }
  21.         }
  22.     }
  23.     else
  24.     {
  25.         $array[$row['com'].$row['direccion']][$i] = array('com'=>$row['com'],'sec'=>$row['direccion'],'cant'=>$row['cantidad']);
  26.     }
  27. }
  28.  
  29. //aquí iria el ciclo para mostrar los datos de $array
  30.  
  31. ?>

espero que esto de solución a lo que se quiere, pues siempre me tomó un rato el análisis de este caso,
y el update si también se quiere que sean 10 solamente entonces en efecto como se comento anteriormente,
necesita el limit 10, agregaría un order by el campo que se quiera, y yo agregaría en el where el com por si en algun momento
hay repetición de datos, quedandome por ej algo así

Código MySQL:
Ver original
  1. UPDATE solicitar SET fecha_sol = DATE_ADD(CURDATE(), INTERVAL 3 DAY), procesada = 2 WHERE com = '$var'
  2. AND sec = '$obt_comunidad' ORDER BY campo limit 10

si esto no da solución total, entonces yo propondría modificar el mer de la bd para optimizar el manejo
de este caso, pero esto obviamente viene a modificar también funcionamiento del código

sin embargo prueba y nos comentas
saludos
WOOOWW, AGRADEZCO MUCHO TU GRAN DEDICACION, estuve tratando de implementar tu codigo con el mío y supongo que me perdí en toda la explicacion y no se que me pueda faltar y que me sobra, jajaja, se que es mucho pedir pedir, pero igual no puedo dejar de hacer la pregunta de q si estarias dispuesto a trabajar desde "0" o implementando el codigo que hiciste para lograr lo que necesito, tambien con la base de datos para revises si funcione, yo te diría los campos que uso y tu verias si es necesario trabajar con unos adicionales??? PERO REPITO, SOLO SI TIENES TIEMPO, PORQ COMO HABRAS NOTADO SOY NUEVO EN ESTO DE PROGRAMACION Y TARDARIA MUCHO EN RESOLVERLO... Y NUEVAMENTE GRACIAS POR HABER GASTADO PARTE DE TU TIEMPO EN EXPLICARME y CONSTRUIR EL CODIGO DE ARRIBA
  #20 (permalink)  
Antiguo 09/08/2010, 17:01
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: Contar y Mostrar Registros iguales

hola, pues enviame un mp con tus datos para contactarnos, y luego que se de la solución, tu te encargas de actualizar este post para brindarle la info a otros que la puedan necesitar
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #21 (permalink)  
Antiguo 28/03/2014, 10:52
 
Fecha de Ingreso: marzo-2014
Mensajes: 1
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Contar y Mostrar Registros iguales

(PHP y MySQl)
Que tal amigos, tengo un problemia, como puedo saber si de un juego de registros, un campo cumple con una condicion es decir:

nombre respuesta
dato1 si
dato2 si
dato3 no

si todos los registros tiene un "si" hacer una acción, de lo contrario si al menos uno es un "NO" detener la acción.

Etiquetas: contar, iguales, registros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:16.