Codul PHP este executat pe server iar datele de iesire sunt transmise la navigatorul web.
Codul scriptului JavaScript este executat de browser pe calculatorul utilizatorului.
Combinand aceste doua limbaje de programare web, se pot obtine scripturi JavaScript dinamice, cu rezultate in functie de datele primite si procesate de server. Astfel, aceeasi pagina de site poate contine un cod JavaScript pentru un utilizator si alt cod JS in cazul altui utilizator.
- Sunt 2 modalitati de a combina JavaScript cu PHP ca sa se obtina un rezultat dinamic sau personalizat:
<?php- Atentie, trebuie sa tineti cont de modul de lucru al ghilimelelor din cod, astfel incat ceea ce va fi returnat de "echo" sa fie un script JS ca si cum a fost scris in codul HTML.
echo '<script type="text/javascript"> // Cod JS </script>';
?>
<script type="text/javascript">
var var_js = <?php echo $var_php; ?>;
</script>
De exemplu, intr-o pagina web cu sistem de autentificare sa fie afisata o fereastra Alert cu numele utilizatorului dupa ce s-a autentificat.
In acest caz presupunem ca numele de utilizator e stocat intr-o variabila de sesiune: $_SESSION['nume'].
Folosind prima metoda, codul PHP ar fi urmatorul:
<?php
session_start(); // Aceasta functie trebuie scrisa la inceputul fisierului php
// Cod php ...
echo '<script type="text/javascript">alert("Bine ai venit '. $_SESSION['nume']. '");</script>';
?>
<?php session_start(); // La inceputul paginii html ?>- O astfel de fereastra Alert poate fi utila in cazul notificarii utilizatorului despre date ce pot fi extrase de PHP dintr-o baza de date sau fisier, cum ar fi instiintarea unui nou mesaj privat.
<!-- Cod HTML -->
<script type="text/javascript">
alert("Bine ai venit <?php echo $_SESSION['nume']; ?>");
</script>
Un ceas facut si afisat in pagina cu JavaScript va afisa ora de la calculatorul vizitatorului. Daca se doreste afisarea unei aceleasi date (de pe server) pentru toti vizitatorii, cum ar fi in cazul unor jocuri, trebuie adaugat in scriptul JS timpul serverului, dupa cum e si in urmatorul exemplu:
<div id="tag_ora"></div>- Testati singuri pt. a vedea rezultatul
<script type="text/javascript">
<!--
// Script ora server-time, de la http://www.discant.ro
// Preia data serverului prin PHP
var serverdate = new Date(<?php echo date('y,n,j,G,i,s'); ?>);
// Defineste variabilele JS de lucru
var ore = serverdate.getHours() // Preia ora
var minute = serverdate.getMinutes() // Preia minutele
var secunde = serverdate.getSeconds() // Preia secundele
// Functia de prelucrare si afisare a datelor
function ceas() {
secunde++;
if (secunde>59) {
secunde = 0;
minute++;
}
if (minute>59) {
minute = 0;
ore++;
}
if (ore>23) {
ore = 0;
}
var output = "<font size='4'><b><font size='1'>Ora server</font><br />"+ore+":"+minute+":"+secunde+"</b></font>"
document.getElementById("tag_ora").innerHTML = output;
}
// Apeleaza functia la incarcarea paginii si la fiecare secunda
window.onload = function(){
setInterval("ceas()", 1000);
}
//-->
</script>
Ati vazut in site-urile pt. trafic sau afisare banner ca e necesar adaugarea in pagina a unui mic cod JS cu o anume adresa URL la atributul "src".
Acestea folosesc acelasi principiu, de combinare PHP cu JavaScript.
Adresa din codul ce trebuie adaugat in pagina apeleaza un script PHP, acesta preia cu $_GET parametri din adresa URL primita si in functie de acestia prelucreaza datele pe server si construieste pentru returnarea rezultatului un cod JavaScript si HTML (fara tagul <script>) care va determina afisarea in pagina (cu document.write, sau innerHTML intr-un anume tag) a unui cod HTML pt. banner, trafic, top, ... etc.
Ca sa intelegeti mai bine, experimentati urmatorul exemplu:
a) Creati pe server un fisier php, cu denumirea "phpjs_test.php", si adaugati urmatorul cod:
<?php
// Exemplu test, de la http://www.discant.ro
// Creaza o matrice cu denumiri
$ids = array(1=>'php-mysql', 2=>'javascript', 3=>'html');
// Preia id-ul de la adresa URL
// Va returna cu echo un link (cu denumirea asociata din matrice) intr-un cod specific JavaScript (document.write)
if (isset($_GET['id'])) {
if ($sir = $ids[$_GET['id']]) {
// Va determina afisarea unui link in pagina apelanta
echo 'document.write("<a href=\'http://www.discant.ro/'. $sir. '\'>Curs '. $sir. '</a>");';
}
}
?>
<script type="text/javascript" src="phpjs_test.php?id=2"></script>