dynamiczna strona php

0

witam chciałbym zrobić strone w której nie bedzie przełądowywana cała strona a jedynie jej treści i np pojędyncze divy np aby po kliknięciu na jakiś link żeby nagłowek w ogóle sie nie przeładowywał

a po zalogowaniu uzytkownika znikoł link logowanie i pojawily sie w nagłówku inne linki

1

Hehe, cieszymy sie, ze pochwaliles sie swoimi zamiarami. Ale o co konkretnie pytasz? :)

Jezeli chodzi o pierwsza czesc twojego postu, to chodzi ci zapewne o AJAX. Najprosciej bedzie to zrealizowac przy pomocy JavaScript, z uzyciem biblioteki jQuery. W dokumentacji znajdziesz przyklady uzycia $.get, $.post, czy $.ajax.

0

Jeżeli chodzi o AJAXa i łączenie się z serwerem "za kurtyną" to z pomocją książek napisałem taką funkcję i jej używam.

Kod JS:

var ds_post; // adres pliku z którym ma się połączyć np "./plik.php" lub "http://adres.pl/plik.php"
var divid_post; // ID DIV-u lub innego znacznika HTML
var vars_post; // dane jakie mają być wysłane metodą POST

function gd_post(ds_post, divid_post, vars_post)
{
	var xhml_post = false;
	if(window.XMLHttpRequest)
	{
		xhml_post = new XMLHttpRequest();
	} else if(window.ActiveXObiect)
	{
		xhml_post = new ActiveXObject('Microsoft.XMLHTTP');
	}
	
	if(xhml_post)
	{
		var obj_post = document.getElementById(divid_post);
		xhml_post.open("POST", ds_post);
		xhml_post.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		xhml_post.onreadystatechange = function()
		{
			if(xhml_post.readyState==4&&xhml_post.status==200)
			{
				obj_post.innerHTML = xhml_post.responseText;
				delete xhml_post;
				xhml_post = null;
			}
		}
		xhml_post.send(vars_post);
	}
}

W praktyce będzie wyglądało to np.:
Kod PHP:

// Pomijam znaczniki META HEAD itp
<script src='plik_z_powyzszym_kodem.js' language='JavaScript'>
var interval1;
interval1 = setInterval(function() { gd_post('plik.php', 'online_users', 'dane=jd&online_users');}, 1000);
</script>
<?php echo "Witaj, kliknij na link aby zobaczyć treść newsa:<br>
<a href=\"#\" onclick=\"gd_post('plik.php', 'div', 'a=0&b=1&name=Imię'); return false;\">To jest ten link</a>
<br>
<div id='div'></div>
<br>
Użytkownicy online:<div id='online_users'>0</div>
?>";

Powyższy kod wyświetla teść newsa po kliknięciu na link i co sekundę aktualizuje DIV z liczbą urzytkowników online. I to wszystko bez odświetzania strony.

Jeżeli chciałbyś aby ajax "wpisywał" Ci coś do znacznika np <input type="text" id="inp">
to piszesz podobną funkcje js z tym, że zamiast "obj_post.innerHTML = xhml_post.responseText;"
piszesz "obj_post.value = xhml_post.responseText;".

U mnie działa baz zarzutów, cały czas z tego korzystam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1