Alte exemple cu PHP&MySql Vom recapitula nişte noţiuni pentru a putea crea un proiect folosind PHP şi MySql. Crearea unui tabel cu PHP CREATE TABLE nume_tabela { nume_camp tip(marime) alte_informatii, ... } Presupunem ca exemplu, vom adăuga mai multe câmpuri în agenda cu datele vizitatorilor unui site memorată în tabelul agenda cu structura: Nume
Tip
Lungime
Descriere
id
INT
6
Un identificator unic
first
VARCHAR
15
Prenume
last
VARCHAR
15
Nume
phone
VARCHAR
20
Numarul de telefon
mobile
VARCHAR
20
Numarul de mobil
fax
VARCHAR
20
Numarul de fax
VARCHAR
30
Adresa de email
web
VARCHAR
30
Adresa de web
Pentru a crea aceast tabel în PHP (explicaţiile urmează): <? @mysql_connect(“localhost”, “user”, “parola”); @mysql_select_db(“bazadate”) or die( "Nu se poate deschide baza de date"); $query="CREATE TABLE agenda (id int(6) NOT NULL auto_increment, first varchar(15) NOT NULL, last varchar(15) NOT NULL, phone varchar(20) NOT NULL, mobile varchar(20) NOT NULL, fax varchar(20) NOT NULL, email varchar(30) NOT NULL, web varchar(30) NOT NULL, PRIMARY KEY (id),UNIQUE id (id), KEY id_2 (id))"; mysql_query($query); mysql_close(); ?> Acum să pargurgem paşii necesari pentru a putea folosi acest tabel.
Conectarea la baza de date: @mysql_connect(“localhost”, “user”, “parola”);
Deschiderea bazei de date: @mysql_select_db($database) or die( "Mesaj in caz de eroare");
1
Execuţia unei comenzi se poate face direct sau atribuind comanda unei variabile (dacă se aşteaptă un rezultat): mysql_query($query);
Adăugarea de înregistrări Informaţiile următoare vor fi adăugate în agenda cu comanda: First: Ion Last: Gheorghe Phone: 01234 567890 Mobile: 00112 334455 Fax: 01234 567891 E-mail: iongh@yahoo.com Web: http://www.gh.go.ro $query = "INSERT INTO agenda VALUES ('','Ion', 'Gheorghe', '01234 567890', '00112334455', '01234567891', 'iongh@yahoo.com', 'http://www.gh.go.ro')";
Formularele HTML Iată cum ar putea să arate un formular cu ajutorul căruia se vor culege informaţii despre vizitatori: Prenume: Nume: Telefon: Celular: Fax: E-mail: Site Web:
Codul este: <form action="insert.php" method="post"> Prenume: <input type="text" name="first"><br> Last Nume: <input type="text" name="last"><br> Telefon: <input type="text" name="phone"><br> Mobile: <input type="text" name="mobile"><br> Fax: <input type="text" name="fax"><br> E-mail: <input type="text" name="email"><br> Site Web:<input type="text" name="web"><br> <input type="Submit"> </form>
Creaţi acum un fişier 'insert.php' cu următorul conţinut: <? $first=$_POST[‘first’]; $last=$_POST[‘last’]; $phone=$_POST[‘phone’];
2
$mobile=$_POST[‘mobile’]; $fax=$_POST[‘fax’]; $email=$_POST[‘email’]; $web=$_POST[‘web’]; @mysql_connect(“localhost”,”user”,”parola”); @mysql_select_db(“bazadate”) or die( "Nu se poate deschide BD"); $query = "INSERT INTO agenda VALUES ('','$first','$last','$phone','$mobile','$fax','$email','$web')"; mysql_query($query); mysql_close(); echo “Datele au fost adaugate”; ?>
Afişarea înregistrărilor $query="SELECT * FROM agenda"; $result=mysql_query($query);
Rezultatele sunt acum într-un tablou ('result'). Pentru a-i afişa elementele, trebuie folosit foreach. În continuare, vom memora datele în variabile: $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web");
Script-ul final pentru afişarea rezultatului interogării:
<? @mysql_connect(“localhost”, “user”, “parola”); @mysql_select_db(“bazadate”) or die( "Nu se poate deschide baza de date"); $query="SELECT * FROM agenda"; $result=mysql_query($query); $num=mysql_numrows($result); # numără câte rânduri avea tabelul agendă mysql_close(); echo "<b><center>Rezultatul interogarii</center></b><br><br>"; $i=0; while ($i < $num) { $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); echo "<b>$first $last</b><br>Telefon: $phone<br>Mobil: $mobile<br>Fax: $fax<br>E-mail: $email<br>Site Web: $web <br><hr><br>"; ++$i; }
3
?>
Formatarea afişajului rezulatelor se poate face folosind combinaţii HTMl/PHP: <font face="Arial, Helvetica, sans-serif"><? echo "$first $last";?></font>
Interogările se fac dupa următorul exemplu: $query="SELECT * FROM agenda WHERE last='$searchlast'"; $result=mysql_query($query);
Actualizarea înregistrărilor $id=$_GET['id']; @mysql_connect(“localhost”, “user”, “parola”); @mysql_select_db(“bazadate”) or die( "Nu se poate deschide baza de date"); $query=" SELECT * FROM agenda WHERE id='$id'"; $result=mysql_query($query); $num=mysql_numrows($result); mysql_close(); $i=0; while ($i < $num) { $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); //Spaţiu pentru cod ++$i; }
Formularul HTML: <form action="updated.php" method="post"> <input type="hidden" name="ud_id" value="<? echo "$id"; ?>"> Prenumele: <input type="text" value="ud_first" value="<? echo "$first"?>"><br> Numele: <input type="text" value="ud_last" value="<? echo "$last"?>"><br> Ner. telefon: <input type="text" value="ud_phone" value="<? echo "$phone"?>"><br> Nr. celular: <input type="text" value="ud_mobile" value="<? echo "$mobile"?>"><br> Nr. fax: <input type="text" value="ud_fax" value="<? echo "$fax"?>"><br> Adresa e-mail: <input type="text" value="ud_email" value="<? echo "$email"?>"><br> Adresa Web: <input type="text" value="ud_web" value="<? echo "$web"?>"><br> <input type="Submit" value="Actualizeaza"> </form>
Următorul pas este actualizarea propriu-zisă a bazei de date cu valorile introduse în formular: 4
$ud_id=$_POST['ud_id']; $ud_first=$_POST['ud_first']; $ud_last=$_POST['ud_last']; $ud_phone=$_POST['ud_phone']; $ud_mobile=$_POST['ud_mobile']; $ud_fax=$_POST['ud_fax']; $ud_email=$_POST['ud_email']; $ud_web=$_POST['ud_web']; mysql_connect(“localhost”, “user”, “parola”); $query="UPDATE agenda WHERE id='$ud_id' SET first='$ud_first' last='$ud_last' phone='$ud_phone' mobile='$ud_mobile' fax='$ud_fax' email='$ud_email' web='$ud_web'"; mysql_query($query); echo "Inregistrare actualizata"; mysql_close();
Funcţiile PHP pentru lucrul cu MySQL Funcţie
Returnează
Acţiune
mysql_connect([string hostname[:port][:/path/to/ socket]] [, string username] [, string password])
int
Deschide o conexiune la server
mysql_pconnect([string hostname[:port][:/path/ to/socket]] [, string username] [, string password])
int
Deschide o conexiune persistenta la serverul MySQL
mysql_close([int link_ identifier])
int
Inchide o conexiune
mysql_select_db(string database_name [, int link_identifier])
int
Selecteaza o baza de date MySQL
mysql_create_db(string database_name [, int link_identifier])
int
Creaza o baza de date
mysql_drop_db(string database_name [, int link_identifier])
int
Sterge o baza de date
mysql_query(string query [, int link_identifier])
int
Trimite o interogare SQL
mysql_db_query(string database_name, string query [, int link_ identifier])
int
Trimite o interogare SQL
5
mysql_list_dbs([int link_identifier])
int
Lista bazelor de date de pe server
mysql_list_tables(string database_name [, int link_identifier])
int
Lista tabelelor dintr-o baza de date
mysql_list_fields(string database_name, string table_name [, int link_ identifier])
int
Afiseaza campurile rezultat
mysql_error([int link_ identifier])
string
Afiseaza mesajul de eroare precedent
mysql_errno([int link_ identifier])
int
Afiseaza numarul mesajului de eroare de la operatia precedenta
mysql_affected_rows([int link_identifier])
int
Preia numarul de inregistrari afectate de operatia precedenta
mysql_insert_id([int link_ identifier])
int
Preia auto_incrementul precedentei comenzi INSERT
mysql_result(int result, int row [, mixed field])
int
Preia rezultatele interogarii
mysql_num_rows(int result)
int
Preia numarul inregistrarilor din rezultat
mysql_num_fields(int result)
int
Preia numarul campurilor din rezultat
mysql_fetch_row(int result)
tablou
Preia cate un rand din tabloul rezultat
mysql_fetch_object(int result [, int result_type])
obiect
Preia un rand ca obiect
mysql_fetch_array(int result [, int result_type])
tablou
Preia un rand ca tablou
mysql_data_seek(int result, int int row_number)
Muta pointerul intern al rezultatului
mysql_fetch_lengths(int result)
tablou
Preia marimea maxima a datelor din fiecare camp din rezultat
mysql_fetch_field(int result [, int field_offset])
obiect
Preia informatii despre campuri
mysql_field_seek(int result, int int field_offset)
Muta pointerul rezultatului la un offset
mysql_field_name(int result, int field_index)
string
Preia numele campului specificat
mysql_field_table(int result, int field_offset)
string
Preia numele tabelei din care e campul
mysql_field_len(int result, int field_offet)
int
Preia marimea acelui camp
6
mysql_field_type(int result, int field_offset)
string
Preia tipul acelui camp
mysql_field_flags(int result, int field_offset)
string
Preia flag-ul acelui camp
mysql_free_result(int result)
int
Elibereaza memoria de rezultat
TEMĂ Să se creeze formulare şi scripturi PHP pentru adăugare, modificare, ştergere din tabelul agendă.
7