Foros del Web » Programando para Internet » PHP »

Urgente pregunta para tablas (expertos)

Estas en el tema de Urgente pregunta para tablas (expertos) en el foro de PHP en Foros del Web. he tratado de conseguir datos de una tebla de mysql y ordenarlos de la siguiente manera: pais1 alumnoa telefonoa sexoa alumnob telefonob sexoc alumnoc telefonoc ...
  #1 (permalink)  
Antiguo 16/03/2006, 05:02
 
Fecha de Ingreso: octubre-2004
Mensajes: 79
Antigüedad: 19 años, 5 meses
Puntos: 0
Exclamación Urgente pregunta para tablas (expertos)

he tratado de conseguir datos de una tebla de mysql y ordenarlos de la siguiente manera:


pais1

alumnoa telefonoa sexoa
alumnob telefonob sexoc
alumnoc telefonoc sexoc

Pais2

alumnoy telefonoy sexoy
alumnoz telefonoz sexoz

pais2

etc...


ya lo he conseguido con el siguiente script, solo que me genera una tabla por cada alumno, en lugar de generar una tabla por cada grupo de alumnos de x pais.


Código PHP:
<?php require_once('../Connections/conn_escuela.php'); ?> 
<?php 
mysql_select_db
($database_conn_escuela$conn_escuela); 
$query_lista_alumnos "SELECT * FROM alumnos ORDER BY Pais ASC"
$lista_alumnos mysql_query($query_lista_alumnos$conn_escuela) or die(mysql_error()); 
?> 
     
       <?  
while ($row_lista_alumnos=mysql_fetch_array($lista_alumnos)){ 
  if  (
$pais != $row_lista_alumnos['Pais']){  
     echo  
$row_lista_alumnos['Pais'];
  }  
?>

    <table border="1">
     <td ><? echo $row_lista_alumnos['Nombre'];?></td>
     <td ><? echo $row_lista_alumnos['Telefono'];?></td>
     <td ><? echo $row_lista_alumnos['Sexo'];?></td></table>
     
     <? $pais=$row_lista_alumnos['Pais'];

?>
  #2 (permalink)  
Antiguo 16/03/2006, 06:33
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 9 meses
Puntos: 2
Dos simples cosas, trata de evitar las llamadas a los "expertos" esto solo hará que nadie entre, yo solo entre a decirte esto. Ya que de paso entre le eche un ojo a tu problema y creo que deberías preguntar en el foro de base de datos.
  #3 (permalink)  
Antiguo 16/03/2006, 06:44
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 18 años, 10 meses
Puntos: 2
Estoy de acuerdo con Dario, esto es tema de bases de datos. Lo que tienes que hacer es un GROUP BY en la consulta SQL, y ademas deberas usar dos consultas. Una que te agrupe y otra que te saque los alumnos.

http://www.desarrolloweb.com/articul...0.php?manual=9
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #4 (permalink)  
Antiguo 16/03/2006, 06:47
 
Fecha de Ingreso: abril-2005
Mensajes: 139
Antigüedad: 18 años, 11 meses
Puntos: 1
No te entendi bien, lo que quieres es ordenar los alumnos por paises?

Son pedazos de varios scripts lo que estas enseñando?, porque sino no hace falta abrir y cerrar las etiquetas tantas veces:

Código PHP:
<?
php 
require_once('../Connections/conn_escuela.php'); 

mysql_select_db($database_conn_escuela$conn_escuela); 
$query_lista_alumnos "SELECT * FROM alumnos ORDER BY Pais ASC"
$lista_alumnos mysql_query($query_lista_alumnos$conn_escuela) or die(mysql_error()); 

     
while (
$row_lista_alumnos=mysql_fetch_array($lista_alumnos)){ 
  if  (
$pais != $row_lista_alumnos['Pais']){  
     echo  
$row_lista_alumnos['Pais'];
  }  
// aqui si porque vas a utilizar html
 
?>

    <table border="1">
     <td ><? echo $row_lista_alumnos['Nombre'];?></td>
     <td ><? echo $row_lista_alumnos['Telefono'];?></td>
     <td ><? echo $row_lista_alumnos['Sexo'];?></td></table>
     
     <? $pais=$row_lista_alumnos['Pais'];

?>
Si son por paises dimelo y te echare una mano, es que ahora tengo prisa
__________________
Ciao y suerte.
  #5 (permalink)  
Antiguo 16/03/2006, 07:16
Avatar de JorgitoAlfajor  
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 18 años, 2 meses
Puntos: 1
Si entendí bien, creo que el problema es con el algoritmo para mostrar los datos, no con la consulta. Creo que el tema esta en que vos creas una tabla en cada iteración del while, y por lo tanto una tabla para cada alumno. Lo que deberías hacer es crear una tabla cada vez que hay un cambio en el pais, no en cada ciclo del while. Seria más o menos así (no se si funcionará, no tengo un intérprete de php en la cabeza!!!)

Código PHP:
<?
....
$row_lista_alumnos=mysql_fetch_array($lista_alumnos);
while (
$row_lista_alumnos){  
      
$pais $row_lista_alumnos['Pais'];    
    echo  
$pais
      echo 
"<table border=\"1\"> ";
    while (
$row_lista_alumnos && ($pais == $row_lista_alumnos['Pais'])) {
        echo 
"<tr>";
        echo 
"<td>$row_lista_alumnos['Nombre']</td>";
        echo 
"<td>$row_lista_alumnos['Telefono']</td>"
        echo 
"<td>$row_lista_alumnos['Sexo']</td>";
        echo 
"</tr>";
        
$row_lista_alumnos=mysql_fetch_array($lista_alumnos);
        }
    echo 
"</table> ";
    }  
...
?>
Creo que tambíen se podría hacer en un solo while, haciendo algunas verificaciones.
Saludos.
__________________
¿Se me entiende la letra?
  #6 (permalink)  
Antiguo 16/03/2006, 09:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Iniciado por DarioDario
Dos simples cosas, trata de evitar las llamadas a los "expertos" esto solo hará que nadie entre, yo solo entre a decirte esto. Ya que de paso entre le eche un ojo a tu problema y creo que deberías preguntar en el foro de base de datos.
Ese tema concreto ya está resuelto .. ya usa la técnica que describí en:

http://www.forosdelweb.com/showpost....93&postcount=4

(Sólo era para aclarar el tema).

Un saludo,
  #7 (permalink)  
Antiguo 16/03/2006, 09:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
oskarL

El proceso de "sub-consultas" que realizan en sus ejemplos se puede optimizar con -sólo- una consulta SQL y una pequeña variable de control + un condicional (if) sencillo.

Les invito a ver la propuesta que planteo en:
http://www.forosdelweb.com/showpost....93&postcount=4

Un saludo,
  #8 (permalink)  
Antiguo 16/03/2006, 10:03
 
Fecha de Ingreso: febrero-2006
Mensajes: 148
Antigüedad: 18 años, 1 mes
Puntos: 0
se crea una tabla y otra tabla y otra por que las impresiones de <tr> y <td> estan dentro de un bucle "while" mientra se cumpla se va hacer infinidades de veces.

te recomiendo hacer una condicion. para q solo se cree una tabla cuando sea necesario.
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 09:19.