Bonjour,
Voici plusieurs semaines que je m'auto initie à l'html, au css et au php… Pour le travail et pour le plaisir.
En revanche, je n'ai aucune connaissance de Java.
Je bute depuis quelques jours sur un problème, je sens que je "tourne autour du pot" mais je piétine et ça m'agace, j'ose donc demander de l'aide…

J'ai 2 tables: nommées "imprimes" & "imprimes_themes"
upload/1529673373-71125-capturetableimprimes.png
upload/1529673448-71125-capturetableimprimestheme.png

1 thème contient des rubriques (différentes pour chaque thème)
1 rubrique contient des titres ((différents pour chaque rubrique)
Chaque titre correspond à 1 fichier.

Ma page d'accueil "page_themes.php "affiche les thèmes grâce à une requête sur la bdd (Je n'en ai mis que 2 pour l'explication)
upload/1529673479-71125-captureaffichagepartieldepage.png

J'aimerais qu'en cliquant sur un des thèmes une seconde page "toutes_les_rubriques.php" s'ouvre qui affiche les rubriques liées à ce thème. (Ex avec les rubriques du thème "Docs internes"
upload/1529673514-71125-captureaffichagededocsinterne.png

Ma seconde page doit-elle contenir une requête rapatriant de la bdd toutes les rubriques ?
upload/1529673575-71125-capturerequetetouteslesrubriq.png

ou plusieurs requêtes (une pour chaque thème) ?
upload/1529673614-71125-capturedoublerequete.png

Dans les deux cas, il faut que j'écrive dans "page_themes.php" que je veux pointer vers une autre page en fonction du nom du thème sur lequel je clique….et ça je n'y arrive pas…
upload/1529673644-71125-capturephpaffichagethnmes.png

Pourriez-vous me guider s'il vous plait?
Merci d'avance.
Modifié par Chambourlette (22 Jun 2018 - 15:22)
Tu dois interroger la base de données 3 fois :
- pour la liste des thèmes
- pour la liste des rubriques selon le thème choisi
- pour la liste des fichiers selon la rubrique et le thème choisis

Un fois cela compris, tu dois arriver à quelque chose comme ceci :
<?php /* fichier config.php */ ?>
<?php
const DSN = 'mysql:host=localhost; dbname=xxxxx;charset=utf-8';
const LOGIN = 'mon-login';
const PASSSWD = 'passwd';
?>

<?php /* fichier: themes.php */ ?>
<!-- On doit choisir un thème --->
<h1>Thémes</h1>
<?php
include 'config.php';
try {
    $bdd = new PDO(DSN, LOGIN, PASSWD); 
    $reponse = $bdd->query('select id_theme, theme from imprimes_themes order by theme;');
    if($reponse !== false) {
?>
    <ul>
<?php
    foreach($reponse as $row) {
        echo <<< ROW
        <li><a href="rubriques.php?id_theme={$row['id_theme']}">{$row['theme']}</a></li>\n
ROW;
    }
?>
    </ul>
<?php
        
    }
    
} catch (Exception $e) {
    die('Erreur '.$e->getMessage());
}
?>

<?php /*  fichier rubriques.php */ ?>
<!-- On doit choisir une rubrique -->
<h1>Rubriques</h1>
<?php
if(!empty($_GET['id_theme'])) {
    include 'config.php';
    try {
        $bdd = new PDO(DSN, LOGIN, PASSWD); 
        $reponse = $bdd->query('select distinct rubrique from imprimes where id_theme = '.$_GET['id_theme'].'order by theme;');
        if($reponse !== false) {
?>
    <ul>
<?php
            foreach($reponse as $row) {
                echo <<< ROW
        <li><a href="fichiers.php?id_theme={$_GET['id_theme']}&rubrique={$row['rubrique']}">{$row['rubrique']}</a></li>\n
ROW;
            }
?>
    </ul>
<?php
        }
    } catch (Exception $e) {
        die('Erreur '.$e->getMessage());
    }
} else {
        echo "<p>Vous devez choisir un thème</p>\n";
}
?>

<?php /*  fichier fichiers.php */ ?>
<!-- On doit choisir fichier -->
<h1>Rubriques</h1>
<?php
if(!empty($_GET['id_theme']) and !empty($_GET['rubrique'])) {
    include 'config.php';
    try {
        $bdd = new PDO(DSN, LOGIN, PASSWD);
        $query = <<< QUERY
select titre, fichier from imprimes where
    id_theme = {$_GET['id_theme']} and
    rubrique = '{$_GET['rubrique']}'
    order by titre;
QUERY;
        $reponse = $bdd->query($query);
        if($reponse !== false) {
?>
    <ul>
<?php
            foreach($reponse as $row) {
                echo <<< ROW
        <li><a href="{$row['fichier']}">{$row['titre']}</a></li>\n
ROW;
            }
?>
    </ul>
<?php
        }
    } catch (Exception $e) {
        die('Erreur '.$e->getMessage());
    }
} else {
        echo "<p>Vous devez choisir une rubrique</p>\n";
}
?>

Pour éviter de trop attendre après le serveur, on peut regrouper les fichiers themes.php et rubriques.php mais il faut alors utiliser Javascript pour modifier la page HTML dans le navigateur.
C'est plus à titre d'exemple. Il n'y a aucun filtrage sur les données envvoyées par l'utilisateur et qui n'est pas forcément un bisounours
Bonjour "bazooka07",

Merci beaucoup pour ton aide. J'ai de nouveau de la matière pour avancer et dans mon apprentissage et dans la construction de mon intranet !
Pour l'instant je n'arrive pas à afficher le résultat des requêtes "rubriques" et "fichiers" mais je vais trouver... Un booléen peut-être.... ou de "if" ou de "else"..., j'ai de quoi faire des essais et ça c'est super!
Je pensais mettre le code php final qui fonctionne sur le forum afin que cela puisse servir à d'autres avant de marquer le sujet comme résolu ... est-ce la bonne façon de procéder ?