Mostrar consulta de dos tablas diferentes
Publicado por Mauricio (4 intervenciones) el 08/10/2020 11:26:16
Antes que nada, soy nuevo en esto y aprendiendo estoy. Y por supuesto muchas gracias por el tiempo y la ayuda de antemano.
Tengo un problema para mostrar los datos de de dos tablas. Una tabla es de categorías (category) y otra es de publicaciones (post).
En la misma página debo mostrar primero unos botones que muestran cada categoría (y que el usuario puede editar con un CRUD) por lo tanto aparecen de acuerdo a la creación del usuario y tendría que traer de allí el nombre de la categoría.
En la misma página inmediatamente abajo, por un id deben aparecer los posts de cada categoría de acuerdo al #id de cada botón.
Problema: Puedo mostrar las categorias en los botones o puedo mostrar las publicaciones, pero al combinar las funciones en la misma página todo desaparece.
El código lo muestro a continuación:
PHP: para traer cada categoria
--------------------------------------------------------------
PHP para traer los posts
-------------------------------------------
Datos de la base
Tabla category:
columnas: id/name/description/active
Tabla posts:
columnas: id/category/title/post/price
(name de category y category de post coinciden)
-------------------------------------------------------
Código HTML donde debe aparecer
-------------------------------------------
Estar'e muy agradecido si alguien puede ayudarme y disculpas si aún no sé explicarme bien. Pero como he dicho estoy aún gateando en este tema.
Saludos!
Tengo un problema para mostrar los datos de de dos tablas. Una tabla es de categorías (category) y otra es de publicaciones (post).
En la misma página debo mostrar primero unos botones que muestran cada categoría (y que el usuario puede editar con un CRUD) por lo tanto aparecen de acuerdo a la creación del usuario y tendría que traer de allí el nombre de la categoría.
En la misma página inmediatamente abajo, por un id deben aparecer los posts de cada categoría de acuerdo al #id de cada botón.
Problema: Puedo mostrar las categorias en los botones o puedo mostrar las publicaciones, pero al combinar las funciones en la misma página todo desaparece.
El código lo muestro a continuación:
PHP: para traer cada categoria
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
function categories(){
require_once('resources/connection.php');
$stmt = $con->prepare("SELECT name FROM category");
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows > 0){
$stmt->bind_result($name);
while($stmt->fetch()){
echo '
<a class="nav-link py-3 px-4" id="v-pills-cafes-tab" data-toggle="pill" href="#v-pills-'.$name.'" role="tab" aria-controls="v-pills-cafes" aria-selected="true"><span class="flaticon-meat"></span>'.$name.'</a>
';
}
echo '';
}
else{
echo '
';
}
$stmt->free_result();
$stmt->close();
$con->close();
}
--------------------------------------------------------------
PHP para traer los posts
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
64
65
66
67
68
69
70
71
72
73
74
75
function AllPosts(){
require_once('resources/connection.php');
$active = true;
$stmt = $con->prepare("SELECT id, category, title, created_by, created_at, post, price, image FROM posts WHERE active = ? ORDER BY created_at DESC");
$stmt->bind_param("s", $active);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows > 0){
$stmt->bind_result($id, $category, $title, $created_by, $created_at, $post, $price, $image);
while($stmt->fetch()){
$post = substr($post, 0, 200);
$post = substr($post, 0, strrpos($post, ' ')).'...<a href="post.php?post='.$id.'">Leer más</a>';
echo '
<div class="col-lg-6">
<div class="menus d-flex ftco-animate">
<div class="menu-img" style="background-image: url('.$image.');"></div>
<div class="text d-flex">
<div class="one-half">
<h3>'.$title.'</h3>
<p><span>'.$post.'</span></p>
</div>
<div class="one-forth">
<span class="price">'.$price.'€</span>
</div>
</div>
</div>
</div>
';
}
}
else{
echo '
';
}
$stmt->free_result();
$stmt->close();
$con->close();
}
-------------------------------------------
Datos de la base
Tabla category:
columnas: id/name/description/active
Tabla posts:
columnas: id/category/title/post/price
(name de category y category de post coinciden)
-------------------------------------------------------
Código HTML donde debe aparecer
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
<div class="nav nav-pills justify-content-center ftco-animate" id="v-pills-tab" role="tablist" aria-orientation="vertical">
<a class="nav-link py-3 px-4 active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true"><span class="flaticon-meat"></span> Main</a>
<a class="nav-link py-3 px-4" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-profile" role="tab" aria-controls="v-pills-profile" aria-selected="false"><span class="flaticon-cutlery"></span> Dessert</a>
<a class="nav-link py-3 px-4" id="v-pills-messages-tab" data-toggle="pill" href="#v-pills-messages" role="tab" aria-controls="v-pills-messages" aria-selected="false"><span class="flaticon-cheers"></span> Drinks</a>
</div>
<div class="tab-content py-5" id="v-pills-tabContent">
<div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">
<div class="row">
<div class="col-lg-6">
<div class="menus d-flex ftco-animate">
<div class="menu-img" style="background-image: url(images/dish-3.jpg);"></div>
<div class="text d-flex">
<div class="one-half">
<h3>Grilled Beef with potatoes</h3>
<p><span>Meat</span>, <span>Potatoes</span>, <span>Rice</span>, <span>Tomatoe</span></p>
</div>
<div class="one-forth">
<span class="price">$29</span>
</div>
</div>
</div>
</div>
</div>
</div>
-------------------------------------------
Estar'e muy agradecido si alguien puede ayudarme y disculpas si aún no sé explicarme bien. Pero como he dicho estoy aún gateando en este tema.
Saludos!
Valora esta pregunta


1