Foros del Web » Programando para Internet » PHP »

consulta mysql

Estas en el tema de consulta mysql en el foro de PHP en Foros del Web. Hola, os pongo una duda a ver si hay alguien tan amable de contestarme. Estoy empezando con php, y no consigo hacer lo siguiente: Tengo ...
  #1 (permalink)  
Antiguo 09/03/2008, 15:10
 
Fecha de Ingreso: marzo-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes
Puntos: 0
consulta mysql

Hola, os pongo una duda a ver si hay alguien tan amable de contestarme. Estoy empezando con php, y no consigo hacer lo siguiente:

Tengo una tabla con

NOMBRE - CATEGORIA
----------------------------
nombre1 - pintor
nombre2 - albañil
nombre3 - pintor
nombre4 - taxista
nombre5 - albañil

Lo que quiero hacer es que me saque los datos de esta manera:

Pintor
nombre1
nombre3
Albañil
nombre2
nombre5
Taxista
nombre4

El caso es que sólo llego a esto haciendo 3 consultas, pero claro, el número de categorias puede variar, y estaría bien no tener que tocar el código cada vez que se cree una categoria nueva.

¿Alguien podría echarme una mano??
  #2 (permalink)  
Antiguo 09/03/2008, 23:43
 
Fecha de Ingreso: mayo-2006
Mensajes: 120
Antigüedad: 17 años, 11 meses
Puntos: 3
Re: consulta mysql

Utiliza un ORDER BY categoria y luego haces un corte de control sobre el resultado para mostrarlos agrupados por categoría.
__________________
programación php
  #3 (permalink)  
Antiguo 10/03/2008, 02:53
 
Fecha de Ingreso: marzo-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: consulta mysql

Mmmmm, vale, el ORDER BY si que se hacerlo, pero lo siguiente no....

¿Alguien me puede decir cómo?
  #4 (permalink)  
Antiguo 10/03/2008, 05:19
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: consulta mysql

Si tu consulta es propiamente que necesitas código de programación, me avisas para mover tu mensaje a la sección respectiva.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #5 (permalink)  
Antiguo 10/03/2008, 07:58
 
Fecha de Ingreso: mayo-2006
Mensajes: 120
Antigüedad: 17 años, 11 meses
Puntos: 3
Re: consulta mysql

Pedile a BrujoNic que te mueva el tema.
Un corte de control es procesar por agrupaciones, en este caso estamos agrupando por categoría, mirá este código:
Código:
$anterior = '-1';
while ($row = mysql_fetch_assoc($resultado)) {
  // Cada vez que cambie la categoría, la mostramos y
  // recordamos su valor para saber cuando vuelve a cambiar.
  if (strcmp( $anterior, $row['categoria'] ) == 0) {
    echo '<b>',$row['categoria'],'</b>';
    $anterior = $row['categoria'];
  }
  echo $row['nombre'];
}
Espero que te haya servido.

Saludos.
__________________
programación php
  #6 (permalink)  
Antiguo 10/03/2008, 08:35
 
Fecha de Ingreso: marzo-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: consulta mysql

¡¡¡Pufff, qué lio!!!

Es que estoy empezando con esto y me resulta muy difícil...

¿Tendría que poner esto?

Código PHP:
$query "SELECT * FROM `art_id` GROUP BY `category` ASC";
$resultado mysql_query($query);
$anterior '-1';
while (
$row mysql_fetch_assoc($resultado)) {

  
// Cada vez que cambie la categoría, la mostramos y
  // recordamos su valor para saber cuando vuelve a cambiar.
  
if (strcmp$anterior$row['category'] ) == 0) {
    echo 
'<b>',$row['category'],'</b>';
    
$anterior $row['category'];
  }
  echo 
$row['name'];

No me entero de nada....Porque pongo esto, y lo único que me saca es el primero de cada categoría, pero no el resto...

Gracias por las respuestas.

Por cierto, ¿este post lo tendría que poner en PHP?

Última edición por mambrudesign; 10/03/2008 a las 08:51
  #7 (permalink)  
Antiguo 10/03/2008, 08:53
 
Fecha de Ingreso: mayo-2006
Mensajes: 120
Antigüedad: 17 años, 11 meses
Puntos: 3
Re: consulta mysql

Mostrame tu código actual, y te ayudo a modificarlo.

El código que yo te puse está haciendo un corte de control, dentro del while cada vez que la categoría es distinta de la anterior se muestra por pantalla.

En la primera iteración $anterior está en -1, y $row['category'] está con "pintor", entonces en el if se compara si son iguales con strcmp, como no son iguales en $anterior se guarda pintor y además se saca por pantalla el título. En la próxima iteración (un nuevo row de la tabla) si $row['category'] sigue siendo pintor el if va a dar falso y sólo se mostrara el $row['name']. En el momento que $row['category'] sea distinto de pintor se vuelve a mostrar la categoría nueva y se vuelve a guardar en $anterior.

Es dificil entenderlo así. Simplemente ejecutalo e intenta modificarlo y vas a ver que allí te resulta sencillo.

Sí, esto debería ir en PHP, pedí que te lo muevan.
__________________
programación php
  #8 (permalink)  
Antiguo 10/03/2008, 09:03
 
Fecha de Ingreso: marzo-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: consulta mysql

Mira, este es el código que estoy utilizando (con lo tuyo)

De momento consigo que me saque los 'name', agrupados por 'category'. Pero no me saca los diferentes 'category' al principio de cada "grupo".

Código PHP:
$query "SELECT * FROM `art_id` ORDER BY `category`";
$resultado mysql_query($query);
$anterior '-1';
while (
$row mysql_fetch_assoc($resultado)) {

  
// Cada vez que cambie la categoría, la mostramos y
  // recordamos su valor para saber cuando vuelve a cambiar.

  
if (strcmp$anterior$row['category'] ) == 0) {
    echo 
'<b>'.$row['category'].'</b>';
    
$anterior $row['category'];
  }
  echo 
'<p>'.$row['name'].'</p>';

¿Le pido por mensaje privado que me muevan el tema?

Muchísimas gracias!!!

Última edición por mambrudesign; 10/03/2008 a las 09:37
  #9 (permalink)  
Antiguo 10/03/2008, 10:10
 
Fecha de Ingreso: mayo-2006
Mensajes: 120
Antigüedad: 17 años, 11 meses
Puntos: 3
Re: consulta mysql

Es que te lo pasé con un error.
Modificá el IF para que quede así:
Código PHP:
  if (strcmp$anterior$row['category'] ) != 0) { 
Ahora está preguntando cuando no son iguales, antes estaba al revés.

Saludos.

Sí, le mandas un privado y listo.
__________________
programación php

Última edición por drbit; 10/03/2008 a las 10:11 Razón: error typo
  #10 (permalink)  
Antiguo 10/03/2008, 10:26
 
Fecha de Ingreso: marzo-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: consulta mysql

Alaaaaa

¡¡¡Muchísimas gracias!!!

¡Ahora me va perfecto!

¡Así da gusto!
  #11 (permalink)  
Antiguo 10/03/2008, 21:07
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: consulta mysql

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
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 06:12.