Publicarea datelor din baza de date pe web de George Nicolae Daca in lectia precedenta am vorbit despre baza de date acum a venit timpul
sa afisem datele stocate intr-o forma "comerciala". Cei dintre voi care au avut
curiozitatea sa incerce exemplele din lectia precedenta au observat ca
rezultatul query-urilor sunt afisate intr-un tabel, lucru nu foarte estetic. Mai
mult decat atat un browser web nu se poate lega direct la servarul MySQL, nu
poate trimite query-uri si nu poate afisea rezultatul returnat de acestea. Un
browser web nu poate decat sa afiseze pagini HTML. Si de aceea aici avem nevoie
de PHP, care se poate conecta la MySQL, poate trimite interogari si poate afisea
rezultatul interogarior in format HTML, format inteles de un browser web.
Principiul de functionare este cel descris in figura 1.
Sa detaliem un pic. Browserul web vrea sa afiseze o pagina. El cere aceasta
pagina serverului web, care vazand ca este o pagina de tip PHP o trimite spre
prelucrare modulului de PHP instalat. Acesta interpreteaza codul, vede ca sunt
cerute date din baza de date, se conecteaza la aceasta, le obtine si genereaza
codul html pentru afiserea lor. Astfel pagina generata este servita browserului
care o afiseaza. Sa parcurgem in detaliu toate aceste etape.
conectarea PHP la MySQL
Conectarea la MySQL se face printr-o functie PHP, mai exact:
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Nu se poate conecta");
?> |
Functia
mysql_connect se conecteaza la MySQL folosind ca parametri adresa
serverului unde ruleaza MySQL (daca il aveti instalat pe propriul calculator
aceasta ar trebui sa fie localhost), user-ul (daca il aveti instalat pe
propriul calculator aceasta ar trebui sa fie root) si parola (daca il
aveti instalat pe propriul calculator aceasta ar trebui sa nu existe).
Deci exemlul de mai sus particularizat pentru cazul in care aveti MySQL instalat
pe proriul calculator:
<?php
$link = mysql_connect("localhost", "root", "")
or die("Nu se poate conecta");
?> |
Functia
die
nu face altceva decat sa afiseze mesajul si sa nu mai execute nici un cod dupa.
Variabila $link reprezinta un identificator pentru aceasta conxiune (pentru
ca ne putem conecta simultan la mai multe server MySQL).
Numai conectarea nu este suficienta. Trebuie sa-i spunem servarului MySQL ce
baza de date dorim sa folosim. Pentru a exemplifica vom folosi baza de date de
la
lectia 5.
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Nu se poate conecta");
mysql_select_db("anunturi", $link) or die("nu
se poate alege baza de date");
?> |
Observati ca functia
mysql_select_db este cea care ii transmite serverului MySQL ce baza de
date vrem sa folosim.
trimiterea de interogari cu PHP
Vom contiuna sa folosim ca exemplu practic baza de date de la
lectia 5. Sa presupunem ca dorim sa schimbam data celui de-al doilea anunt.
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Nu se poate conecta");
mysql_select_db("anunturi", $link) or die("nu
se poate alege baza de date");
$query = "UPDATE
anunturi SET data_anunt = '2003-05-10' WHERE id =2";
$result = mysql_query($query) or die("Query
failed");
?> |
Functia
mysql_query este cea care transmite serverului MySQL query-ul pe care
dorim sa-l executam ca string. Variabila $query cintine in acest caz un
string ce reprezinta query-ul nostru de update. Se pot astfel executa orice fel
de query-uri, dar probabil cele mai importante sunt cele care selecteaza si
afiseaza informatii din baza de date, asa cum vom vedea in paragraful urmator.
manipularea rezultatelor selectate
Poate una dintre cele mai importante lucruri pe care le puteti
face cu combinatia PHP - MySQL este sa selectati si sa afiseati informatile din
baza de date. Sa luam un exemplu concret si sa-l discutam:
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Nu se poate conecta");
mysql_select_db("anunturi", $link) or die("nu
se poate alege baza de date");
$query = "select
* from anunturi";
$result = mysql_query($query) or die("Query
failed");
while ($myrow = mysql_fetch_array($result)) {
echo "<b>Anunt:</b> ".$myrow["text_anunt"]."<br><b>Data:</b>
".$myrow["data_anunt"]."<br><br><br>";
}
?> |
Functia nou introdusa in exemlul nostru este
mysql_fetch_array functie ce nu face decat sa ia pe rand (pana se
termina) fiecare rand (inregistrare) returnat de query si sa o introduca intr-un
vector ($myrow). Puteti observa ca, cheile acestui vector sunt chiar
numele campuriolor din tabela noastra.
introducerea de noi date in baza de date
Si acum sa incercam sa realizam o metoda practica de a introduce
noi anunturi in baza noastra de date. Ati invatat despre formulare la
lectia 4. Daca nu ati parcurs-o deja ca invit sa o faceti inainte de a
continua pentru a putea intelege pe deplin urmatoarele exemple.
Vom folosi un fisier (html) in care va exista un formular unde vom introduce
anunturile sa-l numim 6_form.htm. El are urmatorul continut:
<html>
<head>
<title>Adaugare in baza de date</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" method="post" action="6_insert.php">
<strong>anunt:</strong>
<input type="text"
name="anunt" id="anunt">
<br>
<strong>data:</strong>
<input type="text" name="data"
id="data">
(in format aaaa-ll-zz)<br>
<input type="submit" name="Submit" value="adauga">
<input type="reset" name="Submit2" value="reset">
</form>
</body>
</html>
|
Prin intermediul acestui fisier se pot introduce anuntul si data la care a
fost publicat.
Acum cel de-al doilea fisier (de data asta de tip php) care va prelua datele din
formularul precedent si le va introduce in baza de date. Sa-l numim
6_insert.php.
html>
<head>
<title>Adaugare in baza de date</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Nu se poate conecta");
mysql_select_db("anunturi", $link) or die("nu
se poate alege baza de date");
$query = "INSERT
INTO anunturi SET text_anunt='".$_POST["anunt"]."',
data_anunt='".$_POST["data"]."'";
$result = @mysql_query($query);
if ($result) echo "anuntul
a fost indrodus cu succes. <a href=\"6_form.htm\">introduceti alt anunt?</a>";
else
{
echo "eroare. anuntul nu a putut fi
introdus";
exit();
}
?>
</body>
</html>
|
In acest fisier se introduc informatiile in baza de date si se afiseaza daca
a intervenit vreo eroare.
Puteti descarca o arhiva cu ambele fisier de
aici.
Sus |