Foros del Web » Programando para Internet » PHP »

Como hacer esta consulta a mysql

Estas en el tema de Como hacer esta consulta a mysql en el foro de PHP en Foros del Web. buenas, perdon por el titulo, no sabia exactamente como ponerlo. mi problema es el siguiente. suponiendo que tengo esta tabla en la base de datos ...
  #1 (permalink)  
Antiguo 04/01/2011, 20:58
 
Fecha de Ingreso: junio-2010
Mensajes: 56
Antigüedad: 9 años, 7 meses
Puntos: 3
Como hacer esta consulta a mysql

buenas, perdon por el titulo, no sabia exactamente como ponerlo.

mi problema es el siguiente.
suponiendo que tengo esta tabla en la base de datos

[Tabla_Usuarios]
[nombre] [pais]
usuario1 Perú
usuario2 Perú
usuario3 Argentina
usuario4 Argentina
usuario5 Ecuador

y quisiera imprimir esto:

Perú
usuario1
usuario2

Argentina
usuario3
usuario4

Ecuador
usuario5

y yo lo unico que consigo, usando este tipo de codigo
Código:
	foreach ($consulta as $datos)
	{
		echo '<p>'.$datos['pais'].'</p>
                <p>'.$datos['nombre'],'</p>';
        }
es esto:
Perú
usuario1
Perú
usuario2

Argentina
usuario3
Argentina
usuario4

Ecuador
usuario5

el pais se repite, como tantos usuarios existan
como puedo lograr lo que pido al principio del post?

gracias de antemano
  #2 (permalink)  
Antiguo 04/01/2011, 21:09
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 6 meses
Puntos: 416
Respuesta: Como hacer esta consulta a mysql

Con una banderilla, guarda el nombre del pais en una banderilla y solo muestralo si es diferente al ultimo registro.

Código PHP:
Ver original
  1. foreach ($consulta as $datos)
  2.     {
  3.                 if($flag != $datos['pais']) {
  4.                   //muestro el titulo
  5.                 }
  6.         echo '<p>'.$datos['pais'].'</p>
  7.                <p>'.$datos['nombre'],'</p>';
  8.                 $flag = $datos['pais'];
  9.         }

Dale un valor inical a $flag, puede ser cualquier cosa hasta una cadena vacia
  #3 (permalink)  
Antiguo 05/01/2011, 00:55
 
Fecha de Ingreso: junio-2010
Mensajes: 56
Antigüedad: 9 años, 7 meses
Puntos: 3
Respuesta: Como hacer esta consulta a mysql

Gracias Ronruby me sirvio lo que me dijiste.
pero crei que con eso ya podia hacer lo demas, disculpa que te vuelva a molestar,
pero mi idea era mostrar algo asi:


pero se imprime asi:


mi codigo es este, agregado lo que tu me indicaste (no se por que aparecen esos asteriscos :S)

Código PHP:
Ver original
  1. foreach ($consulta as $datos)
  2. * * {
  3. * * * * * *if($flag != $datos['pais']) {
  4. * * * * * * *echo $datos['pais'];
  5. * * * * * * * * }
  6.  
  7. * * * *    echo '
  8.              <div style="border:1px solid black; background: #FAE0E0;">
  9.              ',$datos['nombre'],'
  10.               </div>';
  11.              
  12. * * * * * * * $flag = $datos['pais'];
  13. * * *}

como haria para hacer lo de la primera imagen? encerrar en en el mismo div, a los usuarios que pertenecen al mismo pais.

gracias nuevamente, y disculpa pero soy novato en esto de php y mysql.
  #4 (permalink)  
Antiguo 05/01/2011, 10:55
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 11 años, 6 meses
Puntos: 416
Respuesta: Como hacer esta consulta a mysql

En ese caso tienes que poner que el <div> se abra luego de que se imprima el titulo y solo cierre si encuentra un titulo diferente, practicamente es mover todo tu codigo a la clausula if.
Código PHP:
Ver original
  1. $k = 0;
  2. foreach ($consulta as $datos)
  3. {
  4.                   if($flag != $datos['pais']) {
  5.                     if($k == 1) { echo '</div>'; } //Esto es para evitar que se imprima un </div> antes del primer titulo
  6.                     echo $datos['pais'];
  7.                     echo '<div style="border:1px solid black; background: #FAE0E0;">';
  8.                         $k = 1;
  9. }
  10.  
  11.                   echo $datos['nombre'];
  12.                   $flag = $datos['pais'];
  13. }
  14. echo '</div>'; //Este es para asegurarnos de que se cierre el ultimo <div> que se crea

Disculpa que el codigo este tan desordenado, xD Lo edite aqui mismo y no acepta tabs.

Pruebalo y dime como va
  #5 (permalink)  
Antiguo 06/01/2011, 19:51
 
Fecha de Ingreso: junio-2010
Mensajes: 56
Antigüedad: 9 años, 7 meses
Puntos: 3
Respuesta: Como hacer esta consulta a mysql

Perfecto, muchas gracias.

Etiquetas: mysql
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 02:57.