Sinon, quitte à tout charger dès le départ, ne t'embête pas avec un tableau javascript, génère juste plusieurs <div> à la suite en display none, et affiche celui demandé par l'utilisateur. Ca demandera bien moins de ressources au navigateur

Non !
Vraiment, un conseil, tu veux remplir dynamiquement des éléments HTML avec des données qui sont dans ta base de données, donc tu auras besoin d'un module PHP A CE MOMENT LA !
Et pas avant !
Remplir 100% des infos pour ensuite les masquer/afficher en fonction du lien sur lequel on clique, ça revient à + de HTML inutile dans la page, et à + de ressources SQL perdues inutilement !
La meilleure marche à suivre reste donc comme te l'a dit Ryle de passer par de l'AJAX.
Voici en gros la procédure :
1/ Clique sur un lien déclenche une requête AJAX faite via Javascript
2/ Le Javascript va donc appeler une page PHP
3/ Celle ci va renvoyer du code, ici c'est en fonction de ce que tu préfères si tu débutes là dedans, le mieux étant d'envoyer un template HTML déjà rempli via ton PHP, mais tu peux aussi n'envoyer que les données et remplir avec Javascript.
4/ On insère la réponse envoyée par PHP dans le HTML qu'on a actuellement.
Du coup, on aura que la requête qui nous intéresse qui sera lancée, seulement quand on en aura besoin, et qui ne remplira que l'endroit que nous voulons afficher.
Eviter à tout prix les multiples <div> pré remplies avec un jeu de display:none/block.