PHP wird serverseitig evaluiert, Javascript clientseitig. Der Unterschied ist, dass mit JS clientseitig auf dem (HTML)Objektbaum operiert werden kann, wohingegen nach dem Senden des Responses der Server keinen direkten Zugriff mehr auf diesen, und somit auch nicht auf das DOM hat.
Wenn du dynamisch Teile einblenden lassen möchtest, musst du im Falle von PHP über einen weiteren Request gehen, der via Request-Parameter angibt, dass ein bestimmter Teil eingeblendet werden soll:
PHP:
if (isset($_REQUEST['showmore'])) {
showMore();
}
Während es im Einsatz von Javascript sinnvoll ist, die entsprechenden Daten immer mitzugeben, und lediglich beim Laden des Dokuments die entsprechenden Teile auszublenden, und per Event wieder einzublenden. Hierzu empfiehlt sich übrigens der Einfachheit ein modernes JS-Framework wie jQuery oder Mootools. Ein kleines Beispiel für jQuery:
HTML:
<script type="text/javascript"><!--
$("table#mytable tbody").hide();
var eventActivator = $("<a />");
eventActivator
.text("klick mich")
.click(function() {
$("table#mytable tbody").toggleSlide("fast");
});
$("table#mytable").after(eventActivator);
// -->
</script>
<table id="mytable">
<thead>
<tr>
<th>Spalte 1</th>
<ht>Spalte 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>1.1</td>
<td>1.2</td>
</tr>
<tr>
<td>2.1</td>
<td>2.2</td>
</tr>
</tbody>
</table>
Die Strategie nennt sich übrigens unobtrusive Javascript - Wenn es nicht genutzt wird, beeinflusst es dennoch nicht die Nutzbarkeit. Letztere sollte immer im Vordergrund stehen. Ist das Ausklappen wirklich notwendig, oder nur ein nettes Feature um beispielsweise die Nutzbarkeit anderer Komponenten zu verbessern?