Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] duda en select mysql con php

Estas en el tema de duda en select mysql con php en el foro de PHP en Foros del Web. hola a todos es que estoy tratando de hacer esto posible poder mostrar las categoría seleccionadas Tablas: categories Tabla: users mi php @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 20/06/2016, 10:06
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 766
Antigüedad: 12 años, 5 meses
Puntos: 10
duda en select mysql con php

hola a todos es que estoy tratando de hacer esto posible poder mostrar las categoría seleccionadas

Tablas: categories


Tabla: users


mi php
Código PHP:
Ver original
  1. $sql=$mysqli->query("SELECT id,user,password,category FROM users");
  2.  
  3. while($res=$sql->fetch_array()) {
  4.                                                    
  5.                                                     print("<tr>");
  6.                                                                                                                                                                                             print("<td>".$res["user"]."</td>");
  7.                                                                                                            
  8. print("<td>".$res["password"]."</td>");                                                                                                
  9.                                                                                                            
  10. $datos_cat = unserialize($res["category"]);
  11.                                                                
  12. print("<td>".print_r($datos_cat)."</td>");                                                                                                                             
  13.                                                     print("</tr>");                                            
  14.                                                 }

pero no muestra los nombre de las categorías seleccionadas



ejemplo quiero que salgan así


Última edición por xoceunder; 20/06/2016 a las 10:14
  #2 (permalink)  
Antiguo 20/06/2016, 10:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: duda en select mysql con php

No deberías usar unserialize() contra todo el registro, eso no tiene sentido.

Se supone que tienes una columna con esa información ¿por qué aplicas unserialize() sobre todos los datos y no sólo sobre esa columna?

Además ¿qué datos almacenaste en dicho campo? ¿ahí viene el nombre de la categoría o sólo su relación?

Porque si sólo tienes el ID que le hace relación a la tabla de categorías: entonces estás haciendo las cosas muy mal.

El problema más grave de eso es que ahora, además de sacar dicho dato de ahí, debes hacer una consulta extra por cada registro.

¿Por qué no usaste una simple relación?

¿Por qué serializaste dicha info?

Si hubieras usado relaciones convencionales toda esa información ya la hubieras obtenido en una sola consulta, pero bueno, prefieres complicarte la vida.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 20/06/2016, 10:35
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 766
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: duda en select mysql con php

con $datos_cat = unserialize($res["category"]);

me devuelve por cada usuario esto

Array ( [0] => 8 [1] => 6 )

pues quiero ver si es posible hacer una consulta

$sql = 'SELECT FROM WHERE id IN (' . implode(",", $array) . ')';

asi para poder mostrar los nombres
  #4 (permalink)  
Antiguo 20/06/2016, 10:51
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 766
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: duda en select mysql con php

ok ahora tengo esto

Código PHP:
Ver original
  1. $datos_cat = unserialize($res["category"]);
  2.  if($datos_cat<>"") {
  3.   foreach($datos_cat as $index){
  4.     echo $index;
  5.   }
  6.  }



ahora tengo los id pero no se como poder hacer que muestre los nombres
  #5 (permalink)  
Antiguo 20/06/2016, 11:18
 
Fecha de Ingreso: junio-2012
Ubicación: En el Mundo
Mensajes: 766
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: duda en select mysql con php

gracias ya solucione
  #6 (permalink)  
Antiguo 20/06/2016, 11:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: duda en select mysql con php

Cita:
ahora tengo los id pero no se como poder hacer que muestre los nombres
¿No ya habías hecha la consulta de SQL para extraer las categorías?

Esa es la solución, los IDs no sirven de nada si no extraes nada de la BD, piensa en eso.

Cita:
gracias ya solucione
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 20/06/2016, 11:20
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: duda en select mysql con php

Pues como bien te ha dicho el compañero y de la forma que has estructurado el tema necesitas una segunda consulta para traer los nombres de las categorías de la bd mediante sus id.


Código PHP:
Ver original
  1. $datos_cat = unserialize($res["category"]);
  2.  if($datos_cat<>"") {
  3. $w=' WHERE ';
  4. $numero_de_categorias=count ($datos_cat);
  5.   foreach($datos_cat as $index){
  6.     $numero_de_categorias--;
  7.  
  8.     $w.=" id=$index ";
  9.     if ($numero_de_categorias>0){
  10.        $w.=" OR ";
  11.     }
  12.     echo $index;
  13.    
  14.  
  15.   }
  16.  }
  17. $sql_categorias=" SELECT id,name FROM categories $w LIMIT $numero_de_categorias ";

No creo que sea la mejor opción hacer esto, posible es, pero se lo quieres hacer con la base de datos creo que lo mejor seria crear una relación N:N, pero para hacerlo así, lo mejor seria que guardes directamente la lista de categorías tal cual la quieres mostrar o separada por comas en el campo category de la tabla users
__________________
Unset($vida['malRollo']);

Etiquetas: mysql, select, tabla
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 21:50.