He creado una tabla en una base de datos con las siguientes columnas:
Table: union
exercise_id_fk tag_id_fk
1 1
1 2
2 1
2 3
Lo que pretendo con mi programa es que un usuario debe elegir las etiquetas que desee para que se muestre en pantalla el ejercicio que corresponde con las etiquetas elegidas. Por ejemplo si el usuario elige la etiqueta 1, le aparecerán los ejercicios 1 y 2. Si elige las etiquetas 1 y 3, le aparecen los ejercicios 1 y 2.
El problema de mi programa es que cuando el usuario elige por ejemplo la etiqueta 1 y 3, aparecen los ejercicios 1 y el 2 repetido. O cuando elige la etiqueta 1 y 2, aparece el ejercicio 1 repetido.
Alguno sabe alguna forma para que esto no ocurra? Que solo se muestren los ejercicios una vez?
Aquí muestro parte de mi código:
Código:
$sql = "SELECT * FROM exercises, union, tags where exercise_id = exercise_id_fk and tag_id = tag_id_fk";
if (!empty($_SESSION['tags_array'])) {
$sql .= " and (";
foreach ($_SESSION['tags_array'] as $tagId)
$sql .= 'tag_id = ' . $tagId . ' or ';
$sql .= "tag_id = -1);";
}
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
echo $row["exercise_id"] . ". " . $row["title"] . "<br>";
}