Pagina de start a forumului Comunitatea JustUs  
FAQ Cautare
Membri Grupuri
Profil Mesaje private
Inregistrare Autentificare
Lucrul cu baze de date MySQL, seturi de rezultate
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Comunitatea JustUs Tutoriale PHP | MySql
Subiectul anterior :: Subiectul urmator  
Autor Mesaj
Elektro_Love
Administrator
Administrator
Elektro_Love

Data inscrierii: 21/Iul/2010
Mesaje: 101

MesajTrimis: 21/07/2010 19:05    Titlul subiectului: Lucrul cu baze de date MySQL, seturi de efecte Raspunde cu citat (quote)

Invatati sa obtineti date privind: numarul coloanelor, numele si lungimea coloanelor dintr-un tabel MySQL
Invatati sa obtineti informatii privind indicatorii MySQL asociati coloanelor si tipul fiecarei coloane
Invatati sa aflati numele tabelului care contine o anumita coloana si sa parcurgeti non-secvential randurile unui tabel MySQL

Biblioteca de functii MySQL a limbajului PHP include functii care va permit sa obtineti informatii despre un set de rezultate, inclusiv:
Numarul coloanelor din kitul de rezultate
Numele fiecarei coloane
Lungimea fiecarei coloane
Indicatorii MySQL asociati coloanei
Tipul MySQL al fiecarei coloane
Numele tabelului MySQL care contine coloana
1. Obtinerea numarului coloanelor dintr-un tabel MySQL

Pentru a obtine numarul coloanelor dintr-un set de rezultate, utilizati functia
mysql_num_fields()
Aceasta foloseste ca argument valoarea returnata de functia mysql_query().
Iata un exemplu in care functia mysql_num_fields() determina numarul coloanelor dintr-o interogare care selecteaza toate coloanele utilizând specificatorul SQL pentru toate câmpurile "*", astfel puteti afla numarul de coloane dintr-un tabel:

Citat:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nr_campuri = mysql_num_fields($rezultat);
echo "<br /> Numar campuri: $nr_campuri";
mysql_close();
?>


2. Obtinerea numelui unei coloane

Pentru a obtine numele unei coloane dintr-un tabel MySQL, folositi functia
mysql_field_name()
Aceasta returneaza numele coloanei din setul de rezultate. Functia preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat cu întâia coloana este 0, indexul asociat celei de-a doua coloane este l etc.
Iata un exemplu care determina numele primei coloane dintr-un tabel MySQL:

Citat:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nume = mysql_field_name($rezultat, 0);
echo "<br /> Coloana 1 : $nume";
mysql_close();
?>


3. Obtinerea lungimii unei coloane

Pentru a obtine mărimea unei coloane dintr-un tabel MySQL, folositi functia
mysql_field_len()
Aceasta returneaza lungimea maxima a coloanei din setul de rezultate. Functia preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
Iata un exemplu care determina lungimea maxima a coloanei doi dintr-un tabel MySQL:

Citat:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$lungime = mysql_field_len($rezultat, 1);
echo "<br /> Lungime Coloana 2 - $lungime";
mysql_close();
?>


4. Obtinerea indicatorilor MySQL asociati unei coloane

Pentru a obtine indicatorii SQL asociati unei coloane dintr-un tabel MySQL, folositi functia
mysql_field_flags()
Aceasta preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
Functia mysql_field_flags() raporteaza urmatorii indicatori:
AUTO_INCREMENT
BINARY
BLOB
ENUM
MULTIPLE_KEY
NOT_NULL
PRIMARY_KEY
TIMESTAMP
UNIQUE_KEY
UNSIGNED
ZEROFILL
- Daca la o coloana sunt asociati mai multi indicatori, fiecare indicator este separat de vecinii sai prin intermediul unui singur spatiu.
Iata un exemplu care determina indicatorii asociati primei coloane dintr-un tabel MySQL:

Citat:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$indicatori = mysql_field_flags($rezultat, 0);
echo "<br /> Indicatorii Coloanei 1 : $indicatori";
mysql_close();
?>


5. Obtinerea tipului MySQL al unei coloane

Pentru a obtine tipul MySQL al unei coloane dintr-un tabel MySQL, folositi functia
mysql_field_type()
Aceasta preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
Principalele tipuri MySQL returnate de functia mysql_field_type() sunt prezentate in Lectia 22 , in tabelul "Principalele tipuri de date din MySQL".
Iata un exemplu care determina tipul primei coloane dintr-un tabel MySQL:

Citat:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$tip = mysql_field_type($rezultat, 0);
echo "<br /> Tip Coloana 1 : $tip";
mysql_close();
?>


6. Determinarea tabelului MySQL asociat unei coloane

Pentru a determina tabelul MySQL (daca exista) asociat unei anumite coloane, folositi functia
mysql_field_table()
Aceasta preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
În cazul în care coloana contine o valoare calculata sau daca respectiva coloana nu este asociata în alt mod cu un tabel MySQL, functia returneaza un sir vid.
Iata un exemplu care determina tabelul asociat primei coloane din setul de rezutate:

Citat:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$tabel = mysql_field_table($rezultat, 0);
echo "<br /> Nume tabel : $tabel";
mysql_close();
?>


7. Obtinerea structurii complete a setului de rezultate

Daca doriti obtinerea mai multor caracteristici ale setului de rezultate, o functie utila poate fi:
mysql_fetch_field()
Aceasta functie returneaza un obiect ale carui proprietati contin o varietate de informatii cu privire la coloana unui tabel MySQL. Proprietatile sunt urmatoarele:
blob - are valoarea 1 în cazul în care coloana este de tip BLOB
max_length - lungimea maxima a coloanei;
multiple_key - are valoarea 1 în cazul în care coloana este o cheie non-unica
name - numele coloanei
not_null - are valoarea 1 în cazul în care coloana nu poate contine valoarea NULL
numeric - are valoarea 1 în cazul în care coloana este numerica
primary_key - are valoarea 1 în cazul în care coloana este o cheie primara
table - numele tabelului MySQL caruia îi apartine coloana
type - tipul MySQL al coloanei
unique_key - are valoarea 1 în cazul în care coloana este o cheie unica
unsigned - are valoarea 1 în cazul în care coloana este de tip UNSIGNED
zerofill - are valoarea 1 în cazul în care coloana este completata cu zerouri
functia mysql_fetch_field() preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei care va fi descrisa. Indexul asociat primei coloane este 0, indexul asociat celei de-a doua coloane este l etc.
Iata un exemplu care prezinta modul de obtinere si descriere a structurii complete a setului de efecte pentru prima coloana dintr-un tabel MySQL:

Citat:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$info = mysql_fetch_field($rezultat, 0);
echo "<br /> Coloana 1: ";
echo "<PRE>
blob: $info->blob
max_length: $info->max_length
multiple_key: $info->multiple_key
name: $info->name
not_null: $info->not_null
numeric: $info->numeric
primary_key: $info->primary_key
table: $info->table
type: $info->type
unique_key: $info->unique_key
unsigned: $info->unsigned
zerofill: $info->zerofill
</PRE>";
mysql_close();
?>


Pentru a obtine aceste proprietati pentru toate coloanele din tabel, folositi o instructiune "for", dupa exemplul de mai jos, care parcurge fiecare coloana, folosind ca limita a numarului de coloane valoarea returnata de functia mysql_num_fields()

Citat:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nr_campuri = mysql_num_fields($rezultat);
for ($i=0; $i<$nr_campuri; $i++) {
echo "<br /> Coloana $i: ";
$info = mysql_fetch_field($rezultat);
if ($info) {
echo "<PRE>
blob: $info->blob
max_length: $info->max_length
multiple_key: $info->multiple_key
name: $info->name
not_null: $info->not_null
numeric: $info->numeric
primary_key: $info->primary_key
table: $info->table
type: $info->type
unique_key: $info->unique_key
unsigned: $info->unsigned
zerofill: $info->zerofill
</PRE>";
}
else {
echo "Necunoscut";
}
}
mysql_close();
?>


8. Accesul non-secvential la coloanele unui set de rezultate

Functiile mysql_fetch_row() si mysql_fetch_array() returneaza, în general, rândurile dintr-un set de rezultate în mod secvential, incepand de la primul rand al tabelului. Totusi, functia mysql_data_seek() îngăduie obtinerea accesului la rândurile unui set de rezultate într-o maniera non-secventiala, . Functia are forma:
mysql_data_seek(rezultat, numar_rand)
Unde "rezultat" este valoarea returnata de functia mysql_query(), iar "numar_rand" este indexul rândului la care doriti sa obtineti accesul. Inițialul rând al tabelului este numerotat cu 0, al doilea cu 1 etc.
Functia returneaza TRUE daca executia reuseste, respectiv FALSE în caz contrar.
Apoi, o invocare ulterioara a functiei mysql_fetch_row() sau a functiei mysql_fetch_array() va returna rândul din pozitia specificata in functia mysql_data_seek().
Studiati urmatorul exemplu, care obtine accesul la al treilea rând al setului de rezultate returnat de o interogare anterioara:

Citat:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
if (!mysql_data_seek($rezultat, 2)) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
else {
$rand = mysql_fetch_array($rezultat, MYSQL_ASSOC);
foreach ($rand as $coloana) {
echo "| $coloana |";
}
}
mysql_close();
?>


- Acest exemplu afiseaza datele din randul trei pentru fiecare coloana a tabelului MySQL.
Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:   
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Comunitatea JustUs Tutoriale PHP | MySql Ora este GMT + 3 ore
Pagina 1 din 1

 
Mergi direct la:  
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
ezHyperShadow template - a boo design Original ezHyperShadow theme by boo ©2004 www.ez-life.net
Powered by phpBB © 2001, 2002 phpBB Group
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro