Foros del Web » Programando para Internet » PHP »

Número de registros de una categoria determinada

Estas en el tema de Número de registros de una categoria determinada en el foro de PHP en Foros del Web. Hola a todos. a ver. tengo la siguiente cuestión. tengo dos tablas, una categorias y la otra alumnos. en la tabla categorias aparecen las diferentes ...
  #1 (permalink)  
Antiguo 07/01/2008, 09:15
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Número de registros de una categoria determinada

Hola a todos. a ver. tengo la siguiente cuestión. tengo dos tablas, una categorias y la otra alumnos.

en la tabla categorias aparecen las diferentes categorias en la que se clasifican los alumnos de un determinado centro de formación. únicamente recoge dos campos: idcategoria y categoria, donde idcategoria es un campo autonumerico.

en la tabla alumnos aparecen los datos de los alumnos y además un campo que es 'categoria', que recoge la categoria a la que pertenece el alumno.

una de las páginas del portal es "categorías" de tal modo que al pulsar sobre el enlace, aparecen las diferentes categorías recogidas en la base de datos ordenadas en filas de 5 columnas cada una.

hasta aquí (que no es nada) lo tengo todo conseguido. lo que yo quiero ahora es que me aparezca al lado de cada categoría en esa sección "categorías" entre paréntesis el número de alumnos que hay en cada una de esas categorías. por ejemplo, supongamos estas categorías:

E.S.O. F.P. Universidad Postgrado

Yo lo que quiero es que aparezca esto:

E.S.O. (35) F.P. (32) Universidad (41) Postgrado(15)

donde el número de los paréntesis es el número de alumnos que hay en cada categoría. cómo hago esto?
  #2 (permalink)  
Antiguo 07/01/2008, 10:02
jpeeri
Invitado
 
Mensajes: n/a
Puntos:
Re: Número de registros de una categoria determinada

Código PHP:
$alumnos_sql mysql_query("SELECT COUNT(*) FROM alumnos WHERE categoria = '".$idcategoria."'");
list (
$alumnos_count) = mysql_fetch_array($alumnos_sql); 
Espero que te sirva ;)
  #3 (permalink)  
Antiguo 07/01/2008, 10:50
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Número de registros de una categoria determinada

gracias por tu rapida ayuda pero no se como orientarlo. a ver: el código de la sección 'categorias' es el siguiente:

Código PHP:
$link = mysql_connect("localhost", "admin", "pass") or die (mysql_error());
mysql_select_db("formacion",$link) or die (mysql_error());
$result = mysql_query("SELECT * FROM categorias order by categoria ASC", $link);

$i=0;  
while($row = mysql_fetch_array($result)) {    
    if ($i==0) {  
?>  
<tr>  
<?php  
    
}  
?>  
    <td width="100" bordercolor="#90B36F"><div align="center"><?php echo $row["categoria"]; ?></div></td>  
<?php  
    $i
++;  
    if (
$i==5) {  
?>  
</tr>  
<?php  
       $i
=0;  
    }  
   
}    
mysql_free_result($result);    
mysql_close($link);
esto lo que hace es mostrarme las categorías en 5 columnas como digo. como hago ahora, qué debo meter en este código para que al lado de cada categoría aparezca el número de alumnos que hay en ellas? estoy perdida. no sé como utilizar lo que me has dado
  #4 (permalink)  
Antiguo 07/01/2008, 10:54
jpeeri
Invitado
 
Mensajes: n/a
Puntos:
Re: Número de registros de una categoria determinada

Código PHP:
$link = mysql_connect("localhost", "admin", "pass") or die (mysql_error());
mysql_select_db("formacion",$link) or die (mysql_error());
$result = mysql_query("SELECT * FROM categorias order by categoria ASC", $link);

$i=0;  
while($row = mysql_fetch_array($result)) {   
$alumnos_sql = mysql_query("SELECT COUNT(*) FROM alumnos WHERE categoria = '".$row['idcategoria']."'"); // Comprueba por favor que la columna de la tabla de MySQL sea idcategoria o te dará error :)
list ($alumnos_count) = mysql_fetch_array($alumnos_sql);      
if ($i==0) {  
?>  
<tr>  
<?php  
    
}  
?>  
    <td width="100" bordercolor="#90B36F"><div align="center"><?php echo $row["categoria"]. "(".$alumnos_count.")"?></div></td>  
<?php  
    $i
++;  
    if (
$i==5) {  
?>  
</tr>  
<?php  
       $i
=0;  
    }  
   
}    
mysql_free_result($result);    
mysql_close($link);
Esto debería funcionar ;)
  #5 (permalink)  
Antiguo 07/01/2008, 10:59
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Número de registros de una categoria determinada

ok a todo. gracias por tu inestimable ayuda. un abrazo y besitos:corazo n:
  #6 (permalink)  
Antiguo 07/01/2008, 12:54
jpeeri
Invitado
 
Mensajes: n/a
Puntos:
Re: Número de registros de una categoria determinada

Nada, siempre es un placer ayudar a que no seamos todos chicos jeje

Besos
  #7 (permalink)  
Antiguo 07/01/2008, 13:26
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Número de registros de una categoria determinada

otra cosa. a ver si me puedes ayudar. como te digo, me muestra las diferentes categorías en 5 columnas y en un número de filas el que sea según las categorías que yo tenga tal que así:

ESO - EGB - UNIVERSIDAD - POSTGRADO - MAYOR 25

INFANTIL - PRIMARIA - SECUNDARIA - MENOR DE 18 - SIN TITULACION


bien. me las ordena alfabéticamente (porque así se lo indico yo) por columnas, es decir, alfabéticamente de izquierda a derecha y luego por filas. yo lo que quiero es que me los ordene alfabeticamente pero de arriba a abajo. es decir, ahora mismo me los ordena así:

A - B - C - D - E
F - G - H - I - J

yo quiero que me los ordene así:

A - C - E - G - I
B - D - F - H - J

Cómo lo hago?
  #8 (permalink)  
Antiguo 07/01/2008, 13:40
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Número de registros de una categoria determinada

Distribuirlo en ese orden puede ser algo más complejo. Ten en cuenta que las tablas en HTML se construyen por filas, no por columnas, por lo que deberías llenar filas....

Hace tiempo posteé una manera de hacer esto, no sé si habrá alguna manera más simple, pero puede servir.

Código PHP:

//AQUÍ TIENES QUE PASAR LOS RESULTADOS DE LA CONSULTA AL ARRAY "$array_resultados" 
 
$Num_columnas 4//Número de Columnas 
 
$i 0
$Columna_actual 1
$Fila_actual 1
$Num_resultados count($array_resultados); 
$Num_filas $Num_resultados $Num_columnas
if (!
is_int($Num_filas)) 
    
$Num_filas++; 
$Num_filas number_format($Num_filas0); 
echo 
$Num_filas
 
echo 
'<table cellSpacing="0" cellPadding="0" width="100%" border="1">'
echo 
'<tr>'
 
while(
$i<$Num_resultados) { 
 
    if (
$Columna_actual $Num_columnas) { 
            echo 
'</tr>'
            echo 
'<tr>'
            
$Columna_actual 1
        
$Fila_actual++; 
        } 
 
 
    
$Indice_a_mostrar = (($Columna_actual 1) * $Num_filas $Fila_actual)-1
 
    if ((
$Indice_a_mostrar 1) <= $Num_resultados) { 
 
 
        echo 
'<td'
 
                
// AQUÍ ACCEDERÍAS AL ARRAY, USANDO COMO INDICE $Indice_a_mostrar 
  
        
echo '</td>';  
        
$i++; 
    } 
    
$Columna_actual++; 

 
echo 
'</tr></table>'
  #9 (permalink)  
Antiguo 08/01/2008, 04:31
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Número de registros de una categoria determinada

hola. gracias por tu ayuda, pero no sé como adaptar tu código a mi código. me he perdido en tus planteamientos. puedes ayudarme? gracias
  #10 (permalink)  
Antiguo 08/01/2008, 07:34
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Número de registros de una categoria determinada

Exactamente, ¿Qué quieres hacer? ¿distribuir el resultado de una query en columnas?

Si es esto, lo que haría el código es más o menos lo siguiente:

resultado1 resultado4 resultado7 resultado10
resultado2 resultado5 resultado8
resultado3 resultado6 resultado9

¿es esto lo que buscas? Si es otra cosa, explica lo que quieres conseguir.
  #11 (permalink)  
Antiguo 08/01/2008, 11:23
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Número de registros de una categoria determinada

exacto, eso es. pero con tu código me lío. cómo lo adapto al mío?
  #12 (permalink)  
Antiguo 08/01/2008, 13:28
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Número de registros de una categoria determinada

Vamos a ver, la idea es la siguiente:

Las tablas HTML se construyen por filas, es decir, primero se escribe la primera fila, con todas sus celdas, y después se salta a la segunda.... y así sucesivamente.

Siguiendo esta lógica al mostrar tus resultados no puedes ir en orden, tienes que adaptarte.

Eso es lo que haría el código, dado un array con unos elementos a mostrar, te construiría la tabla.

Desconozco si hay formas más rápidas y eficaces de hacer lo mismo, esto fue lo primero que se me ocurrió a mi, y de ahí fui tirando.

Lo que no está en el código es la consulta SQL y la asignación de los elementos que te interesen a un array especifico.


Por ejemplo, si en la tabla quieres mostrar dos valores ($row['campo1'] y $row['campo2']) el bucle sería algo así:

Código PHP:

for ($i=1;$i<=mysql_num_rows($id_query);$i++) {
     
$row mysql_fetch_row($id_query);
     
$array_resultados[$i]['campo1'] = $row['campo1'];
     
$array_resultados[$i]['campo2'] = $row['campo2'];

Siendo $id_query la consulta que saca los resultados. Aunque también se puede rellenar el array con datos que vengan de otras fuentes.
También se podría hacer con un while, pero en ese caso habría que llevar a mano la variable de control.

Una vez que el array está lleno es cuando montamos todo el tinglado (la tabla):

Código PHP:

$Num_columnas 
4//Número de Columnas que tendrá la tabla.
 
$i 0
$Columna_actual 1
$Fila_actual 1
$Num_resultados count($array_resultados); 
$Num_filas $Num_resultados $Num_columnas
if (!
is_int($Num_filas)) 
    
$Num_filas++; 
$Num_filas number_format($Num_filas0); 

 
echo 
'<table cellSpacing="0" cellPadding="0" width="100%" border="1">';  //Todo esto es modificable para aplicarle el estilo que quieras

 
// En éste punto se podría poner una cabecera para la tabla.


echo '<tr>'//con estilo si se prefiere.

while($i<$Num_resultados) { 
 
    if (
$Columna_actual $Num_columnas) { 
            echo 
'</tr>'
            echo 
'<tr>'//si quieres un estilo especifico para la tabla iría aquí.
            
$Columna_actual 1
        
$Fila_actual++; 
        } 
 
 
    
$Indice_a_mostrar = (($Columna_actual 1) * $Num_filas $Fila_actual)-1
 
    if ((
$Indice_a_mostrar 1) <= $Num_resultados) { 
 
 
        echo 
'<td'>  // se puede poner estilo para la celda.
 
                
"// AQUÍ ACCEDERÍAS AL ARRAY, USANDO COMO INDICE $Indice_a_mostrar "
                  
        
echo '</td>';  
        
$i++; 
    } 
    
$Columna_actual++; 

 
echo 
'</tr></table>'
Siguiendo con el ejemplo de antes, si en cada celda quieres meter los valores de campo1 y campo2, en donde pone: "// AQUÍ ACCEDERÍAS AL ARRAY, USANDO COMO INDICE $Indice_a_mostrar ", deberías poner algo así:

Código PHP:

echo "$array_resultados[$Indice_a_mostrar]['valor1] $array_resultados[$Indice_a_mostrar]['valor2]"
No sé si me habré explicado bien, y no he comprobado si funciona, quizás haya cometido algún fallo, pero la lógica es esa, y depurándolo un poco debería funcionar bien.
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 01:53.