Documente Academic
Documente Profesional
Documente Cultură
Dezv Apl Web Ifr2 PDF
Dezv Apl Web Ifr2 PDF
APLICAŢIILOR
WEB
Bogdan Pătruţ
Laborator 1. Introducere
a) Ce inseamna o pagina web dinamica, care sunt diferentele fata de una statica?
La o pagina statica te uiti, la o pagina dinamica interactionezi in ambele sensuri.
b) Cum putem realiza o pagina web dinamica?
Folosind un mediu de programare web adecvat: Medii de programare web:
PHP/MySQL, ASP .NET, Flash – ActionScript, VB Script, JavaScript etc.
c) Ce presupune sa realizezi o pagina web sau un site dinamic?
Un calculator pe care sunt instalate urmatoarele 3 servere: server web (ca sa
recunoasca adrese gen http://....), un server PHP (ca sa poate interpreta programele
PHP) si un server pentru baze de date MySQL (pentru a putea accesa si prelucra
tabelele din bazele de date)
d) Cum putem sa instalam toate acestea?
Exista kitul all-in-one EasyPHP sau PHP Triad care le cuprinde pe toate trei. Le
cautam pe web cu Google si le descarcam si instalam pe calculatorul propriu.
e) OK, fac pagina web dinamica pe calculatorul meu, cum pot sa fac sa o vada
oricine?
Trebuie sa iti cumperi un domeniu (de exemplu www.exemplu.ro, de la www.rotld.ro
sau www.hostdomain.ro sau altii) sau sa inchiriezi unul de la cei care ofera gratis
(www.xhost.ro, www.3x.ro etc.) sau pe bani (www.vodafone.ro etc). Apoi, vei plati
lunar o taxa (in jur de 5 euro) si vei putea sa-ti depozitezi acolo site-ul tau si baza ta
de date (folosind protocolul FTP din programul Total Commander, de exemplu).
f) Un prim program PHP care va aduna doua numere
Vom crea doua fisiere: “index.html” si “suma.php”
In “index.html” vom avea un formular continand doua casete de text pentru cele doua
numere:
Observatii: exista doua metode de a trimite variabile de la fisierul HTML catre programul
PHP: POST si GET.
• Daca folositi metoda POST, atunci programul PHP recunoaste automat variabilele
din formularul HTML, dar variabilele din PHP se scriu cu simbolul “$” in fata.
De exemplu x din formular devine $x in PHP, y din formular devine $y in PHP.
Securitatea datelor este mai mica, variabilele pot fi preluate si de alte programe
rau intentionate.
• Daca folositi metoda GET, atunci puteti prelua in programul PHP variabilele din
formularul HTML, folosind $_GET[‘x’] si $_GET[‘y’]. Securitatea este mai
buna.
Programul PHP va genera un simplu fisier text, in care va afisa “Suma este: “ si suma.
Daca vrem ca sa generam o intreaga pagina web avem doua variante:
• Generare din cod PHP, folosind functia echo:
<?php
echo(“<html><head><title>Suma</title></head><body>”);
$suma=$x+$y;
echo("<p>Suma este: $suma");
echo(“</p></body></html>”);
?>
O alta varianta este crearea unui singur fisier “index.php”, care sa cuprinda atat
formularul pentru introducerea operanzilor, cat si codul PHP pentru calculat suma si apoi
se va reimprospata pagina respectiva.
Exercitii:
1) Descarcati de la www.php.net si de la www.mysql.com documentatiile (in limba
romana) ale celor doua produse (PHP, respectiv MySQL). Daca nu v-ati prins, functia
este “sqrt”. Cum se foloseste?
2) Cautati in documentatia PHP online sau in cea descarcata functia matematica pentru a
calcula radacina patrata a unui numar real pozitiv.
3) Realizati un formular HTML si un program PHP pentru a calcula
a) perimetrul unui triunghi
b) aria unui triunghi
avand lungimile laturilor a, b si c.
Folositi formula lui Heron pentru a calcula aria:
a+b+c
Aria = p ( p − a )( p − b)( p − c) , unde p este semiperimetrul: p = .
2
4) Realizati un formular HTML si un program PHP pentru a calcula cel mai mic dintre
doua numere:
a) folosind functia predefinita “min”;
b) folosind instructiunea de decizie “if”. Aceasta are forma ca in limbajul C.
Acest lucru - atât de popular - se poate realiza foarte usor in limbajul PHP in felul
urmator. Vom crea mai intâi un fisier text (VIZ.TXT) care sa contina doar valoarea 0
scrisa in el, apoi, la fiecare incarcare a paginii web (care va fi denumita "index.php" si nu
"index.html"!), programul PHP va citi valoarea aflata in fisier, o va incrementa (cu 1), o
va afisa, iar apoi o va salva in fisier, in locul vechii valori. Atentie! Atat fisierul
VIZ.TXT, cat si INDEX.PHP trebuie sa fie pe server!
Programul contine apelurile functiilor fopen - deschidere fisier text. Primul argument este
numele extern al fisierului, adica numele sau de pe disc, iar cel de al doilea argument este
modul in care se deschide fisierul. Astfel "r" este pentru citire, "w" pentru rescriere, iar
"a" pentru adaugare (append). O modalitate de a citi un numar intreg $x dintr-un fisier
asociat variabile $f este:
fscanf($f,"%d",$x);
Pentru a scrie in fisier, am apelat la o functie speciala, numita fputs, care scrie intr-un
fisier text un sir de caractere, dar conversia de la numar intreg la sir de caractere se
realizeaza automat. De fapt, limbajul PHP este foarte puternic in privinta conversiei
dintre date de diferite tipuri.
Exercitii:
1) Scrieti un program PHP care preia dintr-un formular HTML urmatoarele date din
CV-ul unei persoane (ex. numele, prenumele, adresa, numar de telefon, adresa de
e-mail, sexul, educatie, locuri de munca, pasiuni etc.) si le salveaza intr-un fisier
text.
Laborator 3. Prelucrarea datelor dintr-un formular
Programul face simple verificari asupra datelor introduse, semnalând eroare in cazul in
care lipsesc anumite câmpuri, declarate ca fiind obligatorii: numele, adresa de posta
electronica, disponibilitatea si numarul de telefon. De asemenea, folosind functia PHP
ereg se testeaza daca adresa de e-mail data ar putea fi reala (functia ereg este foarte
puternica, ea lucrând cu expresii regulate, despre care puteti afla mai multe din Internet,
chiar de la adresa www.php.net).
<?php
if (!$nume || !$email || !$disponib || !$telefon)
{
echo("<html><title>Eroare</title><body background='fond.jpg'>");
echo("<br><br>");
echo("<center><font size=+2 color='blue'>");
echo("Campurile marcate cu steluta sunt ");
echo("obligatorii!</font></center><br><br>");
echo("<p align='center'>");
echo("<a href='javascript:history.back()'>");
echo("<img src='previous.gif'></img></a></p>");
echo("</body></html>");
}
else
if (!ereg("^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+",$email))
{
echo("<html><title>Eroare</title>");
echo(<body background='fond.jpg'>");
echo("<br><br>");
echo("<center><font size=+2 color='blue'>");
echo("Eroare la adresa de e-mail</font></center><br><br>");
echo("<p align='center'>");
echo("<a href='javascript:history.back()'>");
echo("<img src='previous.gif'></img></a></p>");
echo("</body></html>");
}
else
{
// preiau datele si le stochez pe disc
echo("<html><title>Inscriere</title>");
echo("<body background='fond.jpg'>");
echo("<br><br>");
echo("<center><font size=+2 color='blue'>");
echo("Datele introduse de dvs. sunt</font>");
echo("</center><br><br>");
echo("<p align='left'>");
echo("<ul>");
echo("<li>Numele si prenumele: $nume</li>");
echo("<li>Adresa de e-mail: $email</li>");
echo("<li>Telefon fix: $telefon</li>");
echo("<li>Telefon mobil: $mobil</li>");
echo("<li>Sexul: ");
if ($sex=="masculin") echo("baiat</li>");
else echo("fata</li>");
echo("<li>Clasa: ");
if ($clasa==9) echo("a noua $lclasa");
if ($clasa==10) echo("a zecea $lclasa");
if ($clasa==11) echo("a unsprezecea $lclasa");
if ($clasa==12) echo("a douasprezecea $lclasa");
echo("<li>Pasiuni:<ol>");
if ($C1=="ON") echo("<li>literatura");
if ($C2=="ON") echo("<li>limbile straine");
if ($C3=="ON") echo("<li>arta");
if ($C4=="ON") echo("<li>matematica");
if ($C5=="ON") echo("<li>informatica");
if ($C6=="ON") echo("<li>psihologia");
if ($C7=="ON") echo("<li>fizica");
if ($C8=="ON") echo("<li>chimia");
if ($C9=="ON") echo("<li>biologia");
if ($C10=="ON") echo("<li>sportul");
if ($C11=="ON") echo("<li>geografia");
if ($C12=="ON") echo("<li>istoria");
if ($C13=="ON") echo("<li>economia");
echo("</li></ol>");
echo("<li>Disponibilitatea: $disponib");
echo("<li>Sectiuni (programe):<ol>");
if ($PR1=="ON") echo("<li>Revista");
if ($PR2=="ON") echo("<li>Cercul de teatru Thalia");
if ($PR3=="ON")
echo("<li>Administrarea retelei de calculatoare");
if ($PR4=="ON") echo("<li>Cercul de arta Apollo");
if ($PR5=="ON") echo("<li>Cenaclul literar Poesis");
if ($PR6=="ON") echo("<li>Muzicienii informaticieni");
echo("</li></ol>");
echo("<li>Sugestii/comentarii: $sugestii</li></ul>");
echo("</p>");
echo("<p><center><font size=+2 color='blue'>");
echo("Va multumim pentru inscrierea dvs. in ");
echo("<a href='clubul.html'>Clubul nostru</a>!");
echo("</font></center></p>");
echo("<p align='center'><a href='javascript:history.back()'>
echo("<img src='previous.gif'></img></a></p>");
echo("</body></html>");
$f=fopen("formular.txt","a");
fwrite($f,"------------------------------\n");
fwrite($f,$nume); fwrite($f,"\n");
fwrite($f,$email); fwrite($f,"\n");
fwrite($f,$telefon); fwrite($f,"\n");
fwrite($f,$mobil); fwrite($f,"\n");
fwrite($f,$sex); fwrite($f,"\n");
fwrite($f,$clasa); fwrite($f,$lclasa); fwrite($f,"\n");
if ($C1=="ON") fwrite($f,"1-da\n"); else fwrite($f,"1-nu\n");
if ($C2=="ON") fwrite($f,"2-da\n"); else fwrite($f,"2-nu\n");
if ($C3=="ON") fwrite($f,"3-da\n"); else fwrite($f,"3-nu\n");
if ($C4=="ON") fwrite($f,"4-da\n"); else fwrite($f,"4-nu\n");
if ($C5=="ON") fwrite($f,"5-da\n"); else fwrite($f,"5-nu\n");
if ($C6=="ON") fwrite($f,"6-da\n"); else fwrite($f,"6-nu\n");
if ($C7=="ON") fwrite($f,"7-da\n"); else fwrite($f,"7-nu\n");
if ($C8=="ON") fwrite($f,"8-da\n"); else fwrite($f,"8-nu\n");
if ($C9=="ON") fwrite($f,"9-da\n"); else fwrite($f,"9-nu\n");
if ($C10=="ON") fwrite($f,"10-da\n");
else fwrite($f,"10-nu\n");
if ($C11=="ON") fwrite($f,"11-da\n");
else fwrite($f,"11-nu\n");
if ($C12=="ON") fwrite($f,"12-da\n");
else fwrite($f,"12-nu\n");
if ($C13=="ON") fwrite($f,"13-da\n");
else fwrite($f,"13-nu\n");
fwrite($f,$disponib); fwrite($f,"\n");
if ($PR1=="ON") fwrite($f,"1-da\n");
else fwrite($f,"1-nu\n");
if ($PR2=="ON") fwrite($f,"2-da\n");
else fwrite($f,"2-nu\n");
if ($PR3=="ON") fwrite($f,"3-da\n");
else fwrite($f,"3-nu\n");
if ($PR4=="ON") fwrite($f,"4-da\n");
else fwrite($f,"4-nu\n");
if ($PR5=="ON") fwrite($f,"5-da\n");
else fwrite($f,"5-nu\n");
if ($PR6=="ON") fwrite($f,"6-da\n");
else fwrite($f,"6-nu\n");
fwrite($f,$sugestii); fwrite($f,"\n");
fclose($f);
}
?>
In continuare vom realiza programul PHP care sa citeasca si sa afiseze datele din fisierul
FORMULAR.TXT din exemplul anterior. Fireste, nu este cel mai potrivit mod de a lucra
cu date atât de complexe, de aceea vom apela la un sistem de gestiune a bazelor de date
(SGBD), precum MySQL, care este foarte simplu de invatat si de utilizat, este liber si
versiunile sale pentru Windows95/98 si Linux pot fi desc`rcate din web de la adresa
http://www.mysql.com.
Dar pâna atunci, programul care realizeaza citirea si afisarea datelor despre persoanele
incluse in club este cel de mai jos. Din punct de vedere didactic, acest program si cel de
la punctul anterior au rolul de a prezenta utlizarea eficienta a instructiunii if-else,
lucrul cu fisiere text, precum si crearea de pagini web in mod dinamic, direct din cod
PHP.
In acest program am folosit functia fgets pentru a citi date dintr-un fisier text. PHP
dispune de o mare varietate de functii de intrare-iesire a datelor din fisiere, asa ca ramâne
la latitudinea fiecarui programator de a alege cea mai potrivita varianta, pentru o situatie
data.
Laboratorul 4. Utilizarea sistemului de baze de date MYSQL din linia
de comanda
Ca si PHP, MySQL se gaseste liber pe Internet, la adresa http://www.mysql.com,
de unde il puteti descarca si instala. Puteti testa programele sub Windows 95/98 si apoi sa
le transferati sub mediul Linux, cu mici modificari legate de conectarea la serverul
MySQL.
Interogarea MySQL
Limbajul SQL care sta la baza interogarilor bazelor de date relationale nu este foarte
complicat, dar invatarea lui nu constituie obiectul acestui material. Totusi, câteva
comenzi de baza si exemple de utilizare vom prezenta in continuare. Toate comenzile in
MySQL trebuie sa se termine cu simbolul punct si virgula ";".
connect;
Exemplu:
mysql> connect
Connection id: 5
Current database: baza
2) Dând comanda use baza; ne putem alege baza de date "baza" pentru a lucra in
continuare cu ea (o deschidem).
Exemplu:
mysql> use baza;
Database changed
3) Comanda create table ne permite crearea unui nou tabel, cu o anumita structura, in
cadrul bazei de date curente.
Exemplu: Vom crea tabelul agenda pentru gestionarea numelor si vârstelor unor
persoane:
mysql> create table agenda (nume char(30), varsta int(3));
Query OK, 0 rows affected (0.22 sec)
Exemplu:
mysql> show tables;
+----------------+
| Tables_in_baza |
+----------------+
| agenda |
| marfuri |
+----------------+
2 rows in set (0.22 sec)
6) Pentru a realiza o interogare a unui tabel din baza de date, deci pentru a selecta si afisa
toate sau doar o parte din inregistrarile dintr-un tabel, se foloseste comanda select, care
este cea mai complexa comanda SQL, iar descrierea ei in totalitate nu face subiectul
acestui material. Revedeti cursul de Baze de date sau pe cel de Sisteme de gestiunea
bazelor de date!
Exista, insa, o serie de manuale de baze de date sau despre limbajul SQL din care poti
invata mult mai multe. Totusi, câteva exemple folosind comanda SQL vor fi date mai jos.
Toate exemplele se refera la tabelul marfuri din baza de date curenta (baza).
Exemple:
c) Afisarea doar a produselor cu valoarea mai mare sau egala cu o valoare data (500):
mysql> select * from marfuri where valoare>=500;
+----------+------+------+---------+
| denumire | pu | cant | valoare |
+----------+------+------+---------+
| conopida | 18 | 43 | 774 |
| cartofi | 19 | 34 | 646 |
| pepene | 78 | 18 | 1404 |
+----------+------+------+---------+
3 rows in set (0.06 sec)
d) Afisarea valorii produselor din tabel si a valorii cu tot cu TVA (se considera cota TVA
ca fiind de 19%). Desi in structura tabelului nu exista câmpul val_tva, se va genera
aceasta coloana prin comanda select de mai jos:
mysql> select denumire, valoare, valoare*1.19 as val_tva from marfuri;
+------------+---------+---------+
| denumire | valoare | val_tva |
+------------+---------+---------+
| conopida | 774 | 921.06 |
| mazare | 105 | 124.95 |
| piersici | 336 | 399.84 |
| cartofi | 646 | 768.74 |
| morcovi | 200 | 238.00 |
| conopida | 112 | 133.28 |
| castraveti | 80 | 95.20 |
| pepene | 1404 | 1670.76 |
+------------+---------+---------+
8 rows in set (0.00 sec)
e) Selectarea produselor din tabel cu preturi unitare intre doua valori date (de exemplu 10
si 40), in ordine alfabetica:
mysql> select * from marfuri where pu between 10 and 40 order by
denumire;
+----------+------+------+---------+
| denumire | pu | cant | valoare |
+----------+------+------+---------+
| cartofi | 19 | 34 | 646 |
| conopida | 18 | 43 | 774 |
| conopida | 16 | 7 | 112 |
| mazare | 35 | 3 | 105 |
| morcovi | 10 | 20 | 200 |
+----------+------+------+---------+
5 rows in set (0.00 sec)
7) Instruc\iunea SQL delete sterge una sau mai multe intregistrari dintr-un tabel al
bazei de date. Se pot folosi, ca si la select, diferite criterii de stergere.
Exemplu: La tabelul de mai sus, daca aplicam urmatoarea instructiune delete, vom
elimina din tabel rândurile ce contin atât denumirea 'conopida', cât si denumirea
'CONOPIDA". Acest lucru se datoreazaoperatorului special like, care nu deosebeste
literele mari de cele mici.
mysql> delete from tabel where denumire like 'conopida';
Query OK, 3 rows affected (0.05 sec)
mysql> select * from tabel;
+------------+------+------+---------+
| denumire | pu | cant | valoare |
+------------+------+------+---------+
| mazare | 35 | 3 | 105 |
| piersici | 6 | 56 | 336 |
| cartofi | 19 | 34 | 646 |
| morcovi | 10 | 20 | 200 |
| castraveti | 8 | 10 | 80 |
| pepene | 78 | 18 | 1404 |
+------------+------+------+---------+
6 rows in set (0.16 sec)
8) In sfârsit, instructiunea update permite actualizarea unui articol din baza de date. Afla
singur cum se foloseste!
Corespunzatoare tuturor acestor instructiuni SQL exista functiile PHP de lucru cu baze de
date MySQL numite mysql_connect pentru conectarea la baza de date si
mysql_query pentru realizarea de interogari SQL, deci pentru celelalte comenzi.
Acestea vor fi exemplificate in continuare.
Laboratorul 5. Lucrare de verificare cu diferite exercitii
In care se va constata care studenti au priceput si stiu ceva (Dragos, Florin, Doina,
Corneliu, Vlad, Andrei) si care nu (ceilalti)
Exemplu:
$con=ftp_connect("bogdan");
ftp_login($con,"bogdan","passw");
$nf=$den."_".$pret."_".$cantit;
$p=strrpos($poza,".");
$extensie=substr($poza,$p+1);
$fis_poza=$nf.".".$extensie;
ftp_put($con,$fis_poza,$poza,FTP_BINARY);
ftp_quit($con);
echo "<html><head><title>Adaugare</title></head>";
echo "<body background='fond.jpg'>";
echo "<br>Am adaugat: <b>$den</b>, PU: $pret Cant: $cantit Val:
$valoare";
$s=stripslashes($poza);
echo ("<p align='center'><img src='$s'</p>");
echo("</body></html>");
}
Astfel, sa consider`m ca avem o baza de date numita chiar BAZA, ce contine un tabel
numit chiar TABEL, acesta având urmatoarea structura:
Baza de date se refera la produsele (m`rfurile) dintr-o magazie. Câmpul valoare este
determinat ca fiind pu inmultit cu cant.
Vom crea o pagina web cu doua cadre: in cadrul din stânga vom avea un meniu de unde
putem accesa diferite comenzi asupra tabelului, comenzi al caror efect se va vizualiza in
cadrul din dreapta.
Iata cum va arata pagina web in cazul in care s-a actionat, de exemplu, comanda
"Adaugare":
Fireste, vom avea cele cinci fisiere care sunt apelate din meniu. Fisierul
MODIFICARE.HTML nu este creat; Iti propun drept exercirtiu implementarea comenzii
de modificare a unui articol din baza de date. Vei folosi instructiunea UPDATE din SQL.
<html>
<head>
<title>Vizualizare</title>
</head>
<body background="fond.jpg" bgcolor="#FFFFFF">
<p><font color="#FF0000" size="5">
<strong>Vizualizare produse:</strong></font></p>
<p>Se listeaza produse din baza de date, dupa criterii:</p>
<form action="vizualizare.php" method="POST">
<p>Denumire: <input type="text" size="20" name="den">
Pret unitar: <input type="text" size="20" name="pret"></p>
<p>Cantitate: <input type="text" size="20"
name="cantit"> <input
type="submit" name="butonOK" value="Listeaza"></p>
<p>Ordonare dupa: <input type="radio" checked name="R1"
value="denumire"> denumire <input type="radio" name="R1"
value="pu"> pret unitar <input type="radio" name="R1"
value="cantitate">cantitate</p>
</form>
</body>
</html>
In continuare, vom prezenta cele trei script-uri care realizeaza operatiile de adaugare,
stergere si respectiv vizualizare a unor inregistrari din tabelul bazei de date, pe baza
formularelor descrise. Conventia la vizualizare este ca daca nu se introduce nici un câmp
in formular, atunci se vor vizualiza toate inregistrarile din baza de date, dar fara fotografii
(ci doar cu trimiteri la ele).
$con=ftp_connect("bogdan");
ftp_login($con,"bogdan","passw");
$nf=$den."_".$pret."_".$cantit;
$p=strrpos($poza,".");
$extensie=substr($poza,$p+1);
$fis_poza=$nf.".".$extensie;
ftp_put($con,$fis_poza,$poza,FTP_BINARY);
ftp_quit($con);
echo "<html><head><title>Adaugare</title></head>";
echo "<body background='fond.jpg'>";
echo "<br>Am adaugat: <b>$den</b>, PU: $pret Cant: $cantit Val:
$valoare";
$s=stripslashes($poza);
echo ("<p align='center'><img src='$s'</p>");
echo("</body></html>");
}
?>
Vei observa cu usurinta faptul ca in afara de a adauga datele unui produs in baza de date,
are loc si un transfer al unui fisier binar continând imaginea produsului. Acest fisier se
afla pe calculatorul client si este transferat pe calculatorul server (gazda), prin protocolul
FTP, folosind chiar functii specializate pe "File transfer protocol" pe care le detine PHP.
Daca ti se pare ca nu intelegi cum stau lucrurile cu transferul prin FTP sau ai o problema
cu acest lucru, poti elimina liniile de program care fac referinta la transferul imaginii
produsului.
$conftp=ftp_connect("bogdan");
ftp_login($conftp,"bogdan","passw");
$i=0;
while ($sir=mysql_fetch_array($rez))
{
$i=$i+1;
echo "<tr>";
echo "<td>$i</td>";
echo "<td>$sir[0]</td>";
echo "<td>$sir[1]</td>";
echo "<td>$sir[2]</td>";
echo "<td>$sir[3]</td>";
$nf=$sir[0]."_".$sir[1]."_".$sir[2].".jpg"; //!!!
// ftp_get($conftp,"c:\\Windows\\Temp\\".$nf,$nf,FTP_BINARY);
$poza = stripslashes($nf);
// $ss="c:\\Windows\\Temp\\".$nf;
$ss="ftp://bogdan//".$nf;
echo "<td><a href=$ss>click aici pentru ";
echo "foto</a></td>";
echo "</tr>";
}
echo "</table>";
mysql_free_result($rez);
ftp_quit($conftp);
echo "</p></body></html>";
}
else
{
$con=mysql_connect("","bogdan","passw") or
die("Nu ma pot conecta!");
mysql_select_db("baza",$con);
$s="select * from tabel where ";
if ($den!="")
if (($pret!="") or ($cantit!=""))
$s1="denumire like \"$den\" and ";
else
$s1="denumire like \"$den\"";
else
$s1="";
if ($pret!="")
if ($cantit!="") $s2="pu=$pret and";
else $s2="pu=$pret";
else $s2="";
if ($cantit!="") $s3="cant=$cantit"; else $s3="";
$s=$s.$s1.$s2.$s3.";";
echo "<html><head><title>Vizualizare</title></head>";
echo "<body background='fond.jpg'>";
echo "<br>Mai jos sunt listate toate produsele $s<p>";
echo "<table border=\"1\">";
echo "<tr>";
echo "<td><strong>Nr. crt.</strong></td>";
echo "<td><strong>Denumire</strong></td>";
echo "<td><strong>Pret unitar</strong></td>";
echo "<td><strong>Cantitate</strong></td>";
echo "<td><strong>Valoare</strong></td>";
echo "<td><strong>Imagine</strong></td></tr>";
$rez = mysql_query($s, $con);
$conftp=ftp_connect("bogdan");
ftp_login($conftp,"bogdan","passw");
$i=0;
while ($sir=mysql_fetch_array($rez))
{
$i=$i+1;
echo "<tr>";
echo "<td>$i</td>";
echo "<td>$sir[0]</td>";
echo "<td>$sir[1]</td>";
echo "<td>$sir[2]</td>";
echo "<td>$sir[3]</td>";
$nf=$sir[0]."_".$sir[1]."_".$sir[2].".jpg"; //!!!
ftp_get($conftp,$nf,$nf,FTP_BINARY);
$poza = stripslashes($nf);
// echo "<td><a href='$poza'>click aici pentru ";
// echo "foto</a></td>";
echo "<td><img src='$poza'></td>";
echo "</tr>";
}
echo "</table>";
mysql_free_result($rez);
ftp_quit($conftp);
echo "</p></body></html>";
}
?>
Mult succes!