PHP - Las Relaciones entre SubCategoria y Productos

 
Vista:
sin imagen de perfil

Las Relaciones entre SubCategoria y Productos

Publicado por Michael (4 intervenciones) el 03/11/2013 20:01:56
Buenas, es mi primer post en esta Comunidad y esque tengo una duda rondando. Y es que necesito mostrar los productos con su subcategoria correspondiente, os dejo un imagen de lo que mas o menos es lo que deseo mostrar. Pero la duda reside en que no se donde aplicarle el otro while que le falta ademas de como hacer para que haga un bucle dentro de la subcategoria para mostrar todos los productos, pero esta a su vez esta haciendo otro bucle de subcategoria para mostrarlas.
Madre mia que cacao que tengo

http://www.subeimagenes.com/img/crokis-766936.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
if(isset($_GET["Csel"])){
    //Seleccion de Familia a SubFamilia 
    //----------------------------------         
        $idCateFamily = intval($_GET["Csel"]); #Guardamos en Numero Entero la Categoria Seleccionada 
 
        $sqlSubCate = "SELECT * FROM subfamilias WHERE idFamilia = $idCateFamily ORDER BY S_Nombre";
        $resSubCate = mysqli_query($idcon, $sqlSubCate);
 
        if(mysqli_num_rows($resSubCate) >=1){
            while($filaSubCat = mysqli_fetch_assoc($resSubCate)){
                $losProductos .= '<div style="width:100%;height:35px;background-color:#FF2215;">'.$filaSubCat["S_Nombre"].'</div>';
 
                $IdentSubCatego = $filaSubCat["idSubFamilia"];
                $sqlSubF = "SELECT * FROM productos WHERE idSubFamilia = $IdentSubCatego";
                $resSubF = mysqli_query($idcon, $sqlSubF);
                $filaCat = mysqli_fetch_assoc($resSubF);
                print_r($filaCat);
                if($filaSubCat["idSubFamilia"] == $IdentSubCatego){
                    $losProductos .= '<div style="float:left;width:31%;padding:5px;">
                            <div style="min-height:15%; margin:4px 2px;position:relative;" id="checklist_Supermer"> 
                                <div style="width:100%; min-height:30%; border:solid 1px #cacaca;" id="meng">                                 
                                    <img class="image-decoration" src="'.$filaCat["Imagen"].'" alt="'.$filaCat["Nombre_P"].'" />
                                </div> 
                                <div style="margin:auto; width:90%; height:45px;display:block;"> 
                                  <div style="width:10%; height:100%; float:left;"> 
                                    <input type="checkbox" class="css-checkbox" name="productCheck[]" id="ComprobarCheck[]" value="'.$filaCat["idProducto"].'" />
                                  </div> 
           
                                  <div style="width:90%; height:100%; float:left; text-align:center;"> 
                                          <p style="font-size:9px;">'.$filaCat["Nombre_P"].'</p>
                                  </div> 
                                </div> 
                                <input type="hidden" name="protid" value="' . $filaCat["idProducto"] . '" />
                            </div> 
                        </div>';
                }else{
                    $losProductos .= 'No hay Sub-categorias y ni Productos';
                }
            }
        }

Base Datos:
Productos
-idCategoria
-idSubcategoria
-NombreProducto
-FotoProducto
-DatosProducto

Categoria
-idCategoria
-NombreCategoria

SubCategoria
-idCategoria
-idSubcategoria
-NombreSubcategoria
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Las Relaciones entre SubCategoria y Productos

Publicado por Elier (92 intervenciones) el 04/11/2013 17:26:14
Hola Michael.

Trata de separar el estilo del código hmtl así podrás pensar mejor en como generar el html primero y luego en un archivo .css podrás darle los estilos a cada elemento mediante clases.

Lo otro es que puedes unir las tablas como si fueran una sola mediante un JOIN de esa manera solo harás una consulta a la BD.

Aquí te pongo este código, revísalo y ajustalo a tu manera para ver si te funciona.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
if(isset($_GET["Csel"]))
{
 
  	 // Id de la Categoria de que queremos obtener los productos
  	 $idCategoria = intval($_GET["Csel"]);
 
  	 /* Hacemos un Join para que el resultado tenga ademas el  
	  Nombre de la SubCategoria a la que pertenece */
 
	 $sqlQueryJoin = "SELECT p.*, s.NombreSubcategoria ".
	                 "FROM productos as p INNER JOIN SubCategoria as s ".
	                 "ON p.idSubcategoria = s.idSubcategoria".
	                 "WHERE idCategoria = $idCategoria ".
	                 "ORDER BY idSubcategoria DESC";
 
  	 $resultado = mysqli_query($idcon, $sqlQueryJoin);
  	 if(mysqli_num_rows($resultado) >=1 )
  	 {
  	     $subCategoria = 0;	// Garantizar que la primera vez se imprima el encabezamiento
  	 	 while($producto = mysqli_fetch_assoc($resultado))
  	 	 {
             // Si cambia la categoria entonces imprimimos el encabezamiento  	 	 	
             if ($subCategoria  != $producto['idSubcategoria'])
			 {
			 	$subCategoria = $producto['idSubcategoria'];
				echo '<div class="subcategoria">'.$producto['NombreSubcategoria'].'</div>';
				$productos_div = true;
				echo '<div class ="productos">';
			 }
 
			 // Imprimimos la informacion de cada producto
			 echo '<div>'.
				      '<img class="image-decoration" src="'.$producto['Imagen'].'" alt="'.$producto['NombreProducto'].'" />'.
				      '<br>'.
				      '<div class="producto_check">'.
					  	'<input type="checkbox" class="css-checkbox" name="productCheck[]" id="ComprobarCheck[]" value="'.$producto['idProducto'].'" />'.
					  '</div>'.
					  '<br>'.
					  'div class="producto_nombre">'.
					  	'<p>'.
							$producto['NombreProducto'].
						'</p>'.
					  '</div>'.
					  '</div>'.
						'<input type="hidden" name="protid" value="' . $producto['idProducto'] . '" />'.
					  '</div>'.
			 	  '</div>';
 
			 // si cambio la categoria entonces imprimimos el cierre del encabezamiento
			 if($productos_div)
			 {
			 	echo '</div>';
				$productos_div = false;
			 }
		 }
	}
	else
	{
		echo 'No hay Sub-categorias y ni Productos';
	}
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Las Relaciones entre SubCategoria y Productos

Publicado por Michael (4 intervenciones) el 05/11/2013 19:04:59
Elier, muchísimas gracias por la ayuda. No se como podría agradecértelo men. Si fueses de Valencia te invitaba a un par de cervezas.

Me has ayudado un montón muchas gracias de nuevo.

Un Saludo Fumatamax

P.D: Acuérdate de las Cervezas si eres de valencia...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Las Relaciones entre SubCategoria y Productos

Publicado por Elier (92 intervenciones) el 05/11/2013 22:15:04
No, no soy de valencia. De todos modos gracias por la Cerveza.

Me di cuenta que con el codigo anterior solo se mostraran las subcategorias que tengan productos, las que no tiene no salen, si quieres que salga la subcategoria y debajo que no tiene productos se podría modificar el codigo para obtener las subcategorias que pertenecen a esa categoria ordenadas por ID, y luego tomamos el id de la primera subcategoria y lo comparamos con el idSubcategoria de los productos, así se mostarían todas las subcategorías hasta para las que no hay ningun producto.

Cualquier duda busca en programadores http://www.lawebdelprogramador.com/programadores/ por Elier Pelaez y enviame un mensaje con tu email, por esa vía será más fácil ayudarte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar