Bez wykorzystania technik AJAXowych nie masz jak wysłać jedynie zawartości diva. Musisz przeładować stronę (czyli wysłać całą jej zawartość od nowa). To jak tą zawartość budujesz to już twoja sprawa. Możesz i powinieneś wyizolować elementy stałe strony takie jak nagłówek, stopka i menu i dążyć do tego aby zarządzanie tymi elementami polegało na wywołaniu jak najmniejszej ilości poleceń. Do tej całej otoczki, w zależności od tego jakie akcje wykonał użytkownik możesz podłączać różne treści.
Tutaj już zahaczamy o szablony które mam nadzieje stosujesz. Jeśli nie, powinieneś czym prędzej zacząć. Oprócz tego że ułatwiają one znacznie prace z kodem dzieki rozdzieleniu kodu php od html bardzo często posiadają też mechanizmy cache-owania wyświetlanych zawartości.
Jeśli możesz swoją stronę podzielić na nagłówek, content i stopke to powinno to wyglądać tak (przykład ze Smarty, najpopularniejszego choć nie najlepszego systemu szablonów):
index.html
{include file="head.html"}
Zawartość strony
{include file="footer.html"}
footer.html
<div class="footer">Stopka
</div>
header.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- Dowolne meta tagi, cssy, skrypty -->
A wyświetlenie całej zawartości dokonujemy przez wywołanie w skrypcie php $smarty->display('index.html'); gdzie $smarty to obiekt klasy Smarty o której szczegółowe informacje znajdziesz
tutaj.Nie trudno się domyśleć że wynikiem tego będzie:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- Dowolne meta tagi, cssy, skrypty -->
Zawartość strony
<div class="footer">Stopka
</div>
Co prawda tak jak wcześniej pisałem wysyłać musimy całą stronę aby zmienić diva ale teraz zmieniamy jedynie zawartość pliku index.html. Nagłówek i stopka również są wysyłane ale nie obchodzi to nas. Wiemy tylko tyle że je wyświetlamy i że te elementy są takie same dla wszystkich naszych stron. Jeśli zechcemy je zmienić, modyfikujemy jedynie plik footer.html albo header.html i na wszystkich naszych stronach zmiany będa wprowadzone. Zawsze należy dążyć do tego abyś nigdy nie przyłapał się do kopiowania części kodu i wklejania go w inne miejsce.
No i na koniec musisz zrozumieć jedną fundamentalną rzecz: skrypt php wykonuje się po stronie servera (gdzieś w zimnej serverowni, w gąszczu mrugających światełek i poplątanych kabli, zdala od twojego domu najczęściej). Kliknięcie na link (na przykład) powoduje wysłanie do servera rządania. Server je analizuje i wysyła zupełnie nową stronę(w całości). Raz wysłana strona nie może już zostac modyfikowana przez cokolwiek co znajduje się na serverze, w tym przedewszystkim skrypt php. Może zostać jedynie wysłane do servera rządanie otrzymania innej, nowej strony i wtedy server ją tworzy i wysyła. Stara strona zostaje zastąpiona
w całości przez nową.
Javascript z koleii działa po stronie klienta (komputer oglądającego stronę) i dzięki temu możesz dość dowolnie modyfikowac całą zawartość strony za jego pomocą. Dopiero połączenie mechanizmów działających po stronie klienta i tych po stronie servera daje to czym wszyscy ostatnio się tak zachwycają, czyli możliwość dynamicznego budowania stron www bez przeładowania szumnie nazywaną AJAX-em. Pamiętam że kiedy pierwszy raz zetknełem się z tymi technikami chciałem wrócić do wszystkich poprzednich skryptów jakie napisałem i zaimplementowac je tam. Uwierz mi, to tylko chwilowe zauroczenie. W większości przypadków lepiej wychodzi się na normalnym programowaniu stron, zwłaszcza jeśli na wykonanie zlecenia masz określony czas a klient nie zaznaczył że ma się ładować bez przeładowania.