<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tutorial Video</title>
	<atom:link href="http://tutorial-video.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://tutorial-video.net</link>
	<description>Tutoriale Video pt tine</description>
	<lastBuildDate>Mon, 09 Nov 2009 16:45:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nu mai apare scrisul la Yahoo Messenger &#8211; Ce facem</title>
		<link>http://tutorial-video.net/internet/nu-mai-apare-scrisul-la-yahoo-messenger-ce-facem/</link>
		<comments>http://tutorial-video.net/internet/nu-mai-apare-scrisul-la-yahoo-messenger-ce-facem/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 16:45:00 +0000</pubDate>
		<dc:creator>cosmin92</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Mesagerie]]></category>
		<category><![CDATA[messenger]]></category>
		<category><![CDATA[nu mai apare scrisul]]></category>
		<category><![CDATA[probleme scris]]></category>
		<category><![CDATA[probleme yahoo]]></category>
		<category><![CDATA[scris yahoo]]></category>
		<category><![CDATA[tutorial yahoo]]></category>
		<category><![CDATA[yahoo]]></category>
		<category><![CDATA[yahoo messenger]]></category>

		<guid isPermaLink="false">http://tutorial-video.net/?p=229</guid>
		<description><![CDATA[Multi dintre voi ati patit sa nu mai vedeti scrisul in Yahoo Messenger, nici ce scriati voi.. nici cel cu care vorbeati&#8230; poate va-ti intrebat care este cauza acestei probleme?!
Noi am gasit raspunsul si acum nu mai este nevoie sa apelati la un reinstall de windows.
Care este cauza? 
Yahoo Messenger lucreaza cu scripturi java si [...]]]></description>
			<content:encoded><![CDATA[<p>Multi dintre voi ati patit sa nu mai vedeti scrisul in Yahoo Messenger, nici ce scriati voi.. nici cel cu care vorbeati&#8230; poate va-ti intrebat care este cauza acestei probleme?!</p>
<p>Noi am gasit raspunsul si acum nu mai este nevoie sa apelati la un reinstall de windows.</p>
<p><strong>Care este cauza? </strong></p>
<p>Yahoo Messenger lucreaza cu scripturi java si visual basic&#8230; iar la o dezinstalare a unui program/plugin folosit de Yahoo windows-ul a sters din greseala si aceste scripturi.</p>
<p><strong>Cum putem remedia aceasta problema?</strong></p>
<p>Pt remedierea acestei probleme trebuie sa urmati pasii:</p>
<ol>
<li>Iesiti din Yahoo Messenger si inchideti-l definitv</li>
<li>click pe Start</li>
<li>click pe Run</li>
<li>in Run scriem: <strong>regsvr32 jscript.dll</strong></li>
<li>apasam ok</li>
<li>va aparea o fereastra de confirmare cum ca jscript.dll a fost restaurat cu succes si dam ok</li>
<li>repetam pasii 2 si 3 iar la pasul 4 de data asta vom scrie: <strong>regsvr32 vbscript.dll </strong>si procedam ca la pasul 6</li>
</ol>
<p>Sper ca va fost de ajutor acest &#8220;mini-tutorial&#8221; si sa rezolvati problema fara sa apelati la instalarea windows-ului</p>
]]></content:encoded>
			<wfw:commentRss>http://tutorial-video.net/internet/nu-mai-apare-scrisul-la-yahoo-messenger-ce-facem/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Informatii despre Excel 2007</title>
		<link>http://tutorial-video.net/office/informatii-despre-excel-2007/</link>
		<comments>http://tutorial-video.net/office/informatii-despre-excel-2007/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 10:48:22 +0000</pubDate>
		<dc:creator>cosmin92</dc:creator>
				<category><![CDATA[MS Excel]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Excel 2007]]></category>
		<category><![CDATA[initiere in excel]]></category>
		<category><![CDATA[tutorial excel]]></category>
		<category><![CDATA[tutorial video excel]]></category>

		<guid isPermaLink="false">http://tutorial-video.net/?p=214</guid>
		<description><![CDATA[Excel 2007
Click pe butonul Start&#62;Programs&#62;Microsoft Office&#62;Microsoft Office Excel 2007
Ti se va afisa un nou document intitulat Book1.







In partea de sus a partii tabelare vei vedea coloanele numite cu litere incepand cu A.
In partea stanga se pot observa randurile numerotate. Astfel identificarea unei celule se face cu ajutorul celor 2 coordonate. Exemplu: D8
Bara cu optiuni se [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Excel 2007</strong><br />
Click pe butonul <strong>Start&gt;Programs&gt;Microsoft Office&gt;Microsoft Office Excel 2007</strong><br />
Ti se va afisa un nou document intitulat <strong>Book1</strong>.</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a href="http://www.e-learn.ro/includes/tutorials/business_aplication/ms_excel/18/1.jpg"></a><a rel="attachment wp-att-215" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/1_tn/"><img class="aligncenter size-full wp-image-215" title="1_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/1_tn.jpg" alt="1_tn" width="500" height="377" /></a></td>
</tr>
</tbody>
</table>
<p>In partea de sus a partii tabelare vei vedea coloanele numite cu litere incepand cu A.<br />
In partea stanga se pot observa randurile numerotate. Astfel identificarea unei celule se face cu ajutorul celor 2 coordonate. <strong>Exemplu:</strong> D8<br />
Bara cu optiuni se afla in partea superioara a ferestrei Excel si comenzile sunt grupate.</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-216" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/2_tn/"><img class="aligncenter size-full wp-image-216" title="2_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/2_tn.jpg" alt="2_tn" width="500" height="71" /></a></td>
</tr>
</tbody>
</table>
<p>Pentru a vedea comenzile din fiecare grup trebuie accesat grupurile din partea de sus a barei de optiuni. Tag-ul <strong>Home</strong> contine comenzile cele mai des utilizate.  Comenzile sunt organizate in grupuri mici. De exemplu comenzile de editare a celulelor sunt in grupul <strong>Font</strong>, iar comenzile de lucru cu celulele sunt in grupul <strong>Cells</strong>.</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-217" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/3_tn/"><img class="aligncenter size-full wp-image-217" title="3_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/3_tn.jpg" alt="3_tn" width="81" height="88" /></a></td>
</tr>
</tbody>
</table>
<p>Primul document deschis se numeste Book1 iar titlul sau apare in bara de sus a ferestrei pana in momentul cand este salvat cu un alt nume. Fiecare astfel de document are initial 3 foi de lucru (<em>sheets/spreadsheets</em>)</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-218" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/4_tn/"><img class="aligncenter size-full wp-image-218" title="4_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/4_tn.jpg" alt="4_tn" width="287" height="91" /></a></td>
</tr>
</tbody>
</table>
<p><strong>Creearea unui nou document (<em>workbook</em>)</strong><br />
Click pe butonul <strong>Office</strong> din partea de sus in stanga, apoi selecteaza <strong>New</strong>. Selecteaza <strong>Blank Workbook</strong>.</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-219" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/5_tn/"><img class="aligncenter size-full wp-image-219" title="5_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/5_tn.jpg" alt="5_tn" width="500" height="354" /></a></td>
</tr>
</tbody>
</table>
<p><span> <strong>Nota:</strong> Fiecare document are 16.384 de coloane si 1.048.576 de randuri.</span></p>
<p><strong>Lucrul cu celule</strong><br />
Celulele sunt spatiile unde se specifica date in cadrul unei foi de lucru.   Poti specifica datele intr-o celula la alegere selectand-o in prealabil.</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-220" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/6_tn/"><img class="aligncenter size-full wp-image-220" title="6_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/6_tn.jpg" alt="6_tn" width="480" height="218" /></a></td>
</tr>
</tbody>
</table>
<p>Poti selecta o intreaga coloana dand click pe numele ei, sau un rang intreg apasand pe numarul sau.</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-221" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/7_tn/"><img class="aligncenter size-full wp-image-221" title="7_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/7_tn.jpg" alt="7_tn" width="179" height="200" /></a></td>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-222" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/8_tn/"><img class="aligncenter size-full wp-image-222" title="8_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/8_tn.jpg" alt="8_tn" width="223" height="200" /></a></td>
</tr>
</tbody>
</table>
<p>Vechiul meniu <strong>File</strong> a fost inlocuit de butonul <strong>Office</strong> in cadrul caruia gasesti comenzile de baza : <strong>Save</strong>, <strong>Save As</strong>, etc.</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-223" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/9_tn/"><img class="aligncenter size-full wp-image-223" title="9_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/9_tn.jpg" alt="9_tn" width="429" height="475" /></a></td>
</tr>
</tbody>
</table>
<p>Toolbar-ul <strong>Quick Access</strong> este localizat in partea de sus a ferestrei <strong>Excel</strong> (mai sus de bara cu Optiuni) si contine cele mai frecvent utilizate comenzi.</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-224" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/10_tn/"><img class="aligncenter size-full wp-image-224" title="10_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/10_tn.jpg" alt="10_tn" width="161" height="54" /></a></td>
</tr>
</tbody>
</table>
<p>Tastatura se poate folosi in doua moduri: pentru a accesa grupurile si comenzile sau pentru a utiliza unele taste pentru executarea unor comenzi care nu sunt in bara de optiuni. Tastele de acces ofera acces la bara de optiuni. Se leaga direct de grupuri, comenzi si alte elemente care sunt afisate pe ecran. Tastele de acces se folosesc apasand tasta <strong>ALT</strong> deodata cu o alta tasta sau o scuccesiune de taste.</p>
<p>O combinatie de taste executa o anumita comanda. Aceste combinatii de taste nu au legatura cu bara de optiuni. In momentul in care ai apasat tasta ALT vei vedea mici etichete cu sugestii de taste care apar in dreptul grupurilor. Dupa ce ai apasat o tasta pentru activarea unui anumit grup, vot aparea identificatorii care arata sugestii de taste pentru comenzile din acel grup.</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-225" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/11_tn/"><img class="aligncenter size-full wp-image-225" title="11_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/11_tn.jpg" alt="11_tn" width="500" height="131" /></a></td>
</tr>
</tbody>
</table>
<p>Tasta <strong>Tab</strong> iti permite sa navighezi prin bara de optiuni odata ce ai apasat <strong>Alt+tasta</strong>.</p>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tbody>
<tr>
<td style="border: 1px solid #555555; padding: 5px;"><a rel="attachment wp-att-226" href="http://tutorial-video.net/office/informatii-despre-excel-2007/attachment/12_tn/"><img class="aligncenter size-full wp-image-226" title="12_tn" src="http://tutorial-video.net/wp-content/uploads/2009/11/12_tn.jpg" alt="12_tn" width="500" height="191" /></a></td>
</tr>
</tbody>
</table>
<p>Apasa tasta directionala sus + Tab pentru a parcurge comenzile in directia opusa si apasa Enter pentru a selecta o comanda.  Poti merge in diferite zone ale ferestrei programului utilizand tasta <strong>F6</strong>.</p>
<p>Tasta spatiu activeaza si dezactiveaza &#8220;<strong>options checks</strong>&#8220;, tasta directionala sus+<strong>F10</strong> activeaza meniul contextual, iar <strong>ESC</strong> inchide meniul contextual.</p>
]]></content:encoded>
			<wfw:commentRss>http://tutorial-video.net/office/informatii-despre-excel-2007/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Imparte o fotografie in mai multe &#8211; Tutorial Photoshop</title>
		<link>http://tutorial-video.net/tutoriale-photoshop-2/imparte-o-fotografie-in-mai-multe-tutorial-photoshop/</link>
		<comments>http://tutorial-video.net/tutoriale-photoshop-2/imparte-o-fotografie-in-mai-multe-tutorial-photoshop/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 16:06:25 +0000</pubDate>
		<dc:creator>cosmin92</dc:creator>
				<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[foto]]></category>
		<category><![CDATA[imparte]]></category>
		<category><![CDATA[imparte foto]]></category>
		<category><![CDATA[ps]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[tutorial photoshop]]></category>
		<category><![CDATA[Tutoriale]]></category>

		<guid isPermaLink="false">http://tutorial-video.net/?p=195</guid>
		<description><![CDATA[Deschide imaginea in Photoshop
Deschide imaginea in Photoshop, executa clic pe icoana GO TO Bridge  situata in bara de optiuni pentru instrument. Se deschide programul Adobe Bridge intr-o alta fereastra, afisand o colectie de panouri si meniuri. Deschide dosarul cu imagini pe care l-ai downloadat, selecteaza imaginea pe care vom lucra si deschide-o executand dublu clic.
Creeaza [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><strong>Deschide imaginea in Photoshop</strong></p>
<p style="text-align: justify;">Deschide imaginea in Photoshop, executa clic pe icoana <strong>GO TO Bridge <a rel="attachment wp-att-179" href="http://tutorial-video.net/tutoriale-photoshop-2/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/a9cada179c4909b7b5b3258f9e90d175/"><img class="size-full wp-image-179 alignnone" title="a9cada179c4909b7b5b3258f9e90d175" src="http://tutorial-video.net/wp-content/uploads/2009/10/a9cada179c4909b7b5b3258f9e90d175.jpg" alt="a9cada179c4909b7b5b3258f9e90d175" width="40" height="30" /></a></strong> situata in bara de optiuni pentru instrument. Se deschide programul <strong>Adobe Bridge</strong> intr-o alta fereastra, afisand o colectie de panouri si meniuri. Deschide dosarul cu imagini pe care l-ai downloadat, selecteaza imaginea pe care vom lucra si deschide-o executand dublu clic.</p>
<p style="text-align: justify;"><strong>Creeaza un polaroid</strong></p>
<p style="text-align: justify;">Urmeaza sa cream o fotografie tip polaroid sau o poti utiliza pe cea din fisierul download-at. Creaza un <strong>layer </strong>nou, clic pe icoana <strong>Create a new layer </strong>situat in <strong>Layers Palette</strong> si selecteaza unealta <strong>Rectangle Tool</strong> din caseta de instrumente (Toolbox). Seteaza culoarea <strong>Foreground Color #dcdedd</strong> si traseaza un dreptunghi peste imagine. Creaza inca un <strong>layer</strong> si tot cu instrumentul <strong>Rectangle Tool</strong> traseaza un al doilea dreptunghi, cu o dimensiune mai mica, setand culoarea<strong> Foreground Color neagra</strong>.</p>
<p><a rel="attachment wp-att-196" href="http://tutorial-video.net/tutoriale-photoshop-2/imparte-o-fotografie-in-mai-multe-tutorial-photoshop/attachment/impartire1/"><img class="aligncenter size-full wp-image-196" title="impartire1" src="http://tutorial-video.net/wp-content/uploads/2009/10/impartire1.jpg" alt="impartire1" width="580" height="300" /></a></p>
<p style="text-align: justify;">Selecteaza cele doua <strong>layere</strong> care contin dreptunghiurile (polaroidul) din<strong> Lyers Palette</strong>, tinand apasata tasta <em>Shift</em> si executa clic pe icoana <strong>Link Layers</strong> situata in partea de jos in <strong>Layers Palette</strong>. Avand cele doua <strong>layere</strong> selectate executa clic pe meniul <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="40" height="30" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.hazliu.org/uploadtimecafe/uploads/f13d3a5a1bb21c3a993df418d792970e.jpg" /><embed type="application/x-shockwave-flash" width="40" height="30" src="http://www.hazliu.org/uploadtimecafe/uploads/f13d3a5a1bb21c3a993df418d792970e.jpg"></embed></object> din<strong> Layers Palette</strong> situat in partea de sus dreapta si alege optiunea <strong>New Group for </strong> <strong>Layers…</strong>,astfel grupand cele doua layere. Urmeaza sa multiplicam grupul (polaroidul), selecteaza <strong>Layer &gt; Duplicate Group….</strong><br />
Urmeaza sa aranjam polaroidele in imagine astfel daca doresti sa rotesti imaginea polaroidului selecteaza Edit &gt; Transform &gt; Rotate.</p>
<p style="text-align: center;"><a rel="attachment wp-att-197" href="http://tutorial-video.net/tutoriale-photoshop-2/imparte-o-fotografie-in-mai-multe-tutorial-photoshop/attachment/impartire2/"><img class="aligncenter size-full wp-image-197" title="impartire2" src="http://tutorial-video.net/wp-content/uploads/2009/10/impartire2.jpg" alt="impartire2" width="580" height="300" /></a></p>
<p><strong>Decupeaza imaginea</strong></p>
<p style="text-align: justify;">Du-te la <strong>Layers Palette</strong> si deschide grupul de layere pe care l-ai creat mai devreme si selecteaza <strong>layerul</strong> care contine dreptunghiul de culoare neagra. Tinand tasta <em>Ctrl.</em> apasata executa clic pe <strong>Layer Mask</strong> estfel dreptunghiul devenind activ.</p>
<p><a rel="attachment wp-att-198" href="http://tutorial-video.net/tutoriale-photoshop-2/imparte-o-fotografie-in-mai-multe-tutorial-photoshop/attachment/impartire3/"><img class="aligncenter size-full wp-image-198" title="impartire3" src="http://tutorial-video.net/wp-content/uploads/2009/10/impartire3.jpg" alt="impartire3" width="580" height="300" /></a></p>
<div style="margin: 3px; text-align: center;"><script type="text/javascript">// <![CDATA[
google_ad_client = "pub-";
google_alternate_color = "FFFFFF";
google_ad_width = ;
google_ad_height = ;
google_ad_format = "_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "";
google_color_link = "";
google_color_bg = "";
google_color_text = "";
google_color_url = "";
google_ui_features = "rc:0";
// ]]&gt;</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script><script type="text/javascript">// <![CDATA[
google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);
// ]]&gt;</script></div>
<p>Acum selecteaza <strong>layerul</strong> care contine imaginea pe care dorim sa o “decupam” si selecteaza <strong>Edit &gt; Copy. </strong>Du-te inapoi in <strong>Layers Palette</strong> si selecteaza <strong>Layer Mask</strong> dupa care selecteaza <strong>Edit &gt; Paste Into</strong>. Pentru celelalte polaroide repeta pasii facuti mai devreme.</p>
<p><a rel="attachment wp-att-199" href="http://tutorial-video.net/tutoriale-photoshop-2/imparte-o-fotografie-in-mai-multe-tutorial-photoshop/attachment/impartire4/"><img class="aligncenter size-full wp-image-199" title="impartire4" src="http://tutorial-video.net/wp-content/uploads/2009/10/impartire4.jpg" alt="impartire4" width="580" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://tutorial-video.net/tutoriale-photoshop-2/imparte-o-fotografie-in-mai-multe-tutorial-photoshop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cum sa faci un meteorit in Photoshop &#8211; Tutorial</title>
		<link>http://tutorial-video.net/tutoriale-photoshop-2/cum-sa-faci-un-meteorit-in-photoshop-tutorial/</link>
		<comments>http://tutorial-video.net/tutoriale-photoshop-2/cum-sa-faci-un-meteorit-in-photoshop-tutorial/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 10:07:25 +0000</pubDate>
		<dc:creator>cosmin92</dc:creator>
				<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[casa poporului]]></category>
		<category><![CDATA[meteorit in photoshop]]></category>
		<category><![CDATA[ps]]></category>
		<category><![CDATA[tutorial photoshop]]></category>
		<category><![CDATA[tutorial video]]></category>
		<category><![CDATA[Tutoriale]]></category>
		<category><![CDATA[tutoriale noi]]></category>

		<guid isPermaLink="false">http://tutorial-video.net/?p=174</guid>
		<description><![CDATA[Deschide un document in Photoshop
Deschide un document nou in Photoshop cu o dimensiune 1280×1024 pxl. si rezolutia de 300 dpi. Pentru fundal am ales culoarea neagra; selecteaza Paint Bucket Tool din caseta de instrumente (Toolbox) avand culoarea Foreground #030303 si clic pe imagine, aceasta schimbandu-si culoarea.

Introducerea unei imagini in Photoshop
Urmeaza sa introducem imaginea care contine [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Deschide un document in Photoshop</strong><br />
Deschide un document nou in Photoshop cu o dimensiune 1280×1024 pxl. si rezolutia de 300 dpi. Pentru fundal am ales culoarea neagra; selecteaza <strong>Paint Bucket Tool </strong>din caseta de instrumente (Toolbox) avand culoarea <strong>Foreground #030303</strong> si clic pe imagine, aceasta schimbandu-si culoarea.</p>
<p><a rel="attachment wp-att-178" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/meteorit/"><img class="aligncenter size-full wp-image-178" title="meteorit" src="http://tutorial-video.net/wp-content/uploads/2009/10/meteorit.jpg" alt="meteorit" width="400" height="300" /></a></p>
<p><strong>Introducerea unei imagini in Photoshop</strong><br />
Urmeaza sa introducem imaginea care contine Casa Poporului in Photoshop. Eu folosesc browser-ul grafic <strong>Bridge</strong> asa ca executa clic pe icoana <strong>GO TO Bridge <a rel="attachment wp-att-179" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/a9cada179c4909b7b5b3258f9e90d175/"><img class="alignnone size-full wp-image-179" title="a9cada179c4909b7b5b3258f9e90d175" src="http://tutorial-video.net/wp-content/uploads/2009/10/a9cada179c4909b7b5b3258f9e90d175.jpg" alt="a9cada179c4909b7b5b3258f9e90d175" width="40" height="30" /></a></strong> situata in bara de optiuni pentru instrument. Se deschide programul <strong>Adobe</strong> <strong>Bridge</strong> intr-o alta fereastra, afisand o colectie de panouri si meniuri.</p>
<p><img title="img 2" src="http://www.hazliu.org/uploadtimecafe/uploads/0019baed298c373f0c5f44100cfae1f5.jpg" alt="" width="580" height="300" /></p>
<p>Deschide dosarul cu imagini pe care l-ai downloadat, selecteaza imaginea Casei Poporului si deschide-o executand dublu clic. Clic pe imaginea care contine Casa Poporului si trage cursorul fara sa dai drumul butonului, peste imaginea cu fundal negru. Selecteaza <strong>Edit &gt; Free Transform </strong>si modifica dimensiunea imaginii si pozitioneaz-o in cadru.</p>
<p><a rel="attachment wp-att-181" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/meteorit-1/"><img class="aligncenter size-full wp-image-181" title="meteorit-1" src="http://tutorial-video.net/wp-content/uploads/2009/10/meteorit-1.jpg" alt="meteorit-1" width="580" height="300" /></a></p>
<p>Urmeaza sa introducem a doua imagine, cea care contine nori, prin aceeasi metoda. Dupa cum ti-ai dat seama vom folosi doar norii din imagine asa ca vom aplica o masca. Dupa ce ai pozitionat imaginea in partea de sus executa clic pe icoana <strong>Add Layer Mask </strong>situata in partea de jos in <strong>Layers Palette</strong>. Selecteaza unealta <strong>Paint Bucket Tool</strong> din caseta de instrumente (Toolbox). Alege <strong>Foreground Color #000000</strong> si seteaza <strong>Master Diameter</strong> aproximativ <strong>260pxl</strong>. si <strong>Hardness – 0%</strong> si aplica peste imagine lasand doar partea cu nori neacoperita.</p>
<p><a rel="attachment wp-att-182" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/meteorit-2/"><img class="aligncenter size-full wp-image-182" title="meteorit-2" src="http://tutorial-video.net/wp-content/uploads/2009/10/meteorit-2.jpg" alt="meteorit-2" width="580" height="300" /></a></p>
<p>Pentru a intuneca imaginea tine apasata tasta <em>Alt.</em> si executa clic pe icoana<strong> Create new fill or adjustments</strong> situata in partea de jos in <strong>Layers Palette</strong>, langa icoana <strong>Add Layer Mask</strong>, si selecteaza optiunea <strong>Levels…</strong> In fereastra deschisa seteaza <strong>Output Levels 101 – 0.48 – 255</strong></p>
<p><a rel="attachment wp-att-187" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/meteorit-3/"><img class="aligncenter size-full wp-image-187" title="meteorit-3" src="http://tutorial-video.net/wp-content/uploads/2009/10/meteorit-3.jpg" alt="meteorit-3" width="580" height="300" /></a></p>
<p><strong>Creeaza cometa</strong><br />
Creaza un layer nou, executa clic pe icoana <strong>Create new layer</strong> situat in partea de jos al <strong>Layers Palette</strong>. Selecteaza unealta<strong> Paint Bucket Tool</strong> din caseta de instrumente (Toolbox). Alege<strong> Foreground Color #000066 </strong>si seteaza <strong>Master Diameter</strong> aproximativ<strong> 260pxl Hardness – 0%</strong> si aplica peste fundal. Repeta pasii schimband doar culoarea si diametrul pensulei,alege<strong> Foreground Color #0000cc</strong> si seteaza <strong>Master Diameter</strong> aproximativ <strong>198pxl Hardness – 0%</strong> si aplica peste prima culoare.</p>
<p><a rel="attachment wp-att-188" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/meteorit-4/"><img class="aligncenter size-full wp-image-188" title="meteorit-4" src="http://tutorial-video.net/wp-content/uploads/2009/10/meteorit-4.jpg" alt="meteorit-4" width="580" height="300" /></a></p>
<p>Din nou alege <strong>Foreground Color #3399ff</strong> si seteaza <strong>Master</strong> <strong>Diameter</strong> aproximativ <strong>198pxl Hardness – 0%</strong> si aplica peste culoare, alege <strong>Foreground Color #3399ff </strong>si seteaza <strong>Master Diameter</strong> aproximativ <strong>198pxl Hardness – 0%</strong> si alege <strong>Foreground Color #99ccff</strong> si seteaza <strong>Master Diameter</strong> aproximativ<strong> 198pxl Hardness – 0%</strong> si aplica peste culoare. Pentru final alege <strong>Foreground Color </strong>alba <strong>#ffffff</strong> si seteaza <strong>Master Diameter</strong> aproximativ <strong>108pxl Hardness – 0%</strong> si aplica peste culoare.</p>
<p><a rel="attachment wp-att-189" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/meteorit-5/"><img class="aligncenter size-full wp-image-189" title="meteorit-5" src="http://tutorial-video.net/wp-content/uploads/2009/10/meteorit-5.jpg" alt="meteorit-5" width="580" height="300" /></a></p>
<p>Acum selecteaza unealta <strong>Smudge Tool</strong> din caseta de instrumente (Toolbox) si seteaza <strong>Master Diameter</strong> aproximativ <strong>120pxl Hardness – 0%</strong> iar <strong>Strength 85%</strong>. Trage o linie dinspre centrul globului desenat spre exterior. Recomand sa incerci de mai multe ori si poti experimenta cu dimensiunea pensulei sau chiar sa mai trasezi niste linii mai subtiri pe marginea globului. In cazul in care gresesti foloseste unealta <strong>Eraser Tool</strong> si corecteaza.</p>
<p><a rel="attachment wp-att-190" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/meteorit-6/"><img class="aligncenter size-full wp-image-190" title="meteorit-6" src="http://tutorial-video.net/wp-content/uploads/2009/10/meteorit-6.jpg" alt="meteorit-6" width="580" height="300" /></a></p>
<div style="margin: 3px; text-align: center;"><script type="text/javascript">// <![CDATA[
google_ad_client = "pub-";
google_alternate_color = "FFFFFF";
google_ad_width = ;
google_ad_height = ;
google_ad_format = "_as";
google_ad_type = "text";
google_ad_channel ="";
google_color_border = "";
google_color_link = "";
google_color_bg = "";
google_color_text = "";
google_color_url = "";
google_ui_features = "rc:0";
// ]]&gt;</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script><script type="text/javascript">// <![CDATA[
google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);
// ]]&gt;</script></div>
<p>Avand selectata unealta <strong>Smudge Tool</strong> din caseta de instrumente (Toolbox) si <strong>Master Diameter</strong> aproximativ <strong>30pxl Hardness – 0% </strong>iar <strong>Strength 75%</strong> traseaza niste “gulere” pe marginea globului catre “coada”.</p>
<p><a rel="attachment wp-att-191" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/meteorit-7/"><img class="aligncenter size-full wp-image-191" title="meteorit-7" src="http://tutorial-video.net/wp-content/uploads/2009/10/meteorit-7.jpg" alt="meteorit-7" width="580" height="300" /></a></p>
<p><strong>Creeaza fum</strong><br />
Dupa cum ai observat cometa este urmata de o dara de fum. Urmeaza sa introducem si a treia imagine, cea care contine un horn fumegand prin aceeasi metoda pe care am folosit-o mai devreme. Dupa ce ai introdus imaginea ii vom aplica o masca ,executa clic pe icoana Add Layer Mask situata in partea de jos in Layers Palette. Selecteaza unealta Paint Bucket Tool din caseta de instrumente (Toolbox). Alege Foreground Color #000000 si seteaza Master Diameter aproximativ 260pxl. si Hardness – 0% si aplica peste imagine lasand doar fumul neacoperit. Acum selecteaza Edit &gt; Free Transform si modifica dimensiunea imaginii si pozitioneaz-o in spatele cometei peste o portiune din “coada”.</p>
<p><a rel="attachment wp-att-192" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/meteorit-8/"><img class="aligncenter size-full wp-image-192" title="meteorit-8" src="http://tutorial-video.net/wp-content/uploads/2009/10/meteorit-8.jpg" alt="meteorit-8" width="580" height="300" /></a></p>
<p>Pentru a intuneca imaginea tine apasata tasta Alt. si executa clic pe icoana Create new fill or adjustments situata in partea de jos in Layers Palette, langa icoana Add Layer Mask, si selecteaza optiunea Levels… In fereastra deschisa seteaza Output Levels 106 – 0.71 – 252</p>
<p><strong>Creeaza umbra de lumina</strong><br />
Pentru a obtine o imagine mai verosimila ii vom adauga o umbra de lumina . Selecteaza layerul care contine cometa si trage-l peste icoana <strong>Create new layer</strong> situat in partea de jos al <strong>Layers Palette</strong> astfel duplicand-o. Copia cometei trage-o in partea de jos a imagini si seteaza optiunea <strong>Opacity</strong> aproximativ <strong>20%</strong>. Selecteaza <strong>Filter &gt; Blur &gt; Gausian Blur</strong> si alege optiunea <strong>Radius 6pxl</strong>.</p>
<p><strong><a rel="attachment wp-att-175" href="http://tutorial-video.net/tutoriale-photoshop-grafica-design/cum-sa-faci-un-meteorit-in-photoshop-tutorial/attachment/acb037ae589caa1285660fabc11b081a/"><img class="aligncenter size-full wp-image-175" title="acb037ae589caa1285660fabc11b081a" src="http://tutorial-video.net/wp-content/uploads/2009/10/acb037ae589caa1285660fabc11b081a.jpg" alt="acb037ae589caa1285660fabc11b081a" width="580" height="300" /></a><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://tutorial-video.net/tutoriale-photoshop-2/cum-sa-faci-un-meteorit-in-photoshop-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP &amp; MySQL (partea 1) &#8211; Tutorial (7)</title>
		<link>http://tutorial-video.net/development/php-si-mysql/</link>
		<comments>http://tutorial-video.net/development/php-si-mysql/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 09:15:07 +0000</pubDate>
		<dc:creator>cosmin92</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[introducere in mysql]]></category>
		<category><![CDATA[introducere in php]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[tutorial mysql]]></category>
		<category><![CDATA[tutorial php]]></category>
		<category><![CDATA[tutorial video]]></category>
		<category><![CDATA[tutoriale video]]></category>

		<guid isPermaLink="false">http://tutorial-video.net/?p=172</guid>
		<description><![CDATA[Combinari si cautari
Unul dintre cele mai importante avantaje pe care le ofera PHP este suportul sau pentru o varietate de sisteme de gestiune pentru baze de date, inclusiv MySQL, PostgreSQL, Oracle si Microsoft Access. In virtutea acestui suport, developerii PHP pot crea aplicatii Web orientate pe date la un timp si la un cost redus [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Combinari si cautari</strong><br />
Unul dintre cele mai importante avantaje pe care le ofera PHP este suportul sau pentru o varietate de sisteme de gestiune pentru baze de date, inclusiv MySQL, PostgreSQL, Oracle si Microsoft Access. In virtutea acestui suport, developerii PHP pot crea aplicatii Web orientate pe date la un timp si la un cost redus fata de cele pe care le presupun alternativele lor competitive.</p>
<p>Folosind PHP si MySQL, developerii pot beneficia de economii substantiale asupra costurilor de licenta ale alternativelor comerciale, si de asemenea vor fi scutiti de uriasa cantitate de munca pe care au depus-o developerii PHP si MySQL pentru a se asigura ca cele doua pachete functioneaza impreuna fara nici o dificultate sau piedica. Si, din moment ce atat PHP si MySQL sunt proiecte open source, atunci cand le folosesti simultan, vei sti ca ti se ofera cea mai actualizata tehnologie disponibila.</p>
<p>OK. Sa trecem la treaba.<br />
In aceasta editie a PHP 101, iti voi arata cum sa folosesti PHP pentru a extrage date dintr-o baza de date, iar apoi sa le folosesti pentru a construi dinamic o pagina Web. Pentru a incerca exemplele din acest tutorial, vei avea nevoie de o instalare functionala MySQL, pe care o poti obtine de pe site-ul MySQL <a href="http://www.mysql.com/" target="_blank">http://www.mysql.com/</a>. Daca esti familiarizat cu SQL (Limbaj de Interogare Structurat? limbajul folosit in interactiunea cu serverul unei baze de date) ti se va parea util, insa acest lucru nu este esential.</p>
<p><strong>Construirea blocurilor</strong><br />
Pentru a utiliza MySQL si PHP, configuratia PHP trebuie sa includa suport pentru MySQL. In UNIX, acest lucru se realizeaza adaugand optiunea &#8211;with-mysql la script-ul configure in momentul instalarii PHP in UNIX, si marcand PHP in bibliotecile-client MySQL. In Windows, bibliotecile client MySQL sunt construite in PHP 4 si au activare prestabilita. In PHP 5, fisierele pre-construite .dll sunt incluse in cazul distributiei Windows. Poti citi mai mult pe aceasta tema la <a href="http://www.php.net/manual/en/ref.mysql.php" target="_blank">http://www.php.net/manual/en/ref.mysql.php</a>.</p>
<p>Utilizatorii Unix ar trebui sa ia aminte la faptul ca PHP 4 ofera un set de biblioteci client MySQL care sunt activate automat; totusi, PHP 5 nu mai pune la dispozitie aceste biblioteci datorita unor probleme de licenta, asa ca va trebui sa le obtii, instalezi si activezi tu insuti. Ele sunt incluse in distributia MySQL si se instaleaza automat in momentul in care instalezi MySQL. Pentru a activa extensia MySQL, ext/mysql, adauga optiunea &#8211;with-mysql la scriptul de configurare PHP. Pentru mai multe informatii pe tema acestei modificari, citeste <a href="http://www.php.net/manual/en/faq.databases.php#faq.databases.mysql.php5" target="_blank">http://www.php.net/manual/en/faq.databases.php#faq.databases.mysql.php5</a>.</p>
<p>Si, in sfarsit, (ca si cum toate aceste aspecte nu sunt destul de debusolante) PHP 5 mai aduce si o noua extensie MySQL, numita ext/mysqli (MySQL Improved). Poti folosi aceasta noua extensie pentru a accesa noile optiuni ale MySQL 4.1.2 sau ale unei versiuni si mai avansate, si pentru a te bucura de beneficiile unei viteze si securitati sporite. Pentru a activa aceasta extensie in UNIX, adauga optiunea <strong>&#8211;with-mysqli</strong> scriptului configure al PHP, si marcheaza PHP in programul  <strong>mysql_config</strong> care vine odata cu MySQL 4.1 sau cu o varianta superioara. Pentru utilizatorii Windows, exista o versiune pre-construita a ext/mysqli, inclusa in distributia win32 PHP. Citeste mai mult pe aceasta tema la <a href="http://www.php.net/manual/en/ref.mysqli.php" target="_blank">http://www.php.net/manual/en/ref.mysqli.php</a>.</p>
<p>Pentru a-ti da seama de ce extensie ai nevoie, foloseste urmatorul procedeu empiric:<br />
•Daca ai nevoie de noile optiuni din MySQL 4.1.2 sau dintr-o versiune mai avansata, sau daca folosesti o versiune mai veche a MySQL dar totusi doresti sa beneficiezi de perfectionarile la nivelul vitezei/securitatii din noua extensie, foloseste ext/mysqli.<br />
•Daca nu apartii nici uneia dintre categoriile de mai sus, sau daca nici nu intelegi despre ce vorbesc, foloseste obisnuitul ext/mysql.<br />
In caz ca te intrebai, acest tutorial acopera atat ext/mysql cat si ext/mysqli, asa ca le vei obtine pe amandoua ?la pretul uneia?. Continua sa citesti, si permite-mi sa te initiez in MySQL.</p>
<p><strong>Magnetism animal</strong><br />
Orice baza de date MySQL se compune din unul sau mai multe tabele. Aceste tabele, care structureaza datele in randuri si coloane, sunt cele care organizeaza datele.</p>
<p>Iata un exemplu care iti prezinta aspectul unui tabel tipic:</p>
<div>
<pre><span>+----+-----------+----------+
| </span><span>id</span><span> | </span><span>country</span><span>   | </span><span>animal</span><span>   |
+----+-----------+----------+
|  </span><span>1</span><span> | </span><span>America</span><span>   | </span><span>eagle</span><span>    |
|  </span><span>2</span><span> | </span><span>China</span><span>     | </span><span>dragon</span><span>   |
|  </span><span>3</span><span> | </span><span>England</span><span>   | </span><span>lion</span><span>     |
|  </span><span>4</span><span> | </span><span>India</span><span>     | </span><span>tiger</span><span>    |
|  </span><span>5</span><span> | </span><span>Australia</span><span> | </span><span>kangaroo</span><span> |
|  </span><span>6</span><span> | </span><span>Norway</span><span>    | </span><span>elk</span><span>      |
+----+-----------+----------+</span></pre>
</div>
<p>Dupa cum poti remarca, un tabel imparte datele in randuri, cu o noua intrare (sau inregistrare) pe fiecare rand. Datele din fiecare rand sunt mai departe impartite in celule (sau campuri), fiecare dintre acestea continand o valoare pentru un anumit atribut al datelor. De exemplu, daca te uiti la inregistrarea corespunzatoare tarii &#8220;India&#8221;, vei vedea ca inregistrarea este in mod evident impartita in campuri separate pentru numarul inregistrarii, numele tarii si animalul national.</p>
<p>Randurile din cadrul unui tabel nu sunt aranjate intr-o ordine anume ? ele pot fi sortate alfabetic, dupa numar, sau dupa orice alt criteriu pe care alegi sa il specifici. Este deci necesar sa ai o metoda de identificare a anumitor inregistrari din tabel. In exemplul de mai sus, fiecare inregistrare este inidividualizata printr-un numar unic; acest camp unic se numeste cheia primara a tabelului.</p>
<p>Vei folosi Limbajul de Interogare Structurat, SQL, pentru a interactiona cu serverul MySQL si pentru a-i spune sa creeze un tabel, sa marcheze un camp ca fiind primar, sa insereze inregistrari, sa editeze inregistrari, sa extraga inregistrari&#8230; in principiu, orice implica manipularea datelor sau a bazei de date. Pentru a vedea cum functioneaza acest proces, studiaza urmatorul SQL, care creeaza tabelul de mai sus:</p>
<div>
<pre><span>CREATE</span><span> </span><span>DATABASE</span><span> </span><span>testdb</span><span>;
</span><span>CREATE</span><span> </span><span>TABLE</span><span> </span><span>`</span><span>symbols</span><span>`</span><span> </span><span>(</span><span>
    </span><span>`</span><span>id</span><span>`</span><span> </span><span>int</span><span>(</span><span>11</span><span>)</span><span> </span><span>NOT</span><span> </span><span>NULL</span><span> </span><span>auto_increment</span><span>,
    </span><span>`</span><span>country</span><span>`</span><span> </span><span>varchar</span><span>(</span><span>255</span><span>)</span><span> </span><span>NOT</span><span> </span><span>NULL</span><span> </span><span>default</span><span> </span><span>'</span><span>'</span><span>,
    </span><span>`</span><span>animal</span><span>`</span><span> </span><span>varchar</span><span>(</span><span>255</span><span>)</span><span> </span><span>NOT</span><span> </span><span>NULL</span><span> </span><span>default</span><span> </span><span>'</span><span>'</span><span>,
    </span><span>PRIMARY</span><span> </span><span>KEY</span><span>  </span><span>(</span><span>`</span><span>id</span><span>`</span><span>)</span><span>
</span><span>)</span><span> </span><span>TYPE</span><span>=</span><span>MyISAM</span><span>;
</span><span>INSERT</span><span> </span><span>INTO</span><span> </span><span>`</span><span>symbols</span><span>`</span><span> </span><span>VALUES</span><span> </span><span>(</span><span>1</span><span>, </span><span>'</span><span>America</span><span>'</span><span>, </span><span>'</span><span>eagle</span><span>'</span><span>)</span><span>;
</span><span>INSERT</span><span> </span><span>INTO</span><span> </span><span>`</span><span>symbols</span><span>`</span><span> </span><span>VALUES</span><span> </span><span>(</span><span>2</span><span>, </span><span>'</span><span>China</span><span>'</span><span>, </span><span>'</span><span>dragon</span><span>'</span><span>)</span><span>;
</span><span>INSERT</span><span> </span><span>INTO</span><span> </span><span>`</span><span>symbols</span><span>`</span><span> </span><span>VALUES</span><span> </span><span>(</span><span>3</span><span>, </span><span>'</span><span>England</span><span>'</span><span>, </span><span>'</span><span>lion</span><span>'</span><span>)</span><span>;
</span><span>INSERT</span><span> </span><span>INTO</span><span> </span><span>`</span><span>symbols</span><span>`</span><span> </span><span>VALUES</span><span> </span><span>(</span><span>4</span><span>, </span><span>'</span><span>India</span><span>'</span><span>, </span><span>'</span><span>tiger</span><span>'</span><span>)</span><span>;
</span><span>INSERT</span><span> </span><span>INTO</span><span> </span><span>`</span><span>symbols</span><span>`</span><span> </span><span>VALUES</span><span> </span><span>(</span><span>5</span><span>, </span><span>'</span><span>Australia</span><span>'</span><span>, </span><span>'</span><span>kangaroo</span><span>'</span><span>)</span><span>;
</span><span>INSERT</span><span> </span><span>INTO</span><span> </span><span>`</span><span>symbols</span><span>`</span><span> </span><span>VALUES</span><span> </span><span>(</span><span>6</span><span>, </span><span>'</span><span>Norway</span><span>'</span><span>, </span><span>'</span><span>elk</span><span>'</span><span>)</span><span>;</span></pre>
</div>
<p>Poti introduce aceste comenzi fie interactiv, fie ne-interactiv prin programul client din linii de comenzi MySQL, pe care il poti rula navigand in directorul mysql/bin de pe shell-ul tau sau din DOS si tastand ? fara ?;? intrucat aceasta este o comanda shell &#8211; fie <strong>mysql</strong>, fie <strong>mysql db_name</strong> daca vrei sa alegi o baza de date existenta cu care sa lucrezi. Citeste <a href="http://dev.mysql.com/doc/mysql/en/mysql.html" target="_blank">http://dev.mysql.com/doc/mysql/en/mysql.html</a> pentru mai multe informatii despre cum sa folosesti clientul MySQL in linie de comanda, precum si tutorialul de pe <a href="http://www.melonfire.com/community/columns/trog/article.php?id=3" target="_blank">http://www.melonfire.com/community/columns/trog/article.php?id=39</a> pentru a intelege ce indeplineste fiecare dintre comenzile SQL de mai sus. SQL seamana mult cu engleza vorbita, asa ca nu iti va lua foarte mult timp sa ti-l insusesti. Numai sa nu incerci sa transformi backtick-urile in ghilimele simple.</p>
<p>Odata ce datele au fost importate, ruleaza o interogare rapida <strong>SELECT</strong> pentru a verifica daca totul merge asa cum ar trebui:</p>
<div>
<pre><span>mysql</span><span>&gt; </span><span>SELECT</span><span> * </span><span>FROM</span><span> </span><span>`</span><span>symbols</span><span>`</span><span>;
+----+-----------+----------+
| </span><span>id</span><span> | </span><span>country</span><span>   | </span><span>animal</span><span>   |
+----+-----------+----------+
|  </span><span>1</span><span> | </span><span>America</span><span>   | </span><span>eagle</span><span>    |
|  </span><span>2</span><span> | </span><span>China</span><span>     | </span><span>dragon</span><span>   |
|  </span><span>3</span><span> | </span><span>England</span><span>   | </span><span>lion</span><span>     |
|  </span><span>4</span><span> | </span><span>India</span><span>     | </span><span>tiger</span><span>    |
|  </span><span>5</span><span> | </span><span>Australia</span><span> | </span><span>kangaroo</span><span> |
|  </span><span>6</span><span> | </span><span>Norway</span><span>    | </span><span>elk</span><span>      |
+----+-----------+----------+
</span><span>6</span><span> </span><span>rows</span><span> </span><span>in</span><span> </span><span>set</span><span> </span><span>(</span><span>0.06</span><span> </span><span>sec</span><span>)</span></pre>
</div>
<p>In engleza, interogarea de mai sus inseamna &#8220;arata-mi toate inregistrarile din tabelul intitulat symbols&#8221;. Daca ai vizualizat aceleasi iesiri ca si mai sus, esti gata sa pornesti!</p>
<p><strong>Salut, baza de date!</strong><br />
Acum, sa folosim PHP pentru a realiza exact acelasi lucru. Ai putea folosi PHP de la bun inceput pentru a construi baza de date, dar avand in vedere ca in cazul nostru, ea deja exista, vom lansa pur si simplu o interogare SELECT asupra bazei de date &#8216;testdb&#8217;, si vom afisa rezultatele intr-o pagina HTML:</p>
<div>
<pre><span>&lt;html&gt;
&lt;head&gt;
&lt;basefont face="Arial"&gt;
&lt;/head&gt;
&lt;body&gt;
</span><span>&lt;?php</span><span> 

</span><span>//</span><span> seteaza variabilele de acces la serverul MySQL </span><span>
</span><span>$host</span><span> = </span><span>"</span><span>localhost</span><span>"</span><span>;
</span><span>$user</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$pass</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$db</span><span> = </span><span>"</span><span>testdb</span><span>"</span><span>; 

</span><span>//</span><span> deschide conexiunea </span><span>
</span><span>$connection</span><span> = </span><span>mysql_connect</span><span>(</span><span>$host</span><span>, </span><span>$user</span><span>, </span><span>$pass</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Nu ma pot
conecta la serverul MySQL!</span><span>"</span><span>)</span><span>; 

</span><span>//</span><span> selecteaza baza de date </span><span>
</span><span>mysql_select_db</span><span>(</span><span>$db</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Nu pot selecta baza de date!</span><span>"</span><span>)</span><span>; 

</span><span>//</span><span> creeaza interogarea </span><span>
</span><span>$query</span><span> = </span><span>"</span><span>SELECT * FROM symbols</span><span>"</span><span>; 

</span><span>//</span><span> executa interogarea </span><span>
</span><span>$result</span><span> = </span><span>mysql_query</span><span>(</span><span>$query</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Interogarea SQL contine o
eroare: </span><span>$query</span><span>. </span><span>"</span><span>.</span><span>mysql_error</span><span>(</span><span>)</span><span>)</span><span>; 

</span><span>//</span><span> verifica daca interogarea a returnat vreun rand </span><span>
</span><span>if</span><span> </span><span>(</span><span>mysql_num_rows</span><span>(</span><span>$result</span><span>)</span><span> &gt; </span><span>0</span><span>)</span><span> </span><span>{</span><span>
    </span><span>//</span><span> daca da </span><span>
    </span><span>//</span><span> afiseaza randurile returnate unul dupa altul </span><span>
    </span><span>echo</span><span> </span><span>"</span><span>&lt;table cellpadding=10 border=1&gt;</span><span>"</span><span>;
    </span><span>while</span><span>(</span><span>$row</span><span> = </span><span>mysql_fetch_row</span><span>(</span><span>$result</span><span>)</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>"</span><span>&lt;tr&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>0</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>1</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>2</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;/tr&gt;</span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>echo</span><span> </span><span>"</span><span>&lt;/table&gt;</span><span>"</span><span>;
</span><span>}</span><span>
</span><span>else</span><span> </span><span>{</span><span>
    </span><span>//</span><span> daca nu </span><span>
    </span><span>//</span><span> afiseaza mesaj </span><span>
    </span><span>echo</span><span> </span><span>"</span><span>Nu a fost gasit nici un rand!</span><span>"</span><span>;
</span><span>}</span><span> 

</span><span>//</span><span> elibereaza memoria </span><span>
</span><span>mysql_free_result</span><span>(</span><span>$result</span><span>)</span><span>; 

</span><span>//</span><span> inchide conexiunea cu baza de date </span><span>
</span><span>mysql_close</span><span>(</span><span>$connection</span><span>)</span><span>;
</span><span>?&gt;</span><span>
&lt;/body&gt;
&lt;/html&gt;</span>
Iata cum arata rezultatul:
<table style="border: 1px solid #cccccc;" border="0" cellspacing="0" cellpadding="3">
<tbody>
<tr>
<td style="border: 1px solid #cccccc;"><span>1</span></td>
<td style="border: 1px solid #cccccc;"><span>America</span></td>
<td style="border: 1px solid #cccccc;"><span>eagle</span></td>
</tr>
<tr>
<td style="border: 1px solid #cccccc;"><span>3</span></td>
<td style="border: 1px solid #cccccc;"><span>England</span></td>
<td style="border: 1px solid #cccccc;"><span>lion</span></td>
</tr>
<tr>
<td style="border: 1px solid #cccccc;"><span>4</span></td>
<td style="border: 1px solid #cccccc;"><span>India</span></td>
<td style="border: 1px solid #cccccc;"><span>tiger</span></td>
</tr>
<tr>
<td style="border: 1px solid #cccccc;"><span>5</span></td>
<td style="border: 1px solid #cccccc;"><span>Australia</span></td>
<td style="border: 1px solid #cccccc;"><span>kangaroo</span></td>
</tr>
<tr>
<td style="border: 1px solid #cccccc;"><span>6</span></td>
<td style="border: 1px solid #cccccc;"><span>Norway</span></td>
<td style="border: 1px solid #cccccc;"><span>elk</span></td>
</tr>
</tbody>
</table>

<span><strong> </strong></span></pre>
<p>Dupa cum poti vedea, utilizarea PHP-ului pentru a extrage date dintr-o baza de date presupune mai multi pasi, fiecare dintre acestia fiind de fapt o functie PHP pre-definita. Sa analizam fiecare pas:</p>
<p>1. Primul lucru care trebuie facut este sa specificam anumite informatii importante, care sunt necesare stabilirii unei conexiuni la serverul bazei de date. Aceste informatii cuprind numele serverului, numele de utilizator si parola necesara pentru a o accesa, precum si numele bazei de date pe care se efectueaza interogarea. Toate aceste valori se construiesc in variabile PHP regulate.</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>$host</span><span> = </span><span>"</span><span>localhost</span><span>"</span><span>;
</span><span>$user</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$pass</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$db</span><span> = </span><span>"</span><span>testdb</span><span>"</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>2. Pentru a incepe comunicarea cu un server de baze de date MySQL, trebuie sa deschizi o conexiune la acel server. Orice comunicare intre PHP si serverul bazei de date va avea loc prin intermediul acestei conexiuni.</p>
<p>Pentru a initializa aceasta conexiune, PHP ofera functia <strong>mysql_connect()</strong>:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>$connection</span><span> = </span><span>mysql_connect</span><span>(</span><span>$server</span><span>, </span><span>$user</span><span>, </span><span>$pass</span><span>)</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>Toti parametrii din <strong>mysql_connect()</strong> sunt optionali, insa exista trei anume de care vei avea in general nevoie pentru a-i folosi, de pe orice computer de pe care lucrezi: numele serverului bazei de date, numele de utilizator si parola. In cazul in care serverul bazei de date si serverul Web sunt localizate fizic pe acelasi computer, poti folosi localhost ca nume pentru serverul bazei de date, aceasta fiind de fapt valoarea pre-stabilita pe care o furnizeaza PHP.</p>
<p><strong>mysql_connect()</strong> va returna un &#8220;identificator de link&#8221;, care este stocat in variabila <strong>$connection</strong>. Acest identificator este folosit in comunicarea cu baza de date.</p>
<p>3.	Odata ce esti conectat la baza de date, trebuie sa selectezi o baza de date in vederea utilizarii, cu ajutorul functiei <strong>mysql_select_db()</strong>:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>mysql_select_db</span><span>(</span><span>$db</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Nu pot selecta baza de date!</span><span>"</span><span>)</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>Acestei functii trebuie sa ii fie furnizat numele bazei de date ce va fi folosita pentru toate interogarile ulterioare. Un argument secundar optional ar fi identificatorul de link; daca nu se specifica nici un identificator, se considera ca atare ultimul link deschis. Daca ai doua sau mai multe conexiuni de baze de date deschise concomitent, este indicat sa specifici identificatorul de link ca argument secundar al <strong>mysql_select_db()</strong> ? si de asemenea al oricarei alte functii  <strong>mysql_*</strong> din script, astfel incat PHP sa nu faca confuzii cu privire la unde trebuie sa foloseasca o conexiune, si unde pe cealalta.</p>
<p>4.	Urmatorul pas este sa creezi o interogare si sa o executi. Acest lucru se realizeaza cu functia the <strong>mysql_query()</strong>.</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>$query</span><span> = </span><span>"</span><span>SELECT * FROM symbols</span><span>"</span><span>;
</span><span>$result</span><span> = </span><span>mysql_query</span><span>(</span><span>$query</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Interogarea SQL contine o
eroare: </span><span>$query</span><span>. </span><span>"</span><span>.</span><span>mysql_error</span><span>(</span><span>)</span><span>)</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>Aceasta functie necesita de asemenea doi parametri: sirul de interogare si identificatorul de link pentru conexiune. Din nou, daca nu se specifica nici un identificator de link, se va folosi ultimul link deschis. In functie de reusita sau esecul interogarii, functia va returna true sau false; un eventual esec poate fi detectat prin intermediul clauzei &#8230;<strong>or die()</strong> a functiei, iar functia <strong>mysql_error()</strong> poate fi folosita pentru a afisa mesajul corespunzator de eroare.</p>
<p>5.	Daca  <strong>mysql_query()</strong> se realizeaza cu succes, setul de rezultate returnat de catre interogare va fi stocat in variabila <strong>$result</strong>. Acest rezultat poate contine unul sau mai multe randuri sau coloane de date, in functie de interogarea ta. Poti extrage anumite subseturi ale setului de rezultate cu alte functii PHP, inclusiv cea folosita aici &#8211; functia <strong>mysql_fetch_row()</strong> &#8211; care extrage un singur rand de date ca o matrice numita <strong>$row</strong>. Campurile din acest rand pot fi apoi accesate folosind sistemul standard de notatii PHP. De fiecare data cand apelezi <strong>mysql_fetch_row()</strong>, se va returna urmatoarea inregistrare din setul de rezultate. Acest lucru face ca <strong>mysql_fetch_row()</strong> sa fie deosebit de potrivit pentru utilizarea intr-o bucla <strong>while()</strong> sau <strong>for()</strong>.</p>
<div>
<pre><span>&lt;?php</span><span> 

</span><span>if</span><span> </span><span>(</span><span>mysql_num_rows</span><span>(</span><span>$result</span><span>)</span><span> &gt; </span><span>0</span><span>)</span><span> </span><span>{</span><span>
    </span><span>while</span><span>(</span><span>$row</span><span> = </span><span>mysql_fetch_row</span><span>(</span><span>$result</span><span>)</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>0</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>1</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>2</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
    </span><span>}</span><span>
</span><span>}</span><span>
</span><span>?&gt;</span></pre>
</div>
<p>Retine faptul ca  apelarea  <strong>mysql_fetch_row()</strong> este inclusa intr-un instructiune conditionala, care mai intai verifica daca s-a returnat vreun rand. Aceasta informatie este furnizata de  catre functia mysql_num_rows(), care contine numarul de randuri returnat de catre interogare. Evident, poti folosi aceasta functie doar pentru interogarile care returneaza date, cum ar fi <strong>SELECT</strong> or <strong>SHOW</strong>. Ea nu este adecvata  pentru a fi utilizata in cazul <strong>INSERT</strong>, <strong>UPDATE</strong>, <strong>DELETE</strong> sau alte interogari  de acest tip.  Mai exista si alte  cateva alternative la <strong>mysql_fetch_row()</strong>, care vor fi  explicate mai jos.</p>
<p>In sfarsit, pentru ca fiecare set de rezultate returnat in urma unei interogari ocupa memorie, o practica buna este aceea de a utiliza functia <strong>mysql_free_result()</strong> pentru a elibera memoria folosita. Odata ce rezultatul este eliberat, si daca nu intentionezi sa mai rulezi alte interogari, poti inchide conexiunea la serverul MySQL cu <strong>mysql_close()</strong>.</p>
<div>
<pre><span>&lt;?php</span><span> 

</span><span>mysql_free_result</span><span>(</span><span>$result</span><span>)</span><span>;
</span><span>mysql_close</span><span>(</span><span>$connection</span><span>)</span><span>; 

</span><span>?&gt;</span>
<strong>Diverse  abordari...</strong>
 De asemenea, poti folosi functiile PHP <strong>mysql_fetch_row()</strong> si <strong>list()</strong> pentru a obtine o simpla matrice de valori, iar apoi pentru a aloca aceste valori diverselor variabile – o varianta a tehnicii prezentate in sectiunea precedenta. Arunca o privire (doar bucla <strong>while()</strong> se schimba):
<div>
<pre><span>&lt;html&gt;
&lt;head&gt;
&lt;basefont face="Arial"&gt;
&lt;/head&gt;
&lt;body&gt; 

</span><span>&lt;?php</span><span> 

</span><span>//</span><span> seteaza variabilele de acces la serverul MySQL </span><span>
</span><span>$host</span><span> = </span><span>"</span><span>localhost</span><span>"</span><span>;
</span><span>$user</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$pass</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$db</span><span> = </span><span>"</span><span>testdb</span><span>"</span><span>; 

</span><span>//</span><span> deschide conexiunea</span><span>
</span><span>$connection</span><span> = </span><span>mysql_connect</span><span>(</span><span>$host</span><span>, </span><span>$user</span><span>, </span><span>$pass</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Nu ma pot
conecta la serverul MySQL!</span><span>"</span><span>)</span><span>; 

</span><span>//</span><span> selecteaza baza de date </span><span>
</span><span>mysql_select_db</span><span>(</span><span>$db</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Nu pot selecta baza de date!</span><span>"</span><span>)</span><span>; 

</span><span>//</span><span> creeaza interogarea </span><span>
</span><span>$query</span><span> = </span><span>"</span><span>SELECT * FROM symbols</span><span>"</span><span>; 

</span><span>//</span><span> executa interogarea</span><span>
</span><span>$result</span><span> = </span><span>mysql_query</span><span>(</span><span>$query</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Interogarea SQL
contine o eroare: </span><span>$query</span><span>. </span><span>"</span><span>.</span><span>mysql_error</span><span>(</span><span>)</span><span>)</span><span>; 

</span><span>//</span><span> verifica daca interogarea a returnat vreun rand </span><span>
</span><span>if</span><span> </span><span>(</span><span>mysql_num_rows</span><span>(</span><span>$result</span><span>)</span><span> &gt; </span><span>0</span><span>)</span><span> </span><span>{</span><span>
    </span><span>//</span><span> daca da</span><span>
    </span><span>//</span><span> afiseaza randurile returnate unul dupa altul</span><span>
    </span><span>echo</span><span> </span><span>"</span><span>&lt;table cellpadding=10 border=1&gt;</span><span>"</span><span>;
    </span><span>while</span><span>(</span><span>list</span><span>(</span><span>$id</span><span>, </span><span>$country</span><span>, </span><span>$animal</span><span>)</span><span> = </span><span>mysql_fetch_row</span><span>(</span><span>$result</span><span>)</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>"</span><span>&lt;tr&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>$id</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>$country</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>$animal</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;/tr&gt;</span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>echo</span><span> </span><span>"</span><span>&lt;/table&gt;</span><span>"</span><span>;
</span><span>}</span><span>
</span><span>else</span><span> </span><span>{</span><span>
    </span><span>//</span><span> daca nu </span><span>
    </span><span>//</span><span> afiseaza mesaj </span><span>
    </span><span>echo</span><span> </span><span>"</span><span>Nu a fost gasit nici un rand!</span><span>"</span><span>;
</span><span>}</span><span> 

</span><span>//</span><span> elibereaza memoria </span><span>
</span><span>mysql_free_result</span><span>(</span><span>$result</span><span>)</span><span>; 

</span><span>//</span><span> inchide conexiunea cu baza de date </span><span>
</span><span>mysql_close</span><span>(</span><span>$connection</span><span>)</span><span>; 

</span><span>?&gt;</span><span> 

&lt;/body&gt;
&lt;/html&gt;</span></pre>
</div>
<p>In acest caz, functia <strong>list()</strong> este folosita pentru a aloca diverse elemente ale setului de rezultate unor variabile  PHP, care sunt apoi folosite in redarea paginii. Poti folosi functia PHP <strong>mysql_fetch_assoc()</strong> pentru a reprezenta fiecare rand ca o matrice asociativa de perechi camp-valoare – o variatie minora a tehnicii folosite mai sus:</p>
<div>
<pre><span>&lt;html&gt;
&lt;head&gt;
&lt;basefont face="Arial"&gt;
&lt;/head&gt;
&lt;body&gt; 

</span><span>&lt;?php</span><span> 

</span><span>//</span><span> seteaza variabilele de acces la serverul MySQL </span><span>
</span><span>$host</span><span> = </span><span>"</span><span>localhost</span><span>"</span><span>;
</span><span>$user</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$pass</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$db</span><span> = </span><span>"</span><span>testdb</span><span>"</span><span>; 

</span><span>//</span><span> deschide conexiunea </span><span>
</span><span>$connection</span><span> = </span><span>mysql_connect</span><span>(</span><span>$host</span><span>, </span><span>$user</span><span>, </span><span>$pass</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Nu ma pot
conecta la serverul MySQL!</span><span>"</span><span>)</span><span>; 

</span><span>//</span><span> selecteaza baza de date </span><span>
</span><span>mysql_select_db</span><span>(</span><span>$db</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Nu pot selecta baza de date!</span><span>"</span><span>)</span><span>; 

</span><span>//</span><span> creeaza interogarea  </span><span>
</span><span>$query</span><span> = </span><span>"</span><span>SELECT * FROM symbols</span><span>"</span><span>; 

</span><span>//</span><span> executa interogarea </span><span>
</span><span>$result</span><span> = </span><span>mysql_query</span><span>(</span><span>$query</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Interogarea SQL
contine o eroare: </span><span>$query</span><span>. </span><span>"</span><span>.</span><span>mysql_error</span><span>(</span><span>)</span><span>)</span><span>; 

</span><span>//</span><span> verifica daca interogarea a returnat vreun rand</span><span>
</span><span>if</span><span> </span><span>(</span><span>mysql_num_rows</span><span>(</span><span>$result</span><span>)</span><span> &gt; </span><span>0</span><span>)</span><span> </span><span>{</span><span>
    </span><span>//</span><span> daca da </span><span>
    </span><span>//</span><span> afiseaza randurile returnate unul dupa altul</span><span>
    </span><span>echo</span><span> </span><span>"</span><span>&lt;table cellpadding=10 border=1&gt;</span><span>"</span><span>;
    </span><span>while</span><span>(</span><span>$row</span><span> = </span><span>mysql_fetch_assoc</span><span>(</span><span>$result</span><span>)</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>"</span><span>&lt;tr&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>'</span><span>id</span><span>'</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>'</span><span>country</span><span>'</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>'</span><span>animal</span><span>'</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;/tr&gt;</span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>echo</span><span> </span><span>"</span><span>&lt;/table&gt;</span><span>"</span><span>;
</span><span>}</span><span>
</span><span>else</span><span> </span><span>{</span><span>
    </span><span>//</span><span> daca nu </span><span>
    </span><span>//</span><span> afiseaza mesaj </span><span>
    </span><span>echo</span><span> </span><span>"</span><span>Nu a fost gasit nici un rand!</span><span>"</span><span>;
</span><span>}</span><span> 

</span><span>//</span><span> elibereaza memoria </span><span>
</span><span>mysql_free_result</span><span>(</span><span>$result</span><span>)</span><span>; 

</span><span>//</span><span> inchide conexiunea cu baza de date </span><span>
</span><span>mysql_close</span><span>(</span><span>$connection</span><span>)</span><span>; 

</span><span>?&gt;</span><span> 

&lt;/body&gt;
&lt;/html&gt;</span></pre>
</div>
<p>Observa faptul ca in acest caz, valorile  campurilor se acceseaza folosind numele campului in loc de index.<br />
Totusi, dintre toate alternativele, functia  pe care o prefer cel mai mult este  <strong>mysql_fetch_object()</strong>, care returneaza  fiecare rand ca un obiect cu proprietati ce corespund numelor campurilor:</p>
<div>
<pre><span>&lt;html&gt;
&lt;head&gt;
&lt;basefont face="Arial"&gt;
&lt;/head&gt;
&lt;body&gt; 

</span><span>&lt;?php</span><span> 

</span><span>//</span><span> seteaza variabilele de acces la serverul MySQL </span><span>
</span><span>$host</span><span> = </span><span>"</span><span>localhost</span><span>"</span><span>;
</span><span>$user</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$pass</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$db</span><span> = </span><span>"</span><span>testdb</span><span>"</span><span>; 

</span><span>//</span><span> deschide conexiunea </span><span>
</span><span>$connection</span><span> = </span><span>mysql_connect</span><span>(</span><span>$host</span><span>, </span><span>$user</span><span>, </span><span>$pass</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Nu ma pot
conecta la serverul MySQL!</span><span>"</span><span>)</span><span>; 

</span><span>//</span><span> selecteaza baza de date </span><span>
</span><span>mysql_select_db</span><span>(</span><span>$db</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Nu pot selecta baza de date!</span><span>"</span><span>)</span><span>; 

</span><span>//</span><span> creeaza interogarea </span><span>
</span><span>$query</span><span> = </span><span>"</span><span>SELECT * FROM symbols</span><span>"</span><span>; 

</span><span>//</span><span> executa interogarea </span><span>
</span><span>$result</span><span> = </span><span>mysql_query</span><span>(</span><span>$query</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Interogarea SQL
contine o eroare: </span><span>$query</span><span>. </span><span>"</span><span>.</span><span>mysql_error</span><span>(</span><span>)</span><span>)</span><span>; 

</span><span>//</span><span> verifica daca interogarea a returnat vreun rand </span><span>
</span><span>if</span><span> </span><span>(</span><span>mysql_num_rows</span><span>(</span><span>$result</span><span>)</span><span> &gt; </span><span>0</span><span>)</span><span> </span><span>{</span><span>
    </span><span>//</span><span> daca da </span><span>
    </span><span>//</span><span> afiseaza randurile returnate unul dupa altul </span><span>
    </span><span>echo</span><span> </span><span>"</span><span>&lt;table cellpadding=10 border=1&gt;</span><span>"</span><span>;
    </span><span>while</span><span>(</span><span>$row</span><span> = </span><span>mysql_fetch_object</span><span>(</span><span>$result</span><span>)</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>"</span><span>&lt;tr&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>-&gt;</span><span>id</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>-&gt;</span><span>country</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>-&gt;</span><span>animal</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;/tr&gt;</span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>echo</span><span> </span><span>"</span><span>&lt;/table&gt;</span><span>"</span><span>;
</span><span>}</span><span>
</span><span>else</span><span> </span><span>{</span><span>
    </span><span>//</span><span> daca nu </span><span>
    </span><span>//</span><span> afiseaza mesaj </span><span>
    </span><span>echo</span><span> </span><span>"</span><span>Nu a fost gasit nici un rand!</span><span>"</span><span>;
</span><span>}</span><span> 

</span><span>//</span><span> elibereaza memoria </span><span>
</span><span>mysql_free_result</span><span>(</span><span>$result</span><span>)</span><span>; 

</span><span>//</span><span> inchide conexiunea cu baza de date </span><span>
</span><span>mysql_close</span><span>(</span><span>$connection</span><span>)</span><span>; 

</span><span>?&gt;</span><span> 

&lt;/body&gt;
&lt;/html&gt;</span></pre>
</div>
<p>Aici, fiecare obiect $row este creat cu proprietati ce corespund numelor campurilor din acel rand. Valorile de pe rand pot fi accesate folosind notatia standard object-&gt;property. Daca esti genul caruia ii place sa profite de toate beneficiile, probabil te vei bucura de functia <strong>mysql_fetch_array()</strong>, care returneaza  atat o matrice asociativa cat si o matrice cu indici numerici, o combinatie  intre functia <strong>mysql_fetch_row()</strong> si <strong>mysql_fetch_assoc()</strong>. Citeste despre  asta la <a href="http://www.php.net/manual/en/function.mysql-fetch-array.php" target="_blank">http://www.php.net/manual/en/function.mysql-fetch-array.php</a>.</p>
<p><strong>Pentru  diferite gusturi...</strong><br />
Daca folosesti PHP 5, poti face acelasi lucru folosind noua extensie ext/mysqli, care ofera o serie de noi optiuni. Aceasta extensie poate fi folosita in doua moduri: procedural (utilizand functii), si cu orientare pe obiecte (utilizand metode si proprietati de clasa). Studiaza scriptul urmator, care foloseste uses ext/mysqli intr-un mod procedural:</p>
<div>
<pre><span>&lt;html&gt;
&lt;head&gt;
&lt;basefont face="Arial"&gt;
&lt;/head&gt;
&lt;body&gt; 

</span><span>&lt;?php</span><span> 

</span><span>//</span><span> seteaza variabilele de acces la serverul MySQL </span><span>
</span><span>$host</span><span> = </span><span>"</span><span>localhost</span><span>"</span><span>;
</span><span>$user</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$pass</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$db</span><span> = </span><span>"</span><span>testdb</span><span>"</span><span>; 

</span><span>//</span><span> deschide conexiunea </span><span>
</span><span>$connection</span><span> = </span><span>mysqli_connect</span><span>(</span><span>$host</span><span>, </span><span>$user</span><span>, </span><span>$pass</span><span>, </span><span>$db</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Nu ma pot
conecta la serverul MySQL!</span><span>"</span><span>)</span><span>; 

</span><span>//</span><span> creeaza interogarea </span><span>
</span><span>$query</span><span> = </span><span>"</span><span>SELECT * FROM symbols</span><span>"</span><span>; 

</span><span>//</span><span> executa interogarea </span><span>
</span><span>$result</span><span> = </span><span>mysqli_query</span><span>(</span><span>$connection</span><span>, </span><span>$query</span><span>)</span><span> </span><span>or</span><span> </span><span>die</span><span> </span><span>(</span><span>"</span><span>Interogarea SQL
contine o eroare: </span><span>$query</span><span>. </span><span>"</span><span>.</span><span>mysqli_error</span><span>(</span><span>)</span><span>)</span><span>; 

</span><span>//</span><span> verifica daca interogarea a returnat vreun rand </span><span>
</span><span>if</span><span> </span><span>(</span><span>mysqli_num_rows</span><span>(</span><span>$result</span><span>)</span><span> &gt; </span><span>0</span><span>)</span><span> </span><span>{</span><span>
    </span><span>//</span><span> daca da </span><span>
    </span><span>//</span><span> afiseaza randurile returnate unul dupa altul </span><span>
    </span><span>echo</span><span> </span><span>"</span><span>&lt;table cellpadding=10 border=1&gt;</span><span>"</span><span>;
    </span><span>while</span><span>(</span><span>$row</span><span> = </span><span>mysqli_fetch_row</span><span>(</span><span>$result</span><span>)</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>"</span><span>&lt;tr&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>0</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>1</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>2</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
        </span><span>echo</span><span> </span><span>"</span><span>&lt;/tr&gt;</span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>echo</span><span> </span><span>"</span><span>&lt;/table&gt;</span><span>"</span><span>;
</span><span>}</span><span>
</span><span>else</span><span> </span><span>{</span><span>
    </span><span>//</span><span> daca nu </span><span>
    </span><span>//</span><span> afiseaza mesaj </span><span>
    </span><span>echo</span><span> </span><span>"</span><span>Nu a fost gasit nici un rand!</span><span>"</span><span>;
</span><span>}</span><span> 

</span><span>//</span><span> elibereaza memoria </span><span>
</span><span>mysqli_free_result</span><span>(</span><span>$result</span><span>)</span><span>; 

</span><span>//</span><span> inchide conexiunea </span><span>
</span><span>mysqli_close</span><span>(</span><span>$connection</span><span>)</span><span>; 

</span><span>?&gt;</span><span> 

&lt;/body&gt;
&lt;/html&gt;</span></pre>
</div>
<p>Dupa cum poti vedea, seamana mult cu codul scris pentru ext/mysql. Singura diferenta reala— cel putin la prima vedere – este faptul ca numele functiilor incep in acest caz cu <strong>mysqli_*</strong> in loc de <strong>mysql_*</strong>. Desigur, mai exista destule diferente in profunzime: ext/mysqli este mai rapid, mai sigur si mai puternic decat obisnuita ext/mysql, incluzand de asemenea suport pentru instructiuni predefinite, seturi de rezultate, interogari multiple simultane, tranzactii si o groaza de alte lucruri marfa. Poti folosi de asemenea  ext/mysqli intr-o modalitate de orientare pe obiecte, in care fiecare sarcina – conectare, interogare, extragere – reprezinta de fapt o metoda a obiectului <strong>mysqli()</strong>:</p>
<div>
<pre><span>&lt;html&gt;
&lt;head&gt;
&lt;basefont face="Arial"&gt;
&lt;/head&gt;
&lt;body&gt; 

</span><span>&lt;?php</span><span> 

</span><span>//</span><span> seteaza variabilele de acces la serverul MySQL </span><span>
</span><span>$host</span><span> = </span><span>"</span><span>localhost</span><span>"</span><span>;
</span><span>$user</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$pass</span><span> = </span><span>"</span><span>test</span><span>"</span><span>;
</span><span>$db</span><span> = </span><span>"</span><span>testdb</span><span>"</span><span>; 

</span><span>//</span><span> creeaza obiectul mysqli</span><span>
</span><span>//</span><span> deschide conexiunea </span><span>
</span><span>$mysqli</span><span> = </span><span>new</span><span> </span><span>mysqli</span><span>(</span><span>$host</span><span>, </span><span>$user</span><span>, </span><span>$pass</span><span>, </span><span>$db</span><span>)</span><span>; 

</span><span>//</span><span> verifica daca au aparut erori la conectare </span><span>
</span><span>if</span><span> </span><span>(</span><span>mysqli_connect_errno</span><span>(</span><span>)</span><span>)</span><span> </span><span>{</span><span>
    </span><span>die</span><span>(</span><span>"</span><span>Nu ma pot conecta la serverul MySQL!</span><span>"</span><span>)</span><span>;
</span><span>}</span><span> 

</span><span>//</span><span> creeaza interogarea </span><span>
</span><span>$query</span><span> = </span><span>"</span><span>SELECT * FROM symbols</span><span>"</span><span>; 

</span><span>//</span><span> executa interogarea </span><span>
</span><span>if</span><span> </span><span>(</span><span>$result</span><span> = </span><span>$mysqli</span><span>-&gt;</span><span>query</span><span>(</span><span>$query</span><span>)</span><span>)</span><span> </span><span>{</span><span> 

    </span><span>//</span><span> verifica daca interogarea a returnat vreun rand </span><span>
    </span><span>if</span><span> </span><span>(</span><span>$result</span><span>-&gt;</span><span>num_rows</span><span> &gt; </span><span>0</span><span>)</span><span> </span><span>{</span><span>
        </span><span>//</span><span> daca da </span><span>
        </span><span>//</span><span> afiseaza randurile returnate unul dupa altul </span><span>
        </span><span>echo</span><span> </span><span>"</span><span>&lt;table cellpadding=10 border=1&gt;</span><span>"</span><span>;
        </span><span>while</span><span>(</span><span>$row</span><span> = </span><span>$result</span><span>-&gt;</span><span>fetch_array</span><span>(</span><span>)</span><span>)</span><span> </span><span>{</span><span>
            </span><span>echo</span><span> </span><span>"</span><span>&lt;tr&gt;</span><span>"</span><span>;
            </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>0</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
            </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>1</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
            </span><span>echo</span><span> </span><span>"</span><span>&lt;td&gt;</span><span>"</span><span>.</span><span>$row</span><span>[</span><span>2</span><span>]</span><span>.</span><span>"</span><span>&lt;/td&gt;</span><span>"</span><span>;
            </span><span>echo</span><span> </span><span>"</span><span>&lt;/tr&gt;</span><span>"</span><span>;
        </span><span>}</span><span>
        </span><span>echo</span><span> </span><span>"</span><span>&lt;/table&gt;</span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>else</span><span> </span><span>{</span><span>
        </span><span>//</span><span> daca nu </span><span>
        </span><span>//</span><span> afiseaza mesaj </span><span>
        </span><span>echo</span><span> </span><span>"</span><span>Nu a fost gasit nici un rand!</span><span>"</span><span>;
    </span><span>}</span><span> 

    </span><span>//</span><span> elibereaza memoria </span><span>
    </span><span>$result</span><span>-&gt;</span><span>close</span><span>(</span><span>)</span><span>;
</span><span>}</span><span>
</span><span>else</span><span> </span><span>{</span><span>
    </span><span>//</span><span> afiseaza mesaj de eroare </span><span>
    </span><span>echo</span><span> </span><span>"</span><span>Interogarea SQL contine o eroare: </span><span>$query</span><span>. </span><span>"</span><span>.</span><span>$mysqli</span><span>-&gt;</span><span>error</span><span>;
</span><span>}</span><span> 

</span><span>//</span><span> inchide conexiunea </span><span>
</span><span>$mysqli</span><span>-&gt;</span><span>close</span><span>(</span><span>)</span><span>; 

</span><span>?&gt;</span><span> 

&lt;/body&gt;
&lt;/html&gt;</span></pre>
</div>
<p>Aici, noul cuvant cheie este folosit pentru a instantia un obiect din clasa mysqli, si pentru a da informatia de conexiune a constructorului de obiect (inclusiv numele bazei de date). Obiectul care rezulta, stocat in variabila $mysqli, va expune apoi metode si proprietati pentru a indeplini sarcini de interogare, extragere si procesare a randurilor, precum si de tratare a erorilor. Daca te uiti atent la cele doua scripturi de mai sus, vei remarca numeroasele similitudini dintre numele functiei si cel al metodei, precum si structura scriptului. Dintre cele doua, se recomanda totusi metoda de orientare pe obiecte, mai ales in daca avem in vedere noul model de obiect din PHP 5. Alte cateva diferente importante de retinut:</p>
<ul>
<li>Cu ext/mysqli, poti include numele  bazei de date in argumentele asociate functiei <strong>mysqli_connect()</strong> sau constructorului <strong>mysqli()</strong>.</li>
<li>Atunci cand apelezi  <strong>mysqli_query()</strong> sau metoda de  interogare <strong>query()</strong> a obiectului mysqli, identificatorul de  link este obligatoriu, si nu optional.</li>
</ul>
<p>Pentru a afla mai multe despre PHP si MySQL, citeste continuarea acestui tutorial : PHP &amp; MySQL (partea 2)</pre>
</div>
<p><span><strong> </strong></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tutorial-video.net/development/php-si-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clase si obiecte &#8211; Tutorial (6)</title>
		<link>http://tutorial-video.net/development/clase-si-obiecte-tutorial/</link>
		<comments>http://tutorial-video.net/development/clase-si-obiecte-tutorial/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 11:28:14 +0000</pubDate>
		<dc:creator>cosmin92</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[introducerea in php]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Tutoriale]]></category>
		<category><![CDATA[tutoriale php]]></category>
		<category><![CDATA[tutoriale video]]></category>

		<guid isPermaLink="false">http://tutorial-video.net/?p=150</guid>
		<description><![CDATA[Pe parcursul acestui tutorial, vei putea citi despre capacitatile PHP in legatura cu implementarea obiectelor (atat in PHP 4 cat si in PHP 5) si vei putea urmari diverse exemple si explicatii ce ilustreaza utilizarea lor.
Clase si obiecte
Acum ca stii sa creezi functii in PHP, probabil ca ti-ai petrecut ultimele zile inspectand propriile aplicatii si [...]]]></description>
			<content:encoded><![CDATA[<p><span>Pe parcursul acestui tutorial, vei putea citi despre capacitatile PHP in legatura cu implementarea obiectelor (atat in PHP 4 cat si in PHP 5) si vei putea urmari diverse exemple si explicatii ce ilustreaza utilizarea lor.</span></p>
<p><strong>Clase si obiecte</strong><br />
Acum ca stii sa creezi functii in PHP, probabil ca ti-ai petrecut ultimele zile inspectand propriile aplicatii si inlocuind anumite fragmente de cod cu functii. Totusi, ar trebui sa stii ca functiile reprezinta doar varful icebergului. Sub ele, se ascunde un acronim de trei litere care inspira frica in randul programatorilor incepatori.</p>
<p><strong>POO.</strong><br />
Daca lucrezi de ceva timp in PHP, probabil ca ai mai auzit termenul de POO ? inseamna Programare Orientata pe Obiecte. In POO, scriptul PHP lucreaza cu entitati denumite ?obiecte? pentru construi functionalitatea necesara programului tau. Spre deosebire de PHP 4, PHP 5 ofera suport extins pentru POO, aducand obiectele PHP la standardele impuse de catre principiile POO si oferind programatorilor noi facilitati.</p>
<p>Pe parcursul acestui tutorial, vei putea citi despre capacitatile PHP in legatura cu implementarea obiectelor (atat in PHP 4 cat si in PHP 5) si vei putea urmari diverse exemple si explicatii ce ilustreaza utilizarea lor. Vom acoperi principiile de baza ? clasa, obiecte, atribute si metode ? insotite de cateva concepte mai avansate ? constructori, destructori, specificatori de acces, proprietati si clase mostenite. Chiar daca programarea orientata pe obiecte este un subiect nou pentru tine, nu ai de ce sa-ti faci griji ? obiectele in PHP sunt usor de folosit si de inteles, si te vor ajuta sa iti organizezi cat mai bine munca.</p>
<p><strong>Clase in PHP</strong><br />
Inainte de a trece mai departe, trebuie sa ai o idee clara despre conceptele pe care POO le presupune.</p>
<p>In PHP, o clasa reprezinta un set de instructiuni care indeplinesc o anumita sarcina. Implementarea unei clase contine atat variabile, cat si functii, ea reprezentand un sablon (template) cu ajutorul caruia pot fi create instante specifice.</p>
<p>Aceste instante specifice ale unei clase poarta numele de obiecte. Fiecare obiect are o serie de caracteristici, sau proprietati, si anumite functii predefinite ? metode. Aceste proprietati si metode ale unui obiect corespund variabilelor si functiilor din definitia clasei.</p>
<p>Odata ce ai creat o clasa, poti defini oricate instante ale acesteia. Fiecare dintre aceste instante reprezinta un obiect independent, ce poate fi manipulat fara ca celelalte obiecte sa fie afectate in vreun fel. Aceasta indepedenta a obiectelor devine foarte utila atunci cand trebuie sa lucrezi cu doua instante in acelasi timp ? de exemplu, doua conexiuni simultane la o baza de date, sau doua interogari (query), sau doua carucioare de cumparaturi ale unui magazin online.</p>
<p>Clasele te ajuta si in ceea ce priveste modularitatea codului ? poti defini o clasa intr-un fisier separat, incluzandu-l apoi in scripturile care folosesc aceasta clasa. Aceasta modalitate de implementare simplifica modificarile ulterioare pentru ca, in cazul in care vei dori sa adaugi noi functionalitati obiectelor tale, vei avea de modificat un singur fisier.</p>
<p>Ca sa intelegi mai bine cele de mai sus, sa luam ca exemplu un animal, cum ar fi un urs, si sa incercam sa il reprezentam ca un obiect.</p>
<p>Orice urs are anumite caracteristici ? varsta, greutate, sex ? care sunt echivalente cu proprietatile unui obiect. In plus, fiecare urs are anumite activitati ? mananca, doarme, merge, alearga si hiberneaza ? acestea reprezentand metodele unui obiect.</p>
<p>Deoarece toti ursii au in comun anumite caracteristici, putem crea un template Urs(), care defineste caracteristicile de baza si abilitatile fiecarui urs de pe planeta. Aceasta clasa Urs() poate fi utilizata pentru a crea un obiect $urs, proprietatile individuale ale unui Urs putand fi manipulate independent fata de cele ale altor obiecte de acelasi tip.</p>
<p>In PHP 5, clasa Urs ar arata in felul urmator:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> PHP 5 </span><span>
</span><span>//</span><span> definitia clasei</span><span>
</span><span>class</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> definitia proprietatilor</span><span>
    </span><span>public</span><span> </span><span>$nume</span><span>;
    </span><span>public</span><span> </span><span>$greutate</span><span>;
    </span><span>public</span><span> </span><span>$varsta</span><span>;
    </span><span>public</span><span> </span><span>$sex</span><span>;
    </span><span>public</span><span> </span><span>$culoare</span><span>;
    </span><span>//</span><span> definitia metodelor</span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>mananca</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> mananca... </span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>alearga</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> alearga... </span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>vaneaza</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> vaneaza... </span><span>"</span><span>;
    </span><span>}</span><span> 

    </span><span>public</span><span> </span><span>function</span><span> </span><span>doarme</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> doarme... </span><span>"</span><span>;
    </span><span>}</span><span>
</span><span>}</span><span>
</span><span>?&gt;</span></pre>
</div>
<p>Avand aceasta clasa, putem crea oricati ursi vrem:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> primul urs </span><span>
</span><span>$daddy</span><span> = </span><span>new</span><span> </span><span>Urs</span><span>;
</span><span>//</span><span> sa-i dam un nume </span><span>
</span><span>$daddy</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Tata urs</span><span>"</span><span>;
</span><span>//</span><span>  cati ani are </span><span>
</span><span>$daddy</span><span>-&gt;</span><span>varsta</span><span> = </span><span>8</span><span>;
</span><span>//</span><span> ce sex este </span><span>
</span><span>$daddy</span><span>-&gt;</span><span>sex</span><span> = </span><span>"</span><span>mascul</span><span>"</span><span>;
</span><span>//</span><span> culoarea blanii </span><span>
</span><span>$daddy</span><span>-&gt;</span><span>culoare</span><span> = </span><span>"</span><span>negru</span><span>"</span><span>;
</span><span>//</span><span> cat cantareste </span><span>
</span><span>$daddy</span><span>-&gt;</span><span>greutate</span><span> = </span><span>300</span><span>; 

</span><span>//</span><span> cel de-al doilea urs </span><span>
</span><span>$mommy</span><span> = </span><span>new</span><span> </span><span>Urs</span><span>;
</span><span>$mommy</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Mama urs</span><span>"</span><span>;
</span><span>$mommy</span><span>-&gt;</span><span>varsta</span><span> = </span><span>7</span><span>;
</span><span>$mommy</span><span>-&gt;</span><span>sex</span><span> = </span><span>"</span><span>femela</span><span>"</span><span>;
</span><span>$mommy</span><span>-&gt;</span><span>culoare</span><span> = </span><span>"</span><span>negru</span><span>"</span><span>;
</span><span>$mommy</span><span>-&gt;</span><span>greutate</span><span> = </span><span>310</span><span>; 

</span><span>//</span><span> cel de-al treilea urs </span><span>
</span><span>$baby</span><span> = </span><span>new</span><span> </span><span>Urs</span><span>;
</span><span>$baby</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Puiul urs</span><span>"</span><span>;
</span><span>$baby</span><span>-&gt;</span><span>varsta</span><span> = </span><span>1</span><span>;
</span><span>$baby</span><span>-&gt;</span><span>sex</span><span> = </span><span>"</span><span>mascul</span><span>"</span><span>;
</span><span>$baby</span><span>-&gt;</span><span>culoare</span><span> = </span><span>"</span><span>negru</span><span>"</span><span>;
</span><span>$baby</span><span>-&gt;</span><span>greutate</span><span> = </span><span>180</span><span>; 

</span><span>//</span><span> o seara placuta pentru familia Urs </span><span>
</span><span>//</span><span> ursul tata vaneaza si aduce prada acasa </span><span>
</span><span>$daddy</span><span>-&gt;</span><span>vaneaza</span><span>(</span><span>)</span><span>; 

</span><span>//</span><span> ursul mama mananca </span><span>
</span><span>$mommy</span><span>-&gt;</span><span>mananca</span><span>(</span><span>)</span><span>;
</span><span>//</span><span> la fel si puiul </span><span>
</span><span>$baby</span><span>-&gt;</span><span>mananca</span><span>(</span><span>)</span><span>; 

</span><span>//</span><span> ursul mama doarme</span><span>
</span><span>$mommy</span><span>-&gt;</span><span>doarme</span><span>(</span><span>)</span><span>;
</span><span>//</span><span> la fel si tatal </span><span>
</span><span>$daddy</span><span>-&gt; </span><span>doarme</span><span> </span><span>(</span><span>)</span><span>; 

</span><span>//</span><span> puiul mananca in continuare </span><span>
</span><span>$baby</span><span>-&gt;</span><span>mananca</span><span>(</span><span>)</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>Dupa cum se poate observa din exemplul de mai sus, atunci cand sunt definite noi obiecte, metodele si proprietatile lor pot fi accesate in mod independent pentru fiecare obiect.</p>
<p><strong>Definitia unei clase</strong><br />
Dupa ce am explicat conceptele de baza ale POO, sa vedem in continuare cum anume se defineste o clasa:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> PHP 5 </span><span>
</span><span>//</span><span> definitia clasei </span><span>
</span><span>class</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> defineste proprietatile public</span><span>
    </span><span>public</span><span> </span><span>$nume</span><span>;
    </span><span>public</span><span> </span><span>$varsta</span><span>;
    </span><span>//</span><span> alte proprietati </span><span>
    </span><span>//</span><span> defineste o metoda public</span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>mananca</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> mananca... </span><span>"</span><span>;
        </span><span>//</span><span> mai mult cod </span><span>
    </span><span>}</span><span>
    </span><span>//</span><span> alte metode  </span><span>
</span><span>}</span><span>
</span><span>?&gt;</span></pre>
</div>
<p>Orice definitie a unei clase incepe prin cuvantul cheie class, urmat de numele clasei. Acesta poate fi orice sir de caractere, in afara unui cuvant rezervat PHP, fiind urmat de o pereche de acolade ce include variabilele si functiile clasei.</p>
<p>PHP5 introduce un nou concept care nu este disponibil in PHP4: specificatorii de acces. Acestia controleaza gradul in care proprietatile obiectelor si metodele lor pot fi manipulate din exteriorul clasei, avand un rol important in ceea ce priveste securitatea claselor. Exista trei specificatori de acces, de la cel mai permisiv la cel mai restrictiv: public, private si protected. In definitia unei clase poti marca gradul de vizibilitate al unei proprietati sau metode precedand-o cu unul dintre cele trei cuvinte cheie.</p>
<p>In mod implicit, proprietatile si metodele unei clase sunt public. Aceasta inseamna ca ele pot fi accesate direct si manipulate de catre un script care nu se afla in interiorul clasei. Daca nu doresti acest lucru, il poti impiedica utilizand specificatorii de acces private sau protected, in functie de gradul de control pe care vrei sa il detina un script exterior asupra obiectelor tale. Deoarece in PHP4 nu exista specificatori de acces, definitia clasei de mai sus nu va functiona in PHP4. In schimb, ea poate fi inlocuita cu urmatorul cod:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> PHP 4 </span><span>
</span><span>//</span><span> definitia clasei </span><span>
</span><span>class</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> definitia proprietatilor </span><span>
    </span><span>var</span><span> </span><span>$nume</span><span>;
    </span><span>var</span><span> </span><span>$greutate</span><span>;
    </span><span>var</span><span> </span><span>$varsta</span><span>;
    </span><span>var</span><span> </span><span>$sex</span><span>;
    </span><span>var</span><span> </span><span>$culoare</span><span>;
    </span><span>//</span><span> definitia metodelor </span><span>
    </span><span>function</span><span> </span><span>mananca</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> mananca... </span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>function</span><span> </span><span>alearga</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> alearga... </span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>function</span><span> </span><span>vaneaza</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> vaneaza... </span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>function</span><span> </span><span>doarme</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> doarme... </span><span>"</span><span>;
    </span><span>}</span><span>
</span><span>}</span><span>
</span><span>?&gt;</span></pre>
</div>
<p>Avand in fata exemplul de mai sus, poti deduce usor faptul ca in PHP4 toate proprietatile si metodele unui obiect sunt public.</p>
<p>Pentru a crea o noua instanta a clasei de mai sus, foloseste cuvantul cheie new:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>$tata_urs</span><span> = </span><span>new</span><span> </span><span>Urs</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>Codul din exemplul anterior s-ar putea citi ca : ?creeaza un nou obiect de tipul Urs si salveaza-l in variabila <strong>$tata_urs</strong>?.</p>
<p>Acum poti accesa toate proprietatile si functiile clasei Urs folosind aceasta variabila. De exemplu, codul:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>$tata_urs</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Tata urs</span><span>"</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>s-ar traduce ca ?atribuie valoarea ?Tata urs? variabilei <strong>$nume</strong> a instantei <strong>$tata_urs</strong> a clasei Urs?, in timp ce declaratia:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>$tata_urs</span><span>-&gt;</span><span>doarme</span><span>(</span><span>)</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>inseamna ?executa functia <strong>doarme()</strong> pentru instanta <strong>$tata_urs</strong> a clasei Urs?.</p>
<p>Poti observa ca simbolul ?-&gt;? este folosit pentru a apela diferitele proprietati si metode ale obiectelor, caracterul ?$? fiind omis atunci cand accesam variabilele unui obiect.</p>
<p><strong>Cuvantul cheie ?this?</strong><br />
Daca vrei sa accesezi functiile si variabilele unei clase chiar in cadrul acesteia, atat PHP4, cat si PHP5, iti pun la dispozitie cuvantul <strong>cheie $this</strong>, care este folosit ca o referinta la instanta curenta. Pentru a vedea cum functioneaza acesta, sa modificam functia <strong>mananca()</strong> pentru a primi ca parametru un numar de unitati de mancare care sunt adunate la greutatea unui urs:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> PHP 5 </span><span>
</span><span>//</span><span> definitia clasei </span><span>
</span><span>class</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> definitia proprietatilor </span><span>
    </span><span>public</span><span> </span><span>$nume</span><span>;
    </span><span>public</span><span> </span><span>$greutate</span><span>;
    </span><span>//</span><span> definitia  metodelor</span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>mananca</span><span>(</span><span>$unitati</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> mananca </span><span>"</span><span>.</span><span>$unitati</span><span>.</span><span>"</span><span> unitati de mancare... </span><span>"</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>greutate</span><span> += </span><span>$unitati</span><span>;
    </span><span>}</span><span>
</span><span>}</span><span>
</span><span>?&gt;</span></pre>
</div>
<p>In acest caz, prefixul <strong>$this</strong> indica faptul ca variabila ce urmeaza a fi modificata a fost definita ca proprietate a clasei. Acest lucru poate fi exprimat ca: ?pentru acest obiect, aduna argumentul functiei <strong>mananca()</strong> la variabila <strong>$greutate</strong>?. In concluzie, cuvantul cheie $this iti ofera o metoda facila de a accesa variabilele si functiile ?locale? ale clasei.</p>
<p>Iata un exemplu care ilustreaza functionarea sa:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> creeaza instanta </span><span>
</span><span>$pui</span><span> = </span><span>new</span><span> </span><span>Urs</span><span>;
</span><span>$pui</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Puiul urs</span><span>"</span><span>;
</span><span>$pui</span><span>-&gt;</span><span>greutate</span><span> = </span><span>1000</span><span>;
</span><span>//</span><span> creeaza o alta instanta </span><span>
</span><span>//</span><span> cu valori independente pentru fiecare proprietate</span><span>
</span><span>$frate</span><span> = </span><span>new</span><span> </span><span>Urs</span><span>;
</span><span>$frate</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Fratele puiului</span><span>"</span><span>;
</span><span>$frate</span><span>-&gt;</span><span>greutate</span><span> = </span><span>1000</span><span>;
</span><span>//</span><span> afiseaza proprietatile </span><span>
</span><span>echo</span><span> </span><span>$pui</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> cantareste </span><span>"</span><span>.</span><span>$pui</span><span>-&gt;</span><span>greutate</span><span>.</span><span>"</span><span> unitati </span><span>"</span><span>;
</span><span>echo</span><span> </span><span>$frate</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> cantareste </span><span>"</span><span>.</span><span>$frate</span><span>-&gt;</span><span>greutate</span><span>.</span><span>"</span><span> unitati </span><span>"</span><span>;
</span><span>//</span><span> apeleaza functia mananca() </span><span>
</span><span>$pui</span><span>-&gt;</span><span>mananca</span><span>(</span><span>100</span><span>)</span><span>;
</span><span>$pui</span><span>-&gt;</span><span>mananca</span><span>(</span><span>50</span><span>)</span><span>;
</span><span>$frate</span><span>-&gt;</span><span>mananca</span><span>(</span><span>11</span><span>)</span><span>;
</span><span>//</span><span> afiseaza noile valori </span><span>
</span><span>echo</span><span> </span><span>$pui</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> cantareste acum </span><span>"</span><span>.</span><span>$pui</span><span>-&gt;</span><span>greutate</span><span>.</span><span>"</span><span> unitati </span><span>"</span><span>;
</span><span>echo</span><span> </span><span>$frate</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> cantareste acum </span><span>"</span><span>.</span><span>$frate</span><span>-&gt;</span><span>greutate</span><span>.</span><span>"</span><span> unitati </span><span>"</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>Codul de mai sus va afisa:</p>
<p>Puiul urs cantareste 1000 unitati<br />
Fratele puiului cantareste 1000 unitati<br />
Puiul urs mananca 100 unitati de mancare&#8230;<br />
Puiul urs mananca 50 unitati de mancare&#8230;<br />
Fratele puiului mananca 11 unitati de mancare&#8230;<br />
Puiul urs cantareste acum 1150 unitati<br />
Fratele puiului cantareste acum 1011 unitati</p>
<p><strong>Constructori</strong><br />
In PHP ai posibilitatea de a executa o metoda a unei clase atunci cand este creata o noua instanta a acesteia. Aceasta metoda poarta denumirea de constructor. Pentru a o utiliza, definitia clasei tale in PHP5 trebuie sa contina o functie speciala, <strong>__construct()</strong>.</p>
<p>De exemplu, daca vrei ca toti puii de urs nou-nascuti sa aiba blana maro si cantareasca 100 de unitati, poti folosi codul de mai jos:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> PHP 5 </span><span>
</span><span>//</span><span> definitia clasei </span><span>
</span><span>class</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> definitia proprietatilor </span><span>
    </span><span>public</span><span> </span><span>$nume</span><span>;
    </span><span>public</span><span> </span><span>$greutate</span><span>;
    </span><span>public</span><span> </span><span>$varsta</span><span>;
    </span><span>public</span><span> </span><span>$culoare</span><span>;
    </span><span>//</span><span> constructor </span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>__construct</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>$this</span><span>-&gt;</span><span>varsta</span><span> = </span><span>0</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>greutate</span><span> = </span><span>100</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>culoare</span><span> = </span><span>"</span><span>maro</span><span>"</span><span>;
    </span><span>}</span><span>
     </span><span>//</span><span> definitia metodelor </span><span>
</span><span>}</span><span>
</span><span>?&gt;</span></pre>
</div>
<p>In PHP4, constructorul trebuie sa aiba acelasi nume ca si clasa. Iata codul echivalent pentru PHP4:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> PHP 4 </span><span>
</span><span>//</span><span> definitia clasei </span><span>
</span><span>class</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> definitia proprietatilor </span><span>
    </span><span>var</span><span> </span><span>$nume</span><span>;
    </span><span>var</span><span> </span><span>$greutate</span><span>;
    </span><span>var</span><span> </span><span>$varsta</span><span>;
    </span><span>var</span><span> </span><span>$culoare</span><span>;
    </span><span>//</span><span> constructor </span><span>
    </span><span>function</span><span> </span><span>Urs</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>$this</span><span>-&gt;</span><span>varsta</span><span> = </span><span>0</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>greutate</span><span> = </span><span>100</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>culoare</span><span> = </span><span>"</span><span>maro</span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>//</span><span> definitia metodelor </span><span>
</span><span>}</span><span>
</span><span>?&gt;</span></pre>
</div>
<p>Sa cream o noua instanta a clasei:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> creeaza instanta </span><span>
</span><span>$pui</span><span> = </span><span>new</span><span> </span><span>Urs</span><span>;
</span><span>$pui</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Puiul urs</span><span>"</span><span>;
</span><span>echo</span><span> </span><span>$pui</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> are culoarea </span><span>"</span><span>.</span><span>$pui</span><span>-&gt;</span><span>culoare</span><span>.</span><span>"</span><span> si
cantareste </span><span>"</span><span>.</span><span>$pui</span><span>-&gt;</span><span>greutate</span><span>.</span><span>"</span><span> unitati la nastere</span><span>"</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>Constructorul va initializa in mod automat proprietatile culoare si greutate pentru fiecare obiect de tipul Urs care este creat. In consecinta, scriptul de mai sus la afisa:</p>
<p>Puiul urs are culoarea maro si cantareste 100 unitati la nastere</p>
<p><strong>Restrictionarea accesului</strong><br />
Dupa cum am precizat mai sus, PHP5 permite marcarea proprietatilor si metodelor unei clase ca private, ceea ce inseamna ca ele nu pot fi modificate sau afisate in afara definitiei clasei respective. Acest lucru este util a impiedica manipularea proprietatilor unei clase de catre o instanta a acesteia. Sa consideram urmatorul exemplu, care ilustreaza acest lucru prin adaugarea unei noi variabile private <strong>$_ultimeleUnitatiConsumate</strong> in clasa <strong>Urs()</strong>:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> PHP 5 </span><span>
</span><span>//</span><span> definitia clasei </span><span>
</span><span>class</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> definitia proprietatilor </span><span>
    </span><span>public</span><span> </span><span>$nume</span><span>;
    </span><span>public</span><span> </span><span>$greutate</span><span>;
    </span><span>public</span><span> </span><span>$varsta</span><span>;
    </span><span>private</span><span> </span><span>$_ultimeleUnitatiConsumate</span><span>;
    </span><span>//</span><span> constructor </span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>__construct</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>$this</span><span>-&gt;</span><span>varsta</span><span> = </span><span>0</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>greutate</span><span> = </span><span>100</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>_ultimeleUnitatiConsumate</span><span> = </span><span>0</span><span>;
    </span><span>}</span><span>
     </span><span>//</span><span> definitia metodelor </span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>mananca</span><span>(</span><span>$unitati</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> mananca </span><span>"</span><span>.</span><span>$unitati</span><span>.</span><span>"</span><span> unitati de mancare... </span><span>"</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>greutate</span><span> += </span><span>$unitati</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>_ultimeleUnitatiConsumate</span><span> = </span><span>$unitati</span><span>;
    </span><span>}</span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>afiseazaUltimaMasa</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>"</span><span>Unitatile consumate la ultima masa
        au fost </span><span>"</span><span>.</span><span>$this</span><span>-&gt;</span><span>_ultimeleUnitatiConsumate</span><span>.</span><span>"</span><span> </span><span>"</span><span>;
    </span><span>}</span><span>
</span><span>}</span><span>
</span><span>?&gt;</span></pre>
</div>
<p>Deoarece variabila  <strong>$_ultimeleUnitatiConsumate</strong> este declarata ca private, orice tentativa de a o modifica va genera o eroare. Iata un exemplu:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>$bob</span><span> = </span><span>new</span><span> </span><span>Urs</span><span>;
</span><span>$bob</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Ursul Bobby</span><span>"</span><span>;
</span><span>$bob</span><span>-&gt;</span><span>mananca</span><span>(</span><span>100</span><span>)</span><span>;
</span><span>$bob</span><span>-&gt;</span><span>mananca</span><span>(</span><span>200</span><span>)</span><span>;
</span><span>echo</span><span> </span><span>$bob</span><span>-&gt; </span><span>afiseazaUltimaMasa</span><span>(</span><span>)</span><span>;
</span><span>//</span><span> urmatoarea linie va genera o eroare </span><span>
</span><span>$bob</span><span>-&gt;</span><span>_ultimeleUnitatiConsumate</span><span> = </span><span>1000</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>In mod similar, si metodele unei clase pot fi declarate ca private, ceea ce inseamna ca ele nu pot fi apelate decat din interiorul clasei respective.</p>
<p><strong>Mostenirea unei clase</strong><br />
Doua dintre principalele avantaje ale POO, fie PHP4, fie PHP5, sunt extensibilitatea si mostenirea. Aceasta inseamna ca poti crea o clasa noua dintr-o clasa deja existenta, adaugand noi proprietati si metode, si apoi poti defini noi instante ale acestei clase. Aceste obiecte vor avea toate facilitatile mostenite de la clasa parinte, impreuna cu noile proprietati si metode ale clasei copil.</p>
<p>Pentru a ilustra acest concept, sa consideram clasa <strong>UrsPolar()</strong> care mosteneste clasa <strong>Urs()</strong> si defineste o noua metoda:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> PHP 5 </span><span>
</span><span>//</span><span> definitia clasei</span><span>
</span><span>class</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> definitia proprietatilor</span><span>
    </span><span>public</span><span> </span><span>$nume</span><span>;
    </span><span>public</span><span> </span><span>$greutate</span><span>;
    </span><span>public</span><span> </span><span>$varsta</span><span>;
    </span><span>public</span><span> </span><span>$sex</span><span>;
    </span><span>public</span><span> </span><span>$culoare</span><span>;
    </span><span>//</span><span> constructor </span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>__construct</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>$this</span><span>-&gt;</span><span>varsta</span><span> = </span><span>0</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>greutate</span><span> = </span><span>100</span><span>;
    </span><span>}</span><span>
    </span><span>//</span><span> definitia metodelor</span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>mananca</span><span>(</span><span>$unitati</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> mananca </span><span>"</span><span>.</span><span>$unitati</span><span>.</span><span>"</span><span> unitati
        de mancare... </span><span>"</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>greutate</span><span> += </span><span>$unitati</span><span>;
    </span><span>}</span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>alearga</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> alearga... </span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>vaneaza</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> vaneaza... </span><span>"</span><span>;
    </span><span>}</span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>doarme</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> doarme... </span><span>"</span><span>;
    </span><span>}</span><span>
</span><span>}</span><span>
</span><span>//</span><span> extindem definitia clasei Urs </span><span>
</span><span>class</span><span> </span><span>UrsPolar</span><span> </span><span>extends</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> constructor </span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>__construct</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>parent</span><span>::</span><span>__construct</span><span>(</span><span>)</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>culoare</span><span> = </span><span>"</span><span>alb</span><span>"</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>greutate</span><span> = </span><span>600</span><span>;
    </span><span>}</span><span>
    </span><span>//</span><span> definitia metodelor </span><span>
    </span><span>public</span><span> </span><span>function</span><span> </span><span>inoata</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> inoata... </span><span>"</span><span>;
    </span><span>}</span><span>
</span><span>}</span><span>
</span><span>?&gt;</span></pre>
</div>
<p>Cuvantul cheie extends este utilizat pentru a crea o clasa copil dintr-o clasa parinte. In acest mod, toate functiile si variabilele din clasa parinte sunt disponibile in clasa copil, dupa cum se poate observa in exemplul de mai jos:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> creeaza o noua instanta a clasei Urs() </span><span>
</span><span>$tom</span><span> = </span><span>new</span><span> </span><span>Urs</span><span>;
</span><span>$tom</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Ursul Tommy</span><span>"</span><span>;
</span><span>//</span><span> creeaza o noua instanta a clasei UrsPolar() </span><span>
</span><span>$bob</span><span> = </span><span>new</span><span> </span><span>UrsPolar</span><span>;
</span><span>$bob</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Ursul Bobby</span><span>"</span><span>;
</span><span>/*</span><span> $bob poate apela toate metodele claselor Urs() si UrsPolar() </span><span>*/</span><span>
</span><span>$bob</span><span>-&gt;</span><span>alearga</span><span>(</span><span>)</span><span>;
</span><span>$bob</span><span>-&gt;</span><span>vaneaza</span><span>(</span><span>)</span><span>;
</span><span>$bob</span><span>-&gt;</span><span>inoata</span><span>(</span><span>)</span><span>;
</span><span>//</span><span> $tom poate apela doar metodele clasei Urs() </span><span>
</span><span>$tom</span><span>-&gt;</span><span>alearga</span><span>(</span><span>)</span><span>;
</span><span>$tom</span><span>-&gt;</span><span>vaneaza</span><span>(</span><span>)</span><span>;
</span><span>$tom</span><span>-&gt;</span><span>inoata</span><span>(</span><span>)</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>In acest caz, apelul final  <strong>$tom-&gt;inoata()</strong> va genera o eroare deoarece clasa <strong>Urs()</strong> nu contine nici o metoda <strong>inoata()</strong>. In acelasi timp, instructiunile <strong>$bob-&gt;alearga()</strong> si <strong>$bob-&gt;vaneaza()</strong> vor fi executate cu succes deoarece clasa <strong>UrsPolar()</strong> mosteneste toate metodele si proprietatile clasei <strong>Urs()</strong>.</p>
<p>In exemplul anterior, poti observa cum a fost apelat constructorul clasei parinte din constructorul clasei <strong>UrsPolar()</strong>. In general, acest lucru este util pentru a ne asigura ca toate initializarile din clasa parinte au fost efectuate inaintea altor initializari in constructorul clasei copil. Daca o clasa mostenita nu are constructor, va fi apelat in mod implicit constructorul clasei pe care o mosteneste.</p>
<p>Iata definitia clasei UrsPolar in PHP4:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> PHP 4 </span><span>
</span><span>//</span><span> UrsPolar extinde definitia clasei Urs </span><span>
</span><span>class</span><span> </span><span>UrsPolar</span><span> </span><span>extends</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> constructor </span><span>
    </span><span>function</span><span> </span><span>UrsPolar</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>parent</span><span>::</span><span>Urs</span><span>(</span><span>)</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>culoare</span><span> = </span><span>"</span><span>alb</span><span>"</span><span>;
        </span><span>$this</span><span>-&gt;</span><span>greutate</span><span> = </span><span>600</span><span>;
    </span><span>}</span><span>
    </span><span>//</span><span> definitia metodelor </span><span>
    </span><span>function</span><span> </span><span>inoata</span><span>(</span><span>)</span><span> </span><span>{</span><span>
        </span><span>echo</span><span> </span><span>$this</span><span>-&gt;</span><span>nume</span><span>.</span><span>"</span><span> inoata... </span><span>"</span><span>;
    </span><span>}</span><span>
</span><span>}</span><span>
</span><span>?&gt;</span></pre>
</div>
<p>Pentru a impiedica mostenirea unei clase sau a unor metode ale sale, foloseste cuvantul cheie final inaintea numelui clasei sau al metodei (aceasta este o facilitate a PHP5 care nu este disponibila in versiunile PHP mai vechi). Iata un exemplu care modifica definitia clasei <strong>Urs()</strong> astfel incat aceasta sa nu mai poata fi mostenita:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> PHP 5 </span><span>
</span><span>//</span><span> definitia clasei </span><span>
</span><span>final</span><span> </span><span>class</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
    </span><span>//</span><span> definitia proprietatilor </span><span>

    </span><span>//</span><span> definitia metodelor</span><span>
</span><span>}</span><span>
</span><span>/*</span><span> extinderea definitiei clasei va genera o eroare
   deoarece clasa Urs nu poate fi mostenita </span><span>*/</span><span>
</span><span>class</span><span> </span><span>UrsPolar</span><span> </span><span>extends</span><span> </span><span>Urs</span><span> </span><span>{</span><span>
   </span><span>//</span><span> definitia metodelor </span><span>
</span><span>}</span><span>
</span><span>//</span><span> crearea unei instante a clasei UrsPolar() </span><span>
</span><span>//</span><span> apelul va esua deoarece clasa Urs nu poate fi mostenita  </span><span>
</span><span>$bob</span><span> = </span><span>new</span><span> </span><span>UrsPolar</span><span>;
</span><span>$bob</span><span>-&gt;</span><span>nume</span><span> = </span><span>"</span><span>Ursul Bobby</span><span>"</span><span>;
</span><span>echo</span><span> </span><span>$bob</span><span>-&gt;</span><span>greutate</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p><span> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://tutorial-video.net/development/clase-si-obiecte-tutorial/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Butoane in JavaScript &#8211; Tutorial (3)</title>
		<link>http://tutorial-video.net/development/butoane-in-javascript-tutorial-3/</link>
		<comments>http://tutorial-video.net/development/butoane-in-javascript-tutorial-3/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 19:36:31 +0000</pubDate>
		<dc:creator>cosmin92</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[butoane javascript]]></category>
		<category><![CDATA[creeaza butoane]]></category>
		<category><![CDATA[tutorial javascript]]></category>

		<guid isPermaLink="false">http://tutorial-video.net/?p=128</guid>
		<description><![CDATA[Pentru  a folosi butoanele in scripturi, trebuie ca acestea sa fie mai intai incluse in  pagina printr-un formular HTML. Tag-ul &#60;input&#62; prin care este introdus butonul este continut de tag-ul &#60;FORM&#62;:

&#60;FORM&#62;
    &#60;INPUT type="button" value="Textul butonului" name="buton1"&#62;
&#60;/FORM&#62;

Acest cod HTML va plasa un buton pe pagina, dar acesta nu va avea nici [...]]]></description>
			<content:encoded><![CDATA[<p>Pentru  a folosi butoanele in scripturi, trebuie ca acestea sa fie mai intai incluse in  pagina printr-un formular HTML. Tag-ul <strong>&lt;input&gt;</strong> prin care este introdus butonul este continut de tag-ul <strong>&lt;FORM&gt;</strong>:</p>
<div>
<pre><span>&lt;</span><span>FORM</span><span>&gt;</span><span>
    </span><span>&lt;</span><span>INPUT</span><span> </span><span>type</span><span>=</span><span>"</span><span>button</span><span>"</span><span> </span><span>value</span><span>=</span><span>"</span><span>Textul butonului</span><span>"</span><span> </span><span>name</span><span>=</span><span>"</span><span>buton1</span><span>"</span><span>&gt;</span><span>
</span><span>&lt;/</span><span>FORM</span><span>&gt;</span></pre>
</div>
<p>Acest cod HTML va plasa un buton pe pagina, dar acesta nu va avea nici un efect, daca il apasati nu se va intampla nimic. Sa analizam comanda javascript care transmite browserului cum sa actioneze daca utilizatorul apasa butonul. Plasati acest cod in tag-ul <strong>INPUT</strong> in care ati creat butonul:</p>
<div>
<pre><span>
  </span><span>&lt;</span><span>INPUT</span><span> </span><span>type</span><span>=</span><span>"</span><span>button</span><span>"</span><span> </span><span>value</span><span>=</span><span>"</span><span>Textul butonului</span><span>"</span><span> </span><span>name</span><span>=</span><span>"</span><span>buton1</span><span>"</span><span> </span><span>onClick</span><span>=</span><span>"</span><span> </span><span>"</span><span>&gt;</span></pre>
</div>
<p>Daca  ati citit capitolul anterior, atunci stiti cum puteti adauga text in status bar  folosind comanda <strong>onMouseover</strong>. Acest lucru este valabil si pentru butoane:</p>
<div>
<pre><span>
</span><span>&lt;</span><span>FORM</span><span>&gt;</span><span>
    </span><span>&lt;</span><span>INPUT</span><span> </span><span>type</span><span>=</span><span>"</span><span>buton</span><span>"</span><span> </span><span>value</span><span>=</span><span>"</span><span>Text</span><span>"</span><span> </span><span>name</span><span>=</span><span>"</span><span>buton2</span><span>"</span><span>
    </span><span>onClick</span><span>=</span><span>"</span><span>window.status='Ati apasat butonul 1'; return true</span><span>"</span><span>&gt;</span><span>
</span><span>&lt;/</span><span>FORM</span><span>&gt;</span></pre>
</div>
<p>Daca  testati acest cod, veti vedea ca in status bar a aparut textul „Ati apasat  butonul 1”.    De  asemenea, puteti permite utilizatorilor sa schimbe culoarea fondului paginii. In  loc de <em>window.status</em> folositi comanda:   <em>document.bgColor=&#8217;culoare&#8217;</em>. Introduceti  aceasta linie ca instructiune pentru comanda <em>onClick</em>, in modul urmator:</p>
<div>
<pre><span>
</span><span>&lt;</span><span>FORM</span><span>&gt;</span><span>
    </span><span>&lt;</span><span>INPUT</span><span> </span><span>type</span><span>=</span><span>"</span><span>button</span><span>"</span><span> </span><span>value</span><span>=</span><span>"</span><span>Schimba culoarea in verde!</span><span>"</span><span>
    </span><span>name</span><span>=</span><span>"</span><span>buton3</span><span>"</span><span> </span><span>onClick</span><span>=</span><span>"</span><span>document.bgColor='green'</span><span>"</span><span>&gt;</span><span>
</span><span>&lt;/</span><span>FORM</span><span>&gt;</span></pre>
</div>
<p>Puteti adauga oricate butoane de acest gen doriti, dar asigurati-va ca ati inclus si un buton pentru a reveni la culoarea initiala. Scripul urmator va ofera trei optiuni pentru culoarea fondului: verde, albastru sau culoarea originala.</p>
<div>
<pre><span>
</span><span>&lt;</span><span>FORM</span><span>&gt;</span><span>
    </span><span>&lt;</span><span>INPUT</span><span> </span><span>type</span><span>=</span><span>"</span><span>button</span><span>"</span><span> </span><span>value</span><span>=</span><span>"</span><span> Schimba culoarea in verde!</span><span>"</span><span>
    </span><span>name</span><span>=</span><span>"</span><span>buton3</span><span>"</span><span> </span><span>onClick</span><span>=</span><span>"</span><span>document.bgColor='yellow'</span><span>"</span><span>&gt;</span><span> </span><span>&lt;</span><span>br</span><span>&gt;</span><span>
    </span><span>&lt;</span><span>INPUT</span><span> </span><span>type</span><span>=</span><span>"</span><span>button</span><span>"</span><span> </span><span>value</span><span>=</span><span>"</span><span> Schimba culoarea in albastru!</span><span>"</span><span>
    </span><span>name</span><span>=</span><span>"</span><span>buton4</span><span>"</span><span> </span><span>onClick</span><span>=</span><span>"</span><span>document.bgColor='blue'</span><span>"</span><span>&gt;</span><span> </span><span>&lt;</span><span>br</span><span>&gt;</span><span>
    </span><span>&lt;</span><span>INPUT</span><span> </span><span>type</span><span>=</span><span>"</span><span>button</span><span>"</span><span> </span><span>value</span><span>=</span><span>"</span><span>Revenire</span><span>"</span><span> </span><span>name</span><span>=</span><span>"</span><span>buton5</span><span>"</span><span>
    </span><span>onClick</span><span>=</span><span>"</span><span>document.bgColor='white'</span><span>"</span><span>&gt;</span><span>
</span><span>&lt;/</span><span>FORM</span><span>&gt;</span></pre>
</div>
<p>Ultimul script din acest capitol va va arata cum puteti  folosi butoanele ca linkuri. Pentru aceasta, folositi comanda:  <em>window.location=’url’. </em> De  exemplu, iata un script care redirectioneaza utilizatorul catre o pagina  oarecare:</p>
<div>
<pre><span>
</span><span>&lt;</span><span>FORM</span><span>&gt;</span><span>
    </span><span>&lt;</span><span>INPUT</span><span> </span><span>type</span><span>=</span><span>"</span><span>button</span><span>"</span><span> </span><span>value</span><span>=</span><span>"</span><span>Alta pagina</span><span>"</span><span> </span><span>name</span><span>=</span><span>"</span><span>buton6</span><span>"</span><span>
    </span><span>onClick</span><span>=</span><span>"</span><span>window.location='http://www.tutorial-video.net'</span><span>"</span><span>&gt;</span><span>
</span><span>&lt;/</span><span>FORM</span><span>&gt;</span></pre>
</div>
<p><span> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://tutorial-video.net/development/butoane-in-javascript-tutorial-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atributul onMouseOver in Javascript &#8211; Tutorial (2)</title>
		<link>http://tutorial-video.net/development/atributul-onmouseover-in-javascript-tutorial-2/</link>
		<comments>http://tutorial-video.net/development/atributul-onmouseover-in-javascript-tutorial-2/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 19:34:30 +0000</pubDate>
		<dc:creator>cosmin92</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[onMouseOver]]></category>
		<category><![CDATA[tutoiral javascript]]></category>
		<category><![CDATA[tutorial onMouseOver]]></category>

		<guid isPermaLink="false">http://tutorial-video.net/?p=126</guid>
		<description><![CDATA[Pentru  a folosi atributul onMouseover nu trebuie sa includeti si tag-ul script. Acesta instructiune va afisa un  mesaj la alegere in status bar cand plasati cursorul deasupra unui link.
Exemplu:

&#60;A HREF="pagina.htm" onMouseover="window.status='Salut!'; return true"&#62;
Link &#60;/A&#62;

Puteti testa acest cod. Mutati cursorul deasupra linkului fara sa iti dati click. Observati ca in partea din stanga jos [...]]]></description>
			<content:encoded><![CDATA[<p>Pentru  a folosi atributul <strong>onMouseover</strong> nu trebuie sa includeti si tag-ul <strong>script</strong>. Acesta instructiune va afisa un  mesaj la alegere in status bar cand plasati cursorul deasupra unui link.<br />
Exemplu:</p>
<div>
<pre><span>&lt;</span><span>A</span><span> </span><span>HREF</span><span>=</span><span>"</span><span>pagina.htm</span><span>"</span><span> </span><span>onMouseover</span><span>=</span><span>"</span><span>window.status='Salut!'; return true</span><span>"</span><span>&gt;</span><span>
Link </span><span>&lt;/</span><span>A</span><span>&gt;</span></pre>
</div>
<p>Puteti testa acest cod. Mutati cursorul deasupra linkului fara sa iti dati click. Observati ca in partea din stanga jos a browserului a aparut mesajul &#8216;Salut!&#8217;. Sa analizam comanda <strong>onMouseover</strong>:</p>
<ol>
<li><strong>onMouseover=&#8221;  &#8220;</strong><br />
Acesta este formularul comenzii. Browserul asteapta o noua instructiune sau  functie intre ghilimele.</li>
<li><strong>window.status=&#8217;Salut!&#8217;</strong><br />
Aceasta comanda ii spune browserului ce mesaj sa afiseze in status bar. Scrieti  textul mesajului intre &#8216; &#8216;.</li>
<li><strong>return  true</strong><br />
Returneaza valoarea booleana true (adevarat) pentru ca browserul sa afiseze  textul.</li>
</ol>
<p>In  exemplul de mai sus, am folosit  apostrofi  (&#8221;) pentru ca, in acest caz, instructiunea <em>window.status</em> este inclusa in  interiorul comenzii <em>onMouseover</em>, pentru care am folosit deja ghilimele (&#8221;"). Daca am fi folosit din nou ghilimelele duble, browserul ar fi interpretat gresit scriptul, confundand inceputul comenzii <em>window.status</em> cu sfarsitul  comenzii <em>onMouseover</em>.</p>
<p>Daca vreti ca mesajul &#8220;Salut!&#8221; sa dispara din status bar cand cursorul nu se mai afla deasupra linkului, puteti folosi comanda <strong>onMouseout, </strong>sau puteti apela o functie care sa stearga textul dupa o anumita perioada de timp. Cea de-a doua metoda necesita functii si tag-uri <strong>&lt;script&gt;</strong> , deci deocamdata vom analiza prima si cea mai simpla metoda: comanda<strong> onMouseout</strong>.<br />
Exemplu:</p>
<div>
<pre><span>&lt;</span><span>A</span><span> </span><span>HREF</span><span>=</span><span>"</span><span>pagina.htm</span><span>"</span><span> </span><span>onMouseover</span><span>=</span><span>"</span><span>window.status='Salut!'; return true</span><span>"</span><span>
  </span><span>onMouseout</span><span>=</span><span>"</span><span>window.status=''; return true</span><span>"</span><span>&gt;</span><span>Link</span><span>&lt;/</span><span>A</span><span>&gt;</span></pre>
</div>
<p>Acest  cod va face ca mesajul sa dispara din status bar daca mutati cursorul.    Exemplu  este identic cu cel de mai sus, exceptand faptul ca in interiorul comenzii <strong>window.status </strong>din <strong>onMouseout</strong> am inlocuit textul cu un spatiu.  In  general, puteti folosi aceste exemple de scripturi pentru a descrie linkurile  de pe pagina dvs.</p>
]]></content:encoded>
			<wfw:commentRss>http://tutorial-video.net/development/atributul-onmouseover-in-javascript-tutorial-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Functii si variabile &#8211; Tutorial (5)</title>
		<link>http://tutorial-video.net/development/functii-si-variabile-tutorial-5/</link>
		<comments>http://tutorial-video.net/development/functii-si-variabile-tutorial-5/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 17:46:16 +0000</pubDate>
		<dc:creator>cosmin92</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://tutorial-video.net/?p=110</guid>
		<description><![CDATA[Functii in PHP
Daca ai parcurs primele capitole ale acestui curs, ar trebui sa stii destul de mult PHP astfel incat sa poti crea scripturi simple proprii. Totusi, programele prezentate pana la acest punct sunt procedurale sau liniare, ceea ce inseamna ca instructiunile sunt executate secvential, una dupa alta.
Pe masura ce scripturile tale PHP vor deveni [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Functii in PHP</strong><br />
Daca ai parcurs primele capitole ale acestui curs, ar trebui sa stii destul de mult PHP astfel incat sa poti crea scripturi simple proprii. Totusi, programele prezentate pana la acest punct sunt procedurale sau liniare, ceea ce inseamna ca instructiunile sunt executate secvential, una dupa alta.</p>
<p>Pe masura ce scripturile tale PHP vor deveni din ce in ce mai complexe, este doar o chestiune de timp pana ce vei intampina probleme datorita stilului de programare secvential. In acest tutorial, poti afla o noua metoda de a-ti organiza programul PHP, in care acesta nu este executat liniar, ci modular, prin salturi de la o bucata de cod la alta. Acest tip de programare se bazeaza in mod special pe o structura care poarta numele de ?functie? (?function?), care este creata o singura data, dar poate fi executata de mai multe ori. O functie primeste argumente (parametrii) si returneaza o valoare.</p>
<p><strong>Definirea unei functii</strong><br />
O functie poate fii definita in mod clasic ca: ?o lista de instructiuni, grupate ca o singura entitate ce poate fi apelata prin intermediul unui nume?. Mai simplu, o functie reprezinta un set de instructiuni ce indeplinesc o anumita sarcina, si care pot si apelate si executate din orice punct al scriptului tau PHP.</p>
<p>In PHP, fiecare functie reprezinta un bloc de cod distinct. Codul unei functii este propriu acelei functii si nu poate fi accesat de nici o alta instructiune continuta intr-o alta functie, cu exceptia cazului in care este apelata functia. Codul care reprezinta corpul unei functii este ascuns fata de restul programului si, cu exceptia cazului in care foloseste date sau variabile globale, nu poate afecta si nu poate fi afectat de catre alte componente ale programului. In PHP, toate functiile au acelasi nivel al domeniului de actiune, adica nu se poate defini o functie in interiorul unei functii.</p>
<p>Orice limbaj de programare are un set de functii predefinite (built-in), pe baza carora un programator isi poate defini propriile functii.</p>
<p>Functiile sunt utile pentru ca:<br />
1.	functiile definite de catre utilizator permit separarea codului in subsectiuni mai usor de identificat, inteles si corectat.<br />
2.	cu ajutorul functiilor, poti crea un program modular, ce permite reutilizarea codului.<br />
3. modificarile sunt mai usor de implementat, deoarece corpul unei functii este modificat o singura data (in definitia functiei), chiar daca in programul principal, el este apelat de mai multe ori.</p>
<p><strong>Crearea unei functii</strong><br />
Iata un exemplu pentru a intelege cum opereaza o functie:</p>
<div>
<pre><span>&lt;?php</span><span>
</span><span>//</span><span> definitia functiei </span><span>
</span><span>function</span><span> </span><span>myStandardResponse</span><span>(</span><span>)</span><span> </span><span>{</span><span>
    </span><span>echo</span><span> </span><span>"</span><span>Get lost, jerk!&lt;br /&gt;&lt;br /&gt;</span><span>"</span><span>;
</span><span>}</span><span>
</span><span>//</span><span> in autobuz </span><span>
</span><span>echo</span><span> </span><span>"</span><span>Hey lady, can you spare a dime? &lt;br /&gt;</span><span>"</span><span>;
</span><span>myStandardResponse</span><span>(</span><span>)</span><span>;
</span><span>//</span><span> la birou </span><span>
</span><span>echo</span><span> </span><span>"</span><span>Can you handle Joe's workload, in addition to
your own, while he's in Tahiti for a month? You'll
probably need to come in early and work till midnight,
but we are confident you can handle it. Oh, and we
can't pay you extra because of budgetary constraints...&lt;br /&gt;</span><span>"</span><span>;
</span><span>myStandardResponse</span><span>(</span><span>)</span><span>;
</span><span>//</span><span> la petrecere </span><span>
</span><span>echo</span><span> </span><span>"</span><span>Hi, haven't I seen you somewhere before?&lt;br /&gt;</span><span>"</span><span>;
</span><span>myStandardResponse</span><span>(</span><span>)</span><span>;
</span><span>?&gt;</span></pre>
</div>
<p>Codul de mai sus va afisa:<br />
Hey lady, can you spare a dime?<br />
Get lost, jerk!</p>
<p>Can you handle Joe&#8217;s workload, in addition to your own, while he&#8217;s in Tahiti for a month?<br />
You&#8217;ll probably need to come in early and work till midnight, but we are confident you can<br />
handle it. Oh, and we can&#8217;t pay you extra because of budgetary constraints&#8230;<br />
Get lost, jerk!</p>
<p>Hi, haven&#8217;t I seen you somewhere before?<br />
Get lost, jerk!</p>
<p>Primul lucru pe care scriptul de mai sus in face este sa defineasca o functie, utilizand cuvantul cheie function, urmat de numele functiei ? <strong>myStandardResponse()</strong>. Declaratiile care formeaza corpul functiei sunt plasate intre acolade, ele putand contine instructiuni conditionale sau repetitive (bucle), apeluri catre alte functii PHP sau functii definite de catre utilizator.</p>
<p>Definirea unei functii rezolva doar pe jumatate problema, deoarece ea trebuie sa fie si apelata. In PHP si in alte multe limbaje de programare, apelul unei functii se realizeaza prin intermediul numelui ei, ca in exemplul de mai sus. Invocarea unei functii definite de catre utilizator este la fel cu apelarea unei functii PHP native (built-in), cum ar fi <strong>echo()</strong>.</p>
<p>Formatul standard pentru o functie este urmatorul:</p>
<div>
<pre><span>function numele_functiei (parametrii optionali ai functiei) {
    instructiune 1...
    instructiune 2...
    .
    .
    .
    instructiune n...
}</span></pre>
</div>
<p class="tutorial_text"><strong>Transmiterea parametrilor</strong><br />
Functiile asemanatoare celei din exemplul de mai sus vor afisa acelasi mesaj de fiecare data cand sunt apelate, ceea ce dupa un anumit timp poate deveni plictisitor. Poti face aceste functii mai interesante transmitand functiei diferite argumente care determina rezultate diferite ale executiei functiei.</p>
<p>Daca o functie urmeaza sa foloseasca argumente, trebuie sa declare variabile care sa accepte valorile argumentelor. Aceste variabile se numesc parametrii formali ai functiei. Acestia se comporta ca orice alta variabila locala in interiorul functiei, fiind creati la intrarea in functie si distrusi la iesire.</p>
<p>Daca datele de intrare (parametrii) difera, atunci si valoarea returnata de functie va fi alta.</p>
<p>Pentru a observa cum functioneaza acest mecanism, in exemplul urmator poti vedea o functie care primeste un singur argument (raza unui cerc) si afiseaza o valoare calculata utilizand valoarea acestuia (lungimea cercului). Dupa cum arata functia care urmeaza, declaratiile parametrilor survin dupa numele functiei:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei </span><span class="hl-comment"> </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-var">$radius</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-reserved">echo</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Circumferinta unui cerc cu raza </span><span class="hl-var">$radius</span><span class="hl-string">
    este </span><span class="hl-quotes">"</span><span class="hl-code">.</span><span class="hl-identifier">sprintf</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">%4.2f</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-number">2</span><span class="hl-code"> * </span><span class="hl-var">$radius</span><span class="hl-code"> * </span><span class="hl-identifier">pi</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-quotes">"</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apelul functiei cu argumentul 10 </span><span class="hl-comment"> </span><span class="hl-code">
</span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-number">10</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> apelul functiei cu argumentul 20 </span><span class="hl-code">
</span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-number">20</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">In acest exemplu, atunci cand functia <strong>getCircumference()</strong> este apelata, valorile 10, si apoi 20, sunt atribuite variabilei <strong>$radius</strong>, ce este ulterior utilizata de catre codul din corpul functiei.</p>
<p>Functiile pot fi apelate cu mai mult de un parametru, si anume cu o lista de parametrii separati prin virgula:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">changeCase</span><span class="hl-brackets">(</span><span class="hl-var">$str</span><span class="hl-code">, </span><span class="hl-var">$flag</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-comment">/*</span><span class="hl-comment"> executa instructiunea indicata de variabila
    $flag </span><span class="hl-comment">*/</span><span class="hl-code">
    </span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-var">$flag</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
        </span><span class="hl-reserved">case</span><span class="hl-code"> </span><span class="hl-quotes">'</span><span class="hl-string">U</span><span class="hl-quotes">'</span><span class="hl-code">:
            </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-identifier">strtoupper</span><span class="hl-brackets">(</span><span class="hl-var">$str</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-quotes">"</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
            </span><span class="hl-reserved">break</span><span class="hl-code">;
        </span><span class="hl-reserved">case</span><span class="hl-code"> </span><span class="hl-quotes">'</span><span class="hl-string">L</span><span class="hl-quotes">'</span><span class="hl-code">:
            </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-identifier">strtolower</span><span class="hl-brackets">(</span><span class="hl-var">$str</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-quotes">"</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
            </span><span class="hl-reserved">break</span><span class="hl-code">;
        </span><span class="hl-reserved">default</span><span class="hl-code">:
            </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-var">$str</span><span class="hl-code">.</span><span class="hl-quotes">"</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
            </span><span class="hl-reserved">break</span><span class="hl-code">;
    </span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apeleaza functia </span><span class="hl-code">
</span><span class="hl-identifier">changeCase</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">The cow jumped over the moon</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">U</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">changeCase</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">Hello Sam</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">L</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">In functie de valoarea celui de-al doilea parametru, instructiunea switch selecteaza ramura corespunzatoare si manipuleaza primul argument.</p>
<p>PHP nu necesita precizarea tipurilor de date ale argumentelor care sunt transmise, acesta fiind identificate la executia scriptului. Ca si in cazul variabilelor locale, se pot face atribuiri parametrilor formali ai unei functii sau pot fi folositi in orice expresie permisa in PHP. Chiar daca aceste variabile au atributia speciala de a receptiona valoarea argumentelor transmise functiei, acestea pot fi folosite ca orice alta variabila locala.</p>
<p class="tutorial_text"><strong>Instructiunea return</strong><br />
Instructiunea return are doua utilizari importante. Mai intai, determina o iesire imediata din functia care o contine. Cu alte cuvinte, determina ca executia programului sa revina la codul de apel. In al doilea rand, poate fi folosita pentru a returna o valoare.</p>
<p>Exista doua metode prin care o functie isi inceteaza executia si revine la apel. Prima survine cand ultima instructiune din functie a fost executata si, conceptual vorbind, a fost intalnita acolada de inchidere. In realitate, nu sunt prea multe functii care folosesc aceasta metoda prestabilita de terminare a executiei. Majoritatea functiilor folosesc instructiunea return pentru a stopa executia, fie deoarece trebuie returnata o valoare, fie pentru a simplifica si mari eficienta codurilor functiei.</p>
<p>Nu uita, o functie poate contine mai multe instructiuni return.</p>
<p>Iata un exemplu de functie care foloseste return:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-var">$radius</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-comment">/*</span><span class="hl-comment"> returneaza valoare (lungimea cercului
    calculata in functie de raza) </span><span class="hl-comment">*/</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-number">2</span><span class="hl-code"> * </span><span class="hl-var">$radius</span><span class="hl-code"> * </span><span class="hl-identifier">pi</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">/*</span><span class="hl-comment"> apeleaza functia cu argumentul 10 si retine
rezultatul in variabila $result </span><span class="hl-comment">*/</span><span class="hl-code">
</span><span class="hl-var">$result</span><span class="hl-code"> = </span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-number">10</span><span class="hl-brackets">)</span><span class="hl-code">; 

</span><span class="hl-comment">/*</span><span class="hl-comment"> apeleaza functia cu argumentul 20 si afiseaza
valoarea returnata </span><span class="hl-comment">*/</span><span class="hl-code">
</span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-number">20</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">In exemplul de mai sus, argumentul transmis functiei <strong>getCircumference()</strong> este procesat, iar rezultatul este returnat in programul principal unde poate fi memorat intr-o variabila, afisat sau folosit pentru alte calcule.</p>
<p>Instructiunile din cadrul unei functii pot folosi valoarea returnata de catre o alta functie:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei</span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-var">$radius</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> returneaza valoarea (lungimea cercului)</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-number">2</span><span class="hl-code"> * </span><span class="hl-var">$radius</span><span class="hl-code"> * </span><span class="hl-identifier">pi</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">/*</span><span class="hl-comment"> afiseaza valoarea returnata intr-un format
special folosind functia print </span><span class="hl-comment">*/</span><span class="hl-code">
</span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Raspunsul este </span><span class="hl-quotes">"</span><span class="hl-code">.</span><span class="hl-identifier">sprintf</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">%4.2f</span><span class="hl-quotes">"</span><span class="hl-code">,
</span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-number">20</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">O functie va returna intotdeauna o singura valoare, dar aceasta poate fi un array, ca in exemplu de mai jos:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">/*</span><span class="hl-comment"> definitia unei functii care are ca parametru
o lista (array) de adrese de email </span><span class="hl-comment">*/</span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">getUniqueDomains</span><span class="hl-brackets">(</span><span class="hl-var">$list</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-comment">/*</span><span class="hl-comment"> parcurge lista, imparte adresele dupa
    caracterul @ si adauga numele domeniilor
    in array-ul $domains </span><span class="hl-comment">*/</span><span class="hl-code">
    </span><span class="hl-var">$domains</span><span class="hl-code"> = </span><span class="hl-reserved">array</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-reserved">foreach</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-var">$list</span><span class="hl-code"> </span><span class="hl-reserved">as</span><span class="hl-code"> </span><span class="hl-var">$l</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
        </span><span class="hl-var">$arr</span><span class="hl-code"> = </span><span class="hl-identifier">explode</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">@</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-var">$l</span><span class="hl-brackets">)</span><span class="hl-code">;
        </span><span class="hl-var">$domains</span><span class="hl-brackets">[</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">trim</span><span class="hl-brackets">(</span><span class="hl-var">$arr</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-brackets">}</span><span class="hl-code">
    </span><span class="hl-comment">//</span><span class="hl-comment"> sterge valorile duplicate din array si </span><span class="hl-code">
    </span><span class="hl-identifier">returneaza</span><span class="hl-code">-</span><span class="hl-identifier">l</span><span class="hl-code">
    </span><span class="hl-reserved">return</span><span class="hl-code"> </span><span class="hl-identifier">array_unique</span><span class="hl-brackets">(</span><span class="hl-var">$domains</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">/*</span><span class="hl-comment"> citeste adresele de email din fisierul
?data.txt? in array-ul $fileContents </span><span class="hl-comment">*/</span><span class="hl-code">
</span><span class="hl-var">$fileContents</span><span class="hl-code"> = </span><span class="hl-identifier">file</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">data.txt</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/*</span><span class="hl-comment"> apeleaza functia cu argumentul $fileContents
si memoreaza valoarea returnata in vectorul $returnArray </span><span class="hl-comment">*/</span><span class="hl-code">
</span><span class="hl-var">$returnArray</span><span class="hl-code"> = </span><span class="hl-identifier">getUniqueDomains</span><span class="hl-brackets">(</span><span class="hl-var">$fileContents</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> afiseaza vectorul $returnArray</span><span class="hl-code">
</span><span class="hl-reserved">foreach</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-var">$returnArray</span><span class="hl-code"> </span><span class="hl-reserved">as</span><span class="hl-code"> </span><span class="hl-var">$d</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-var">$d</span><span class="hl-string">, </span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p>Functia file ia ca parametru un nume de fisier transmis ca un sir de caractere si intoarce intr-un array continutul fisierului respectiv.</p>
<p>Presupunand ca fisierul ?data.txt? are urmatorul continut:</p>
<p>test@test.com<br />
a@x.com<br />
zooman@deeply.bored.org<br />
b@x.com<br />
guess.me@where.ami.net<br />
testmore@test.com</p>
<p>scriptul de mai sus va afisa:</p>
<p>test.com, x.com, deeply.bored.org, where.ami.net,</p>
<p>Ca o observatie in plus, instructiunea return determina iesirea dintr-o functie si revenirea in programul principal.</p>
<p class="tutorial_text"><strong>Ordinea parametrilor</strong><br />
Ordinea in care sunt transmisi parametrii este de asemenea importanta. Functia din exemplul urmator are ca prim argument un nume, in timp ce al doilea argument reprezinta o locatie.</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> defineste functia</span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">introduce</span><span class="hl-brackets">(</span><span class="hl-var">$name</span><span class="hl-code">, </span><span class="hl-var">$place</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Hello, I am </span><span class="hl-var">$name</span><span class="hl-string"> from </span><span class="hl-var">$place</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apeleaza functia </span><span class="hl-code">
</span><span class="hl-identifier">introduce</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">Moonface</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">The Faraway Tree</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">Scriptul de mai sus va afisa:</p>
<p>Hello, I am Moonface from The Faraway Tree</p>
<p>Daca inversezi cei doi parametrii si rulezi din nou scriptul, mesajul afisat va fi:</p>
<p>Hello, I am The Faraway Tree from Moonface</p>
<p>Daca unul dintre parametrii este omis, PHP genereaza un mesaj de eroare:</p>
<p>Warning: Missing argument 2 for introduce() in myfunction.php on line 3 Hello, I am Moonface from</p>
<p>Pentru a evita astfel de erori, PHP ofera posibilitatea de declara valori implicite pentru parametrii unei functii. Cu alte cuvinte, parametrii devin optionali, iar in cazul omiterii lor la apelarea functiei, vor fi folosite valorile lor implicite (default). Iata un exemplu:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">introduce</span><span class="hl-brackets">(</span><span class="hl-var">$name</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">John Doe</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-var">$place</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">London</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Hello, I am </span><span class="hl-var">$name</span><span class="hl-string"> from </span><span class="hl-var">$place</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apelarea functiei </span><span class="hl-code">
</span><span class="hl-identifier">introduce</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">Moonface</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">Mesajul afisat va fi:</p>
<p>Hello, I am Moonface from London</p>
<p>Poti observa ca apelul functiei cuprinde un singur argument, desi definitia ei necesita doi. Cu toate acestea, deoarece am specificat valori default pentru parametrii, argumentul care lipseste este inlocuit cu valoarea sa implicita, iar PHP nu genereaza un mesaj de eroare.</p>
<p><strong>Func_num_args() si func_get_args()</strong><br />
Exemplele anterioare din acest tutorial au un punct comun: functiile care au fost definite au un numar fix de parametri. Pentru a depasi acest inconvenient, utilizand functiile <strong>func_num_args()</strong> si <strong>func_get_args()</strong> se pot crea functii cu un numar variabil de argumente, ca in exemplul urmator:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">someFunc</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-comment">//</span><span class="hl-comment"> preia array-ul cu argumentele transmise </span><span class="hl-code">
    </span><span class="hl-var">$args</span><span class="hl-code"> = </span><span class="hl-identifier">func_get_args</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">; 

    </span><span class="hl-comment">//</span><span class="hl-comment"> afiseaza argumentele </span><span class="hl-code">
    </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Ai transmis urmatoarele argumente:</span><span class="hl-quotes">"</span><span class="hl-code">;
    </span><span class="hl-reserved">foreach</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-var">$args</span><span class="hl-code"> </span><span class="hl-reserved">as</span><span class="hl-code"> </span><span class="hl-var">$arg</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
        </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string"> </span><span class="hl-var">$arg</span><span class="hl-string"> </span><span class="hl-quotes">"</span><span class="hl-code">;
    </span><span class="hl-brackets">}</span><span class="hl-code">
    </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apeleaza functia cu argumente diferite </span><span class="hl-code">
</span><span class="hl-identifier">someFunc</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">red</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">green</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">blue</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">someFunc</span><span class="hl-brackets">(</span><span class="hl-number">1</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">soap</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">Daca apelezi functia cu un argument de tip array, nu va fi afisat continutul acestuia, ci cuvantul ?Array?. Pentru a putea transmite ca parametru un array, in corpul functiei trebuie adaugat un test care sa verifice tipul argumentelor.</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">someFunc</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-comment">//</span><span class="hl-comment"> memoreaza numarul de argumente in variabila $numArgs</span><span class="hl-code">
    </span><span class="hl-var">$numArgs</span><span class="hl-code"> = </span><span class="hl-identifier">func_num_args</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-comment">//</span><span class="hl-comment"> preia lista de argumente </span><span class="hl-code">
    </span><span class="hl-var">$args</span><span class="hl-code"> = </span><span class="hl-identifier">func_get_args</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
    </span><span class="hl-comment">//</span><span class="hl-comment"> afiseaza argumentele </span><span class="hl-code">
    </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string"> Ai transmis urmatoarele argumente:</span><span class="hl-quotes">"</span><span class="hl-code">;
    </span><span class="hl-reserved">for</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-var">$x</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">; </span><span class="hl-var">$x</span><span class="hl-code"> &lt; </span><span class="hl-var">$numArgs</span><span class="hl-code">; </span><span class="hl-var">$x</span><span class="hl-code">++</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
        </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">&lt;br /&gt;Argument </span><span class="hl-var">$x</span><span class="hl-string">: </span><span class="hl-quotes">"</span><span class="hl-code">;
        </span><span class="hl-comment">/*</span><span class="hl-comment"> Verifica daca argumentul curent
        este un array, daca da, afiseaza continutul acestuia </span><span class="hl-comment">*/</span><span class="hl-code">
        </span><span class="hl-reserved">if</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-identifier">is_array</span><span class="hl-brackets">(</span><span class="hl-var">$args</span><span class="hl-brackets">[</span><span class="hl-var">$x</span><span class="hl-brackets">]</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
            </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string"> ARRAY </span><span class="hl-quotes">"</span><span class="hl-code">;
            </span><span class="hl-reserved">foreach</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-var">$args</span><span class="hl-brackets">[</span><span class="hl-var">$x</span><span class="hl-brackets">]</span><span class="hl-code"> </span><span class="hl-reserved">as</span><span class="hl-code"> </span><span class="hl-var">$index</span><span class="hl-code"> =&gt; </span><span class="hl-var">$element</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
                </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string"> </span><span class="hl-var">$index</span><span class="hl-string"> =&gt; </span><span class="hl-var">$element</span><span class="hl-string"> </span><span class="hl-quotes">"</span><span class="hl-code">;
            </span><span class="hl-brackets">}</span><span class="hl-code">
        </span><span class="hl-brackets">}</span><span class="hl-code">
        </span><span class="hl-reserved">else</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
            </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string"> </span><span class="hl-var">$args</span><span class="hl-string">[</span><span class="hl-var">$x</span><span class="hl-string">] </span><span class="hl-quotes">"</span><span class="hl-code">;
        </span><span class="hl-brackets">}</span><span class="hl-code">
    </span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apeleaza functia </span><span class="hl-code">
</span><span class="hl-identifier">someFunc</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">red</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">green</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">blue</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-reserved">array</span><span class="hl-brackets">(</span><span class="hl-number">4</span><span class="hl-code">,</span><span class="hl-number">5</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">yellow</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text"><strong>Variabile locale si globale</strong><br />
Variabilele declarate in interiorul unei functii sunt denumite variabile locale. Variabilele locale nu sunt recunoscute in exteriorul blocului de cod propriu. Ele exista numai atat timp cat blocul de cod in interiorul caruia au fost declarate este executat. Altfel spus, o variabila este creata la intrarea in blocul sau propriu de cod si este distrusa la iesire.</p>
<p>Cel mai comun bloc de cod in interiorul caruia se declara variabilele locale este functia.</p>
<p>Sa consideram exemplul de mai jos:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> defineste o variabila in programul principal </span><span class="hl-code">
</span><span class="hl-var">$today</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">Tuesday</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">getDay</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-comment">//</span><span class="hl-comment"> defineste o variabila in interiorul functiei</span><span class="hl-code">
    </span><span class="hl-var">$today</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">Saturday</span><span class="hl-quotes">"</span><span class="hl-code">;
    </span><span class="hl-comment">//</span><span class="hl-comment"> afiseaza variabila </span><span class="hl-code">
    </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">In interiorul functiei: </span><span class="hl-var">$today</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apeleaza functia </span><span class="hl-code">
</span><span class="hl-identifier">getDay</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> afiseaza variabila </span><span class="hl-code">
</span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">In programul principal: </span><span class="hl-var">$today</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">La rularea scriptului, mesajul afisat va fi:</p>
<p>In interiorul functiei: Saturday<br />
In programul principal: Tuesday</p>
<p>Variabila <strong>$today</strong> este declarata de doua ori, o data in programul principal si a doua oara in <strong>getDay()</strong>. Variabila <strong>$today</strong> din <strong>getDay()</strong> nu are nici o legatura cu variabila <strong>$today</strong> din programul principal si aceasta deoarece fiecare variabila <strong>$today</strong> este cunoscuta numai codului din acelasi bloc in care a fost declarata.</p>
<p>Daca o variabila locala si una globala au acelasi nume, toate trimiterile la numele acelei variabile din interiorul blocului de cod in care a fost declarata variabila locala se vor referi numai la variabila locala si nu vor avea efect asupra variabilei globale.</p>
<p>Cu alte cuvinte, valoarea atribuita variabilei $today in cadrul functiei este vizibila doar in interiorul acesteia, de unde vine si denumirea de variabila locala.</p>
<p>In plus, variabilele locale nu pot fi accesate din programul principal. De exemplu, scriptul :</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">getDay</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-comment">//</span><span class="hl-comment"> defineste variabila in interiorul functiei </span><span class="hl-code">
    </span><span class="hl-var">$today</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">Saturday</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-identifier">getDay</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Astazi este </span><span class="hl-var">$today</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">va afisa :</p>
<p>Astazi este</p>
<p>Daca in setarile php.ini de pe serverul tau, error_reporting cuprinde constanta <strong>E_NOTICE</strong>, exemplul de mai sus va afisa si urmatorul mesaj:</p>
<p>Notice: Undefined variable: today in x1.php on line 10</p>
<p>Pentru a face variabilele locale vizibile in afara functiei, ele pot fi declarate ca variabile globale utilizand cuvantul cheie global. Spre deosebire de variabilele locale, variabilele globale sunt recunoscute de catre toate componentele programului si pot fi folosite de orice fragment de cod. De asemenea, acestea isi pastreaza valoarea in timpul executiei programului.</p>
<p>Iata exemplul de mai sus rescris, de data aceasta declarand $today ca variabila globala:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> defineste variabila in programul principal</span><span class="hl-code">
</span><span class="hl-var">$today</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">Tuesday</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> defineste functia </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">getDay</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-comment">//</span><span class="hl-comment"> declara $today ca variabila globala</span><span class="hl-code">
    </span><span class="hl-reserved">global</span><span class="hl-code"> </span><span class="hl-var">$today</span><span class="hl-code">; 

    </span><span class="hl-comment">//</span><span class="hl-comment"> initializeaza variabila in interiorul </span><span class="hl-code">
    </span><span class="hl-identifier">functiei</span><span class="hl-code">
    </span><span class="hl-var">$today</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">Saturday</span><span class="hl-quotes">"</span><span class="hl-code">;
    </span><span class="hl-comment">//</span><span class="hl-comment"> afiseaza variabila</span><span class="hl-code">
    </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">In interiorul functiei: </span><span class="hl-var">$today</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> afiseaza variabila </span><span class="hl-code">
</span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">In programul principal, inainte de
rularea functiei: </span><span class="hl-var">$today</span><span class="hl-string"> &lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> apeleaza functia </span><span class="hl-code">
</span><span class="hl-identifier">getDay</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> afiseaza variabila </span><span class="hl-code">
</span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Dupa apelarea functiei: </span><span class="hl-var">$today</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p>Scriptul va afisa:</p>
<p>In programul principal, inainte de rularea functiei: Tuesday<br />
In interiorul functiei: Saturday<br />
Dupa apelarea functiei: Saturday</p>
<p>Odata ce o variabila a fost declarata ca fiind globala, ea este accesibila atat din interiorul functiei, cat si din programul principal.</p>
<p>In plus, PHP defineste o serie de variabile super-globale, disponibile indiferent de locul in care sunt apelate. Cateva dintre acestea sunt <strong>$_SERVER</strong>, <strong>$_POST</strong> si <strong>$_GET</strong> , ce permit accesarea numelui scriptului ce este executat sau preluarea valorilor dintr-un formular care a fost transmis, chiar si in corpul unei functii.</p>
<p class="tutorial_text"><strong>Apel prin valoare, apel prin referinta</strong><br />
In general, argumentele pot fi transmise subrutinelor (functiilor) in doua moduri. Primul se numeste apel prin valoare (?passing by value?). Prin aceasta metoda, se copiaza valoarea unui argument in parametrul formal al unei functii. In acest caz, modificarile asupra parametrului nu au nici un efect asupra argumentului.</p>
<p>Apelul prin referinta (?passing by reference?) este cea de-a doua modalitate de a transfera argumente unei functii. In acest caz, adresa unui argument este copiata in locatie de memorie a parametrului. In interiorul functiei, adresa este folosita pentru a accesa argumentul efectiv folosit in apelul functiei. Aceasta inseamna ca modificarile operate asupra parametrului afecteaza si argumentul.</p>
<p>Cu cateva exceptii, PHP foloseste apelul prin valoare pentru transmiterea argumentelor. In general, aceasta inseamna ca argumentele folosite la apelul unei functii nu sunt influentate de codul din corpul functiei.</p>
<p>Sa incepem cu urmatorul exemplu:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> creeaza o variabila</span><span class="hl-code">
</span><span class="hl-var">$today</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">Saturday</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> defineste functia</span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">setDay</span><span class="hl-brackets">(</span><span class="hl-var">$day</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-var">$day</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">Tuesday</span><span class="hl-quotes">"</span><span class="hl-code">;
    </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">In interiorul functiei: </span><span class="hl-var">$day</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apeleaza functia pentru a afisa variabila</span><span class="hl-code">
</span><span class="hl-identifier">setDay</span><span class="hl-brackets">(</span><span class="hl-var">$today</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> afiseaza variabila </span><span class="hl-code">
</span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">In exteriorul functiei: </span><span class="hl-var">$today</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">Dupa cum se poate observa si in exemplele anterioare, datorita faptului ca argumentul <strong>$today</strong> a fost transmis prin valoare, scriptul va afisa:</p>
<p>In interiorul functiei: Tuesday<br />
In exteriorul functiei: Saturday</p>
<p>Variabila <strong>$today</strong> din programul principal va ramane neschimbata deoarece doar continutul ei este transmis functiei.</p>
<p>Exemplul de mai sus poate fi modificat pentru apelul prin referinta:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> creeaza variabila  </span><span class="hl-code">
</span><span class="hl-var">$today</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">Saturday</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei care afiseaza variabila </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">setDay</span><span class="hl-brackets">(</span><span class="hl-code">&amp;</span><span class="hl-var">$day</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-var">$day</span><span class="hl-code"> = </span><span class="hl-quotes">"</span><span class="hl-string">Tuesday</span><span class="hl-quotes">"</span><span class="hl-code">;
    </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">In interiorul functiei: </span><span class="hl-var">$day</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apeleaza functia </span><span class="hl-code">
</span><span class="hl-identifier">setDay</span><span class="hl-brackets">(</span><span class="hl-var">$today</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> afiseaza valoare variabilei </span><span class="hl-code">
</span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">In exteriorul functiei: </span><span class="hl-var">$today</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">Dupa cum se poate observa, o variabila transmisa prin referinta este precedata de caracterul <strong>ampersand (&amp;)</strong>. Continul variabilei este modificat in interiorul functiei, iar noua valoare este vizibila si la returnarea din functie.</p>
<p>La executia scriptului, mesajul afisat este:</p>
<p>In interiorul functiei: Tuesday<br />
In exteriorul functiei: Tuesday</p>
<p>Cunoscand modalitatea de transmitere a parametrilor prin referinta, putem spune ca, prin intermediul cuvantului cheie global, o variabila este declarata ca referinta astfel incat modificarile asupra ei sunt vizibile si in programul principal.</p>
<p>In urmatoarea sectiune a acestui curs, poti afla cum sa grupezi functii similare in clase si poti citi despre obiecte in PHP5.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1536px; width: 1px; height: 1px;">
<p class="tutorial_text"><strong>Transmiterea parametrilor</strong><br />
Functiile asemanatoare celei din exemplul de mai sus vor afisa acelasi mesaj de fiecare data cand sunt apelate, ceea ce dupa un anumit timp poate deveni plictisitor. Poti face aceste functii mai interesante transmitand functiei diferite argumente care determina rezultate diferite ale executiei functiei.</p>
<p>Daca o functie urmeaza sa foloseasca argumente, trebuie sa declare variabile care sa accepte valorile argumentelor. Aceste variabile se numesc parametrii formali ai functiei. Acestia se comporta ca orice alta variabila locala in interiorul functiei, fiind creati la intrarea in functie si distrusi la iesire.</p>
<p>Daca datele de intrare (parametrii) difera, atunci si valoarea returnata de functie va fi alta.</p>
<p>Pentru a observa cum functioneaza acest mecanism, in exemplul urmator poti vedea o functie care primeste un singur argument (raza unui cerc) si afiseaza o valoare calculata utilizand valoarea acestuia (lungimea cercului). Dupa cum arata functia care urmeaza, declaratiile parametrilor survin dupa numele functiei:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-var">$radius</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-reserved">echo</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">Circumferinta unui cerc cu raza </span><span class="hl-var">$radius</span><span class="hl-string">
    este </span><span class="hl-quotes">"</span><span class="hl-code">.</span><span class="hl-identifier">sprintf</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">%4.2f</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-number">2</span><span class="hl-code"> * </span><span class="hl-var">$radius</span><span class="hl-code"> * </span><span class="hl-identifier">pi</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-quotes">"</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apelul functiei cu argumentul 10 </span><span class="hl-code">
</span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-number">10</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">//</span><span class="hl-comment"> apelul functiei cu argumentul 20 </span><span class="hl-code">
</span><span class="hl-identifier">getCircumference</span><span class="hl-brackets">(</span><span class="hl-number">20</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">In acest exemplu, atunci cand functia <strong>getCircumference()</strong> este apelata, valorile 10, si apoi 20, sunt atribuite variabilei <strong>$radius</strong>, ce este ulterior utilizata de catre codul din corpul functiei.</p>
<p>Functiile pot fi apelate cu mai mult de un parametru, si anume cu o lista de parametrii separati prin virgula:</p>
<div class="hl-main">
<pre><span class="hl-inlinetags">&lt;?php</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> definitia functiei </span><span class="hl-code">
</span><span class="hl-reserved">function</span><span class="hl-code"> </span><span class="hl-identifier">changeCase</span><span class="hl-brackets">(</span><span class="hl-var">$str</span><span class="hl-code">, </span><span class="hl-var">$flag</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
    </span><span class="hl-comment">/*</span><span class="hl-comment"> executa instructiunea indicata de variabila
    $flag </span><span class="hl-comment">*/</span><span class="hl-code">
    </span><span class="hl-reserved">switch</span><span class="hl-brackets">(</span><span class="hl-var">$flag</span><span class="hl-brackets">)</span><span class="hl-code"> </span><span class="hl-brackets">{</span><span class="hl-code">
        </span><span class="hl-reserved">case</span><span class="hl-code"> </span><span class="hl-quotes">'</span><span class="hl-string">U</span><span class="hl-quotes">'</span><span class="hl-code">:
            </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-identifier">strtoupper</span><span class="hl-brackets">(</span><span class="hl-var">$str</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-quotes">"</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
            </span><span class="hl-reserved">break</span><span class="hl-code">;
        </span><span class="hl-reserved">case</span><span class="hl-code"> </span><span class="hl-quotes">'</span><span class="hl-string">L</span><span class="hl-quotes">'</span><span class="hl-code">:
            </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-identifier">strtolower</span><span class="hl-brackets">(</span><span class="hl-var">$str</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-quotes">"</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
            </span><span class="hl-reserved">break</span><span class="hl-code">;
        </span><span class="hl-reserved">default</span><span class="hl-code">:
            </span><span class="hl-identifier">print</span><span class="hl-code"> </span><span class="hl-var">$str</span><span class="hl-code">.</span><span class="hl-quotes">"</span><span class="hl-string">&lt;br /&gt;</span><span class="hl-quotes">"</span><span class="hl-code">;
            </span><span class="hl-reserved">break</span><span class="hl-code">;
    </span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-brackets">}</span><span class="hl-code">
</span><span class="hl-comment">//</span><span class="hl-comment"> apeleaza functia </span><span class="hl-code">
</span><span class="hl-identifier">changeCase</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">The cow jumped over the moon</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">U</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">changeCase</span><span class="hl-brackets">(</span><span class="hl-quotes">"</span><span class="hl-string">Hello Sam</span><span class="hl-quotes">"</span><span class="hl-code">, </span><span class="hl-quotes">"</span><span class="hl-string">L</span><span class="hl-quotes">"</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-inlinetags">?&gt;</span></pre>
</div>
<p class="tutorial_text">In functie de valoarea celui de-al doilea parametru, instructiunea switch selecteaza ramura corespunzatoare si manipuleaza primul argument.</p>
<p>PHP nu necesita precizarea tipurilor de date ale argumentelor care sunt transmise, acesta fiind identificate la executia scriptului. Ca si in cazul variabilelor locale, se pot face atribuiri parametrilor formali ai unei functii sau pot fi folositi in orice expresie permisa in PHP. Chiar daca aceste variabile au atributia speciala de a receptiona valoarea argumentelor transmise functiei, acestea pot fi folosite ca orice alta variabila locala.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://tutorial-video.net/development/functii-si-variabile-tutorial-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bazele MySQL &#8211; Scurta introducere &#8211; Tutorial (1)</title>
		<link>http://tutorial-video.net/development/bazele-mysql-scurta-introducere-tutorial-1/</link>
		<comments>http://tutorial-video.net/development/bazele-mysql-scurta-introducere-tutorial-1/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 17:50:39 +0000</pubDate>
		<dc:creator>cosmin92</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Bazele MySQL]]></category>
		<category><![CDATA[introducere in mysql]]></category>
		<category><![CDATA[Scurta introducere]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[tutoriale mysql]]></category>
		<category><![CDATA[tutoriale video]]></category>

		<guid isPermaLink="false">http://tutorial-video.net/?p=96</guid>
		<description><![CDATA[Acest  capitol asigura o introducere la tutorialul  MySQL, aratandu-ti cum sa folosesti programul  client  mysql pentru a crea si pentru a utiliza o  baza de date simpla. mysql  (denumit uneori „terminal monitor” sau doar „monitor”) este un program interactiv ce iti permite sa te conectezi la un server MySQL, sa efectuezi [...]]]></description>
			<content:encoded><![CDATA[<p>Acest  capitol asigura o introducere la tutorialul  MySQL, aratandu-ti cum sa folosesti programul  client  <strong>mysql</strong> pentru a crea si pentru a utiliza o  baza de date simpla. <strong>mysql </strong> (denumit uneori „terminal monitor” sau doar „monitor”) este un program interactiv ce iti permite sa te conectezi la un server MySQL, sa efectuezi interogari si sa vizualizezi rezultatele.  <strong>mysql</strong> poate fi folosit  de asemenea si in <em>batch mode</em>: iti  plasezi in prealabil interogarile intr-un fisier, apoi soliciti lui <strong>mysql</strong> sa execute  continutul fisierului. Ambele cai de utilizare ale <strong>mysql</strong> sunt acoperite  aici.    Pentru  a vizualiza o lista de optiuni furnizate de catre  <strong>mysql</strong>, invoca-o prin optiunea &#8211;help:</p>
<div>
<pre><span>shell</span><span>&gt; </span><span>mysql</span><span> --</span><span>help</span></pre>
</div>
<p>Acest  capitol are la baza premiza ca pe computerul tau se afla instalat <strong>mysql</strong> si ca exista un  server  MySQL disponibil, la care te poti  conecta. In caz contrar, contacteaza-ti administratorul MySQL.</p>
<p>Acest capitol descrie intregul proces de constituire si de utilizare a unei baze de date. Daca nu te intereseaza decat accesarea unei baze de date deja existente,  probabil ca vrei sa treci peste sectiunile care descriu crearea bazei de date si a tabelelor pe care aceasta le contine.</p>
<p>Avand in vedere ca acest capitol este in fond un tutorial, numeroase detalii au trebuit sa fie omise. Consulta sectiunile corespunzatoare din cadrul manualului pentru mai multe informatii referitoare la aspectele parcurse aici.</p>
<p>Pentru a te conecta la server, va trebui de regula sa introduci un nume de utilizator MySQL atunci cand invoci mysql, si, cel mai adesea, si o parola. Daca serverul ruleaza pe un alt computer decat pe cel pe care deschizi sesiunea de lucru, va fi nevoie sa specifici si un host name. Contacteaza-ti administratorul pentru a afla ce parametri de conexiune trebuie sa folosesti pentru a te conecta (adica ce host, nume de utilizator, si parola sa utilizezi). Odata ce dispui de parametrii adecvati, ar trebui sa te poti conecta astfel:</p>
<div>
<pre><span>shell</span><span>&gt; </span><span>mysql</span><span> -</span><span>h</span><span> </span><span>host</span><span> -</span><span>u</span><span> </span><span>user</span><span> -</span><span>p</span><span>
</span><span>Enter</span><span> </span><span>password</span><span>: ********</span></pre>
</div>
<p><strong>host</strong> si <strong>user</strong> reprezinta host name-ul unde ruleaza serverul tau MySQL si numele de utilizator al contului tau MySQL. Introdu valori adecvate setup-ului tau. ******** reprezinta parola ta; introdu-o in momentul in care mysql afiseaza prompt-ul Enter password. Daca totul merge bine, ar trebui sa observi niste informatii introductive urmate de un prompt mysql&gt;:</p>
<div>
<pre><span>shell</span><span>&gt; </span><span>mysql</span><span> -</span><span>h</span><span> </span><span>host</span><span> -</span><span>u</span><span> </span><span>user</span><span> -</span><span>p</span><span>
</span><span>Enter</span><span> </span><span>password</span><span>: ********
</span><span>Welcome</span><span> </span><span>to</span><span> </span><span>the</span><span> </span><span>MySQL</span><span> </span><span>monitor</span><span>.  </span><span>Commands</span><span> </span><span>end</span><span> </span><span>with</span><span> ; </span><span>or</span><span> \</span><span>g</span><span>.
</span><span>Your</span><span> </span><span>MySQL</span><span> </span><span>connection</span><span> </span><span>id</span><span> </span><span>is</span><span> </span><span>25338</span><span> </span><span>to</span><span> </span><span>server</span><span> </span><span>version</span><span>: </span><span>5.0</span><span>.60</span><span>-</span><span>standard</span><span>
</span><span>Type</span><span> </span><span>'</span><span>help;</span><span>'</span><span> </span><span>or</span><span> </span><span>'</span><span>\h</span><span>'</span><span> </span><span>for</span><span> </span><span>help</span><span>. </span><span>Type</span><span> </span><span>'</span><span>\c</span><span>'</span><span> </span><span>to</span><span> </span><span>clear</span><span> </span><span>the</span><span> </span><span>buffer</span><span>.
</span><span>mysql</span><span>&gt;</span></pre>
</div>
<p>Prompt-ul <strong>mysql&gt;</strong> te anunta ca  mysql este gata pentru a primi comenzile pe care tu le vei introduce. Daca lansezi sesiunea de lucru pe acelasi computer pe care ruleaza MySQL, poti omite host-ul, folosind, pur si simplu:</p>
<div>
<pre><span>shell</span><span>&gt; </span><span>mysql</span><span> -</span><span>u</span><span> </span><span>user</span><span> -</span><span>p</span></pre>
</div>
<p>Daca, atunci cand incerci sa te loghezi, primesti un mesaj de eroare precum <em>ERROR 2002 (HY000): Can&#8217;t connect to local MySQL server through socket &#8216;/tmp/mysql.sock&#8217; (2)</em>, inseamna ca daemon-ul serverului (Unix) sau serviciul (Windows) corespunzator lui MySQL nu functioneaza.</p>
<p>Unele instalatii MySQL permit userilor sa se conecteze ca utilizatori anonimi (unnamed) la serverul ce ruleaza pe host-ul local. In cazul in care acesta este chiar computerul tau, ar trebui sa te poti conecta la server invocand mysql fara nici o alta optiune:</p>
<div>
<pre><span>shell</span><span>&gt; </span><span>mysql</span></pre>
</div>
<p>Dupa ce te-ai conectat cu succes, te poti oricand deconecta tastand <strong>QUIT</strong> (sau<strong> \q</strong>) la aparitia prompt-ului <strong>mysql&gt;</strong>:</p>
<div>
<pre><span>mysql</span><span>&gt; </span><span>QUIT</span><span>
</span><span>Bye</span></pre>
</div>
<p>Pe Unix, te poti de asemenea deconecta prin combinatia de taste <strong>Control-D</strong>.</p>
<p>Majoritatea exemplelor din sectiunile ce urmeaza pornesc de la premiza ca esti conectat la server. Ele indica acest lucru prin prompt-ul <strong>mysql&gt;</strong>.</p>
<p class="tutorial_text">Asigura-te ca esti conectat la server, dupa cum s-a specificat si in sectiunea anterioara. Procedand astfel nu vei selecta in mod automat nici o baza de date cu care sa lucrezi, dar este in regula. In acest stadiu, este mai important sa afli cate ceva despre cum sa emiti interogari decat sa treci direct la crearea tabelelor, incarcarea datelor la interiorul acestora, respectiv extragerea respectivelor date. Aceasta sectiune descrie principiile de baza ale introducerii comenzilor, folosind cateva interogari pe care le poti incerca pentru a te familiariza cu modul in care functioneaza mysql. Iata o comanda simpla care cere server-ului sa iti returneze numarul versiunii sale, precum si data curenta. Introdu-o dupa cum urmeaza, folosind prompt-ul <strong>mysql&gt;</strong> si apoi apasa Enter:</p>
<div class="hl-main">
<pre><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-reserved">VERSION</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-reserved">CURRENT_DATE</span><span class="hl-code">;
+----------------+--------------+
| </span><span class="hl-reserved">VERSION</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">      | </span><span class="hl-reserved">CURRENT_DATE</span><span class="hl-code"> |
+----------------+--------------+
| </span><span class="hl-number">5.0</span><span class="hl-number">.7</span><span class="hl-code">-</span><span class="hl-identifier">beta</span><span class="hl-code">-</span><span class="hl-reserved">Max</span><span class="hl-code"> | </span><span class="hl-number">2005</span><span class="hl-code">-</span><span class="hl-number">07</span><span class="hl-code">-</span><span class="hl-number">11</span><span class="hl-code">   |
+----------------+--------------+
</span><span class="hl-number">1</span><span class="hl-code"> </span><span class="hl-reserved">row</span><span class="hl-code"> </span><span class="hl-reserved">in</span><span class="hl-code"> </span><span class="hl-identifier">set</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-number">0.01</span><span class="hl-code"> </span><span class="hl-identifier">sec</span><span class="hl-brackets">)</span><span class="hl-code">
</span><span class="hl-identifier">mysql</span><span class="hl-code">&gt;</span></pre>
</div>
<p class="tutorial_text">Aceasta interogare arata mai multe lucruri despre mysql:</p>
<p>? O comanda consta de obicei intr-o instructiune SQL urmata de punct si virgula. Exista anumite exceptii in care semnul ?punct si virgula? poate fi omis? QUIT, dupa cum am mentionat mai devreme, este una dintre ele. Vom ajunge mai tarziu si la altele.<br />
? Cand introduci o comanda, mysql o trimite catre server in vederea executiei si afiseaza rezultatele, iar apoi returneaza un alt prompt <strong>mysql&gt;</strong> pentru a indica faptul ca este gata pentru o alta comanda.<br />
? mysql afiseaza iesirile interogarii in formular tabelar (randuri si coloane). Primul rand contine etichete pentru coloane. Urmatoarele randuri reprezinta rezultatele interogarii. In mod normal, etichetele coloanelor constituie numele coloanelor pe care le-ai apelat din tabelele bazei de date. In cazul in care extragi valoarea unei expresii, mai degraba decat o coloana a unui tabel (precum in exemplul pe care tocmai l-am aratat), mysql va eticheta coloana folosind chiar respectiva expresie.<br />
? mysql iti arata cate randuri au fost returnate si cat a durat executarea interogarii, ceea ce iti va da in mare o idee despre calitatea de exploatare a serverului. Aceste valori sunt aproximative, intrucat ele reprezinta timpul fizic petrecut in functia respectiva (si nu cel al computerului sau al unitatii centrale de prelucrare-CPU), dar si pentru ca sunt afectate de factori precum capacitatea de incarcare a serverului si latenta retelei (timpul de acces la date). (Pentru o mai mare concizie, instructiunea ?rows in set? nu va fi intotdeauna inclusa in restul exemplelor din acest capitol.)</p>
<p>Cuvintele cheie pot fi introduse fie cu majuscule, fie cu litere mici. Astfel, urmatoarele interogari sunt echivalente:</p>
<div class="hl-main">
<pre><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-reserved">VERSION</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-reserved">CURRENT_DATE</span><span class="hl-code">;
</span><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">select</span><span class="hl-code"> </span><span class="hl-reserved">version</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-reserved">current_date</span><span class="hl-code">;
</span><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SeLeCt</span><span class="hl-code"> </span><span class="hl-reserved">vErSiOn</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-reserved">current_DATE</span><span class="hl-code">;
</span></pre>
<p class="tutorial_text">Iata o alta interogare. Aceasta demonstreaza faptul ca poti folosi mysql pe post de simplu calculator:</p>
<div class="hl-main">
<pre><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-reserved">SIN</span><span class="hl-brackets">(</span><span class="hl-reserved">PI</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">/</span><span class="hl-number">4</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-number">4</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">*</span><span class="hl-number">5</span><span class="hl-code">;
+------------------+---------+
| </span><span class="hl-reserved">SIN</span><span class="hl-brackets">(</span><span class="hl-reserved">PI</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">/</span><span class="hl-number">4</span><span class="hl-brackets">)</span><span class="hl-code">      | </span><span class="hl-brackets">(</span><span class="hl-number">4</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">*</span><span class="hl-number">5</span><span class="hl-code"> |
+------------------+---------+
| </span><span class="hl-number">0.70710678118655</span><span class="hl-code"> |      </span><span class="hl-number">25</span><span class="hl-code"> |
+------------------+---------+
</span><span class="hl-number">1</span><span class="hl-code"> </span><span class="hl-reserved">row</span><span class="hl-code"> </span><span class="hl-reserved">in</span><span class="hl-code"> </span><span class="hl-identifier">set</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-number">0.02</span><span class="hl-code"> </span><span class="hl-identifier">sec</span><span class="hl-brackets">)</span></pre>
</div>
<p class="tutorial_text">Interogarile aratate pana acum au fost instructiuni de intindere relativ restransa, de cate un singur rand. Poti chiar sa introduci mai multe instructiuni pe un singur rand. Trebuie doar sa adaugi punct si virgula dupa fiecare dintre ele:</p>
<div class="hl-main">
<pre><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-reserved">VERSION</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-reserved">NOW</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">;
+----------------+
| </span><span class="hl-reserved">VERSION</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">      |
+----------------+
| </span><span class="hl-number">5.0</span><span class="hl-number">.7</span><span class="hl-code">-</span><span class="hl-identifier">beta</span><span class="hl-code">-</span><span class="hl-reserved">Max</span><span class="hl-code"> |
+----------------+
</span><span class="hl-number">1</span><span class="hl-code"> </span><span class="hl-reserved">row</span><span class="hl-code"> </span><span class="hl-reserved">in</span><span class="hl-code"> </span><span class="hl-identifier">set</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-number">0.00</span><span class="hl-code"> </span><span class="hl-identifier">sec</span><span class="hl-brackets">)</span><span class="hl-code">

+---------------------+
| </span><span class="hl-reserved">NOW</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">               |
+---------------------+
| </span><span class="hl-number">2005</span><span class="hl-code">-</span><span class="hl-number">07</span><span class="hl-code">-</span><span class="hl-number">11</span><span class="hl-code"> </span><span class="hl-number">17</span><span class="hl-code">:</span><span class="hl-number">59</span><span class="hl-code">:</span><span class="hl-number">36</span><span class="hl-code"> |
+---------------------+
</span><span class="hl-number">1</span><span class="hl-code"> </span><span class="hl-reserved">row</span><span class="hl-code"> </span><span class="hl-reserved">in</span><span class="hl-code"> </span><span class="hl-identifier">set</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-number">0.00</span><span class="hl-code"> </span><span class="hl-identifier">sec</span><span class="hl-brackets">)</span></pre>
</div>
<p class="tutorial_text">Nu este neaparat ca o comanda sa fie data in intregime pe un singur rand, asa ca acelea care sunt lungi si necesita mai multe randuri nu constituie o problema. mysql determina punctul in care se incheie comanda ta cautand semnul ?punct si virgula?, care o inchide, si nu punctul in care se termina randul introdus. (Cu alte cuvinte, mysql accepta intrari cu format liber: el colecteaza liniile de intrari, insa nu le executa pana cand nu citeste semnul ?punct si virgula?).</p>
<p>Iata  o instructiune simpla scrisa pe mai multe randuri:</p>
<div class="hl-main">
<pre><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code">
    -&gt; </span><span class="hl-reserved">USER</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">
    -&gt; ,
    -&gt; </span><span class="hl-reserved">CURRENT_DATE</span><span class="hl-code">;
+---------------+--------------+
| </span><span class="hl-reserved">USER</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">        | </span><span class="hl-reserved">CURRENT_DATE</span><span class="hl-code"> |
+---------------+--------------+
| </span><span class="hl-identifier">jon</span><span class="hl-code">@</span><span class="hl-identifier">localhost</span><span class="hl-code"> | </span><span class="hl-number">2005</span><span class="hl-code">-</span><span class="hl-number">07</span><span class="hl-code">-</span><span class="hl-number">11</span><span class="hl-code">   |
+---------------+--------------+</span></pre>
</div>
<p class="tutorial_text">Observa in acest exemplu modul in care prompt-ul se schimba din <strong>mysql&gt;</strong> in <strong>-&gt;</strong> dupa ce introduci primul rand al unei interogari formate din mai multe randuri. Acesta este felul in care mysql indica faptul ca inca nu a citit o instructiune completa si ca asteapta sa introduci si restul. Prompt-ul iti este prieten: el iti furnizeaza un feed-back indispensabil. Daca valorifici acest feed-back, vei putea permanent sa prevezi ce anume asteapta mysql.</p>
<p class="tutorial_text">In cazul in care decizi ca nu vrei sa executi o comanda pe care esti in curs de a o introduce, anuleaza-o tastand <strong>\c</strong>:</p>
<div class="hl-main">
<pre><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code">
    -&gt; </span><span class="hl-reserved">USER</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">
    -&gt; \</span><span class="hl-identifier">c</span><span class="hl-code">
</span><span class="hl-identifier">mysql</span><span class="hl-code">&gt;</span></pre>
</div>
<p class="tutorial_text">De remarcat, si de aceasta data, prompt-ul. Dupa ce ai tastat <strong>\c</strong>, se va schimba la loc in <strong>mysql&gt;</strong>,  asigurandu-ti un feed-back ce iti indica faptul ca mysql este gata sa primeasca o noua comanda.</p>
<p>Urmatorul tabel iti prezinta fiecare prompt pe care ai putea sa il intalnesti, precum si un mic rezumat a ceea ce indica referitor la starea in care se afla mysql:</p>
<table style="border: 1px solid #cccccc;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-right: 1px solid #cccccc; border-bottom: 1px solid #cccccc;" valign="top">
<p class="tutorial_text">Prompt</p>
</td>
<td style="border-bottom: 1px solid #cccccc;" valign="top">
<p class="tutorial_text">Semnificatie</p>
</td>
</tr>
<tr>
<td style="border-right: 1px solid #cccccc; border-bottom: 1px solid #cccccc;" valign="top">
<p class="tutorial_text"><strong>mysql&gt;</strong></p>
</td>
<td valign="top">
<p class="tutorial_text">Gata pentru o noua comanda.</p>
</td>
</tr>
<tr>
<td style="border-right: 1px solid #cccccc; border-bottom: 1px solid #cccccc;" valign="top">
<p class="tutorial_text"><strong>-&gt;</strong></p>
</td>
<td valign="top">
<p class="tutorial_text">Asteptand urmatorul rand al comenzii formate din mai multe    randuri.</p>
</td>
</tr>
<tr>
<td style="border-right: 1px solid #cccccc; border-bottom: 1px solid #cccccc;" valign="top">
<p class="tutorial_text"><strong>&#8216;&gt;</strong></p>
</td>
<td valign="top">
<p class="tutorial_text">Asteptand introducerea urmatorului rand, asteptand    incheierea unui sir care a inceput cu ghilimele simple (“<strong>&#8216;</strong>”).</p>
</td>
</tr>
<tr>
<td style="border-right: 1px solid #cccccc; border-bottom: 1px solid #cccccc;" valign="top">
<p class="tutorial_text"><strong>&#8220;&gt;</strong></p>
</td>
<td valign="top">
<p class="tutorial_text">Asteptand randul urmator, aspeptand incheierea unui rand    care a inceput cu ghilimele duble (“<strong>&#8220;</strong>”).</p>
</td>
</tr>
<tr>
<td style="border-right: 1px solid #cccccc; border-bottom: 1px solid #cccccc;" valign="top">
<p class="tutorial_text"><strong>`&gt;</strong></p>
</td>
<td valign="top">
<p class="tutorial_text">Asteptand urmatorul rand, astaptand incheierea unui    identificator care a fost deschis cu un backtick (“<strong>`</strong>”).</p>
</td>
</tr>
<tr>
<td style="border-right: 1px solid #cccccc; border-bottom: 1px solid #cccccc;" valign="top">
<p class="tutorial_text"><strong>/*&gt;</strong></p>
</td>
<td valign="top">
<p class="tutorial_text">Asteptand urmatorul rand, asteptand incheierea unui    comentariu care a fost deschis cu <strong>/*</strong>.</p>
</td>
</tr>
</tbody>
</table>
<p class="tutorial_text">Instructiunile formate din mai multe randuri intervin adesea accidental in momentul in care intentionezi sa emiti o comanda pe un singur rand, insa uiti punctul si virgula de final. In acest caz, mysql va astepta o noua intrare:</p>
<div class="hl-main">
<pre><span class="hl-code">  </span><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-reserved">USER</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">
  -&gt;</span></pre>
</div>
<p class="tutorial_text">Daca ti se intampla acest lucru (ai impresia ca ai introdus o instructiune, insa singura reactie este un prompt <strong>-&gt;</strong>), cel mai probabil mysql asteapta punctul si virgula. Daca nu sesizezi ceea ce iti spune promptul, ai putea sa astepti ceva vreme inainte sa iti dai seama ce ai de facut. Introdu punctul si virgula pentru a incheia comanda, iar mysql o va executa:</p>
<div class="hl-main">
<pre><span class="hl-code">  </span><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-reserved">USER</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">
  -&gt; ;
  +---------------+
  | </span><span class="hl-reserved">USER</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">        |
  +---------------+
  | </span><span class="hl-identifier">jon</span><span class="hl-code">@</span><span class="hl-identifier">localhost</span><span class="hl-code"> |
  +---------------+</span></pre>
</div>
<p class="tutorial_text">Prompturile  <strong>&#8216;&gt;</strong> si <strong>&#8220;&gt;</strong> apar in cursul colectarii sirului (un alt mod de a spune ca MySQL asteapta inchiderea unui sir). In MySQL, poti scrie siruri marginite fie de caracterul ?<strong>&#8216;</strong>?, fie ?<strong>&#8220;</strong>? (de exemplu, &#8216;hello&#8217; sau &#8220;goodbye&#8221;), iar mysql iti permite sa introduci siruri care se desfasoara pe un interval de mai multe randuri. Atunci cand vezi un prompt <strong>&#8216;&gt;</strong> sau <strong>&#8220;&gt;</strong> , inseamna ca ai introdus un rand care contine un sir ce incepe cu ghilimele de tip ?<strong>&#8216;</strong>? sau ?<strong>&#8220;</strong>? , insa nu ai introdus inca si perechea respectivului caracter, care incheie sirul. Acest lucru indica adesea faptul ca ai uitat din neatentie un caracter din perechea de ghilimele. De exemplu:</p>
<div class="hl-main">
<pre><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> * </span><span class="hl-reserved">FROM</span><span class="hl-code"> </span><span class="hl-identifier">my_table</span><span class="hl-code"> </span><span class="hl-reserved">WHERE</span><span class="hl-code"> </span><span class="hl-identifier">name</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">Smith AND age &lt; 30;
  </span><span class="hl-quotes">'</span><span class="hl-code">&gt;</span></pre>
</div>
<p class="tutorial_text">Daca introduci instructiunea SELECT, iar apoi apesi ENTER si astepti rezultatul, nu se intampla nimic. In loc sa te intrebi de ce interogarea dureaza atat de mult, baga de seama indiciul furnizat de catre promptul <strong>&#8216;&gt;</strong>. Acesta te instiinteaza ca mysql asteapta restul sirului incomplet. (Observi eroarea din instructiune? Sirului &#8216;Smith ii lipseste al doilea caracter de tip ghilimele simple.)</p>
<p>Ce vei face odata ajuns in punctul acesta? Cel mai simplu este sa anulezi comanda. Totusi, in cazul de fata nu poti sa tastezi pur si simplu <strong>\c</strong> , deoarece mysql va interpreta acest lucru ca fiind o parte a sirului aflat in curs de elaborare. In schimb, trebuie sa inchizi ghilimelele (astfel, mysql va sti ca ai terminat sirul), iar apoi sa tastezi <strong>\c</strong>:</p>
<div class="hl-main">
<pre><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> * </span><span class="hl-reserved">FROM</span><span class="hl-code"> </span><span class="hl-identifier">my_table</span><span class="hl-code"> </span><span class="hl-reserved">WHERE</span><span class="hl-code"> </span><span class="hl-identifier">name</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">Smith AND age &lt; 30;
  </span><span class="hl-quotes">'</span><span class="hl-code">&gt; </span><span class="hl-quotes">'</span><span class="hl-special">\c</span><span class="hl-string">
  mysql&gt;</span></pre>
</div>
<p class="tutorial_text">Promptul se va modifica la loc in <strong>mysql&gt;</strong>, indicand faptul ca mysql este gata pentru o noua comanda.   Promptul  <strong>`&gt;</strong> este asemanator prompturilor <strong>&#8216;&gt;</strong> si <strong>&#8220;&gt;</strong> , insa arata ca ai inceput, fara a incheia, un identificator cuprins intre caractere backtick.    Este important sa stii ce inseamna prompturile<strong> &#8216;&gt;</strong>, <strong>&#8220;&gt;</strong>, si <strong>`&gt;</strong> , pentru ca, daca introduci din greseala un sir neterminat, orice alt sir ulterior va parea sa fie ignorat de catre mysql ? inclusiv un eventual rand continand QUIT. Acest lucru poate fi destul de debusolant, mai ales daca nu stii ca trebuie sa inchizi ghilimelele inainte de a anula comanda in curs.</p>
</div>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 925px; width: 1px; height: 1px;">
<p class="tutorial_text">Asigura-te ca esti conectat la server, dupa cum s-a specificat si in sectiunea anterioara. Procedand astfel nu vei selecta in mod automat nici o baza de date cu care sa lucrezi, dar este in regula. In acest stadiu, este mai important sa afli cate ceva despre cum sa emiti interogari decat sa treci direct la crearea tabelelor, incarcarea datelor la interiorul acestora, respectiv extragerea respectivelor date. Aceasta sectiune descrie principiile de baza ale introducerii comenzilor, folosind cateva interogari pe care le poti incerca pentru a te familiariza cu modul in care functioneaza mysql. Iata o comanda simpla care cere server-ului sa iti returneze numarul versiunii sale, precum si data curenta. Introdu-o dupa cum urmeaza, folosind prompt-ul <strong>mysql&gt;</strong> si apoi apasa Enter:</p>
<div class="hl-main">
<pre><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-reserved">VERSION</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-reserved">CURRENT_DATE</span><span class="hl-code">;
+----------------+--------------+
| </span><span class="hl-reserved">VERSION</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">      | </span><span class="hl-reserved">CURRENT_DATE</span><span class="hl-code"> |
+----------------+--------------+
| </span><span class="hl-number">5.0</span><span class="hl-number">.7</span><span class="hl-code">-</span><span class="hl-identifier">beta</span><span class="hl-code">-</span><span class="hl-reserved">Max</span><span class="hl-code"> | </span><span class="hl-number">2005</span><span class="hl-code">-</span><span class="hl-number">07</span><span class="hl-code">-</span><span class="hl-number">11</span><span class="hl-code">   |
+----------------+--------------+
</span><span class="hl-number">1</span><span class="hl-code"> </span><span class="hl-reserved">row</span><span class="hl-code"> </span><span class="hl-reserved">in</span><span class="hl-code"> </span><span class="hl-identifier">set</span><span class="hl-code"> </span><span class="hl-brackets">(</span><span class="hl-number">0.01</span><span class="hl-code"> </span><span class="hl-identifier">sec</span><span class="hl-brackets">)</span><span class="hl-code">
</span><span class="hl-identifier">mysql</span><span class="hl-code">&gt;</span></pre>
</div>
<p class="tutorial_text">Aceasta interogare arata mai multe lucruri despre mysql:</p>
<p>? O comanda consta de obicei intr-o instructiune SQL urmata de punct si virgula. Exista anumite exceptii in care semnul ?punct si virgula? poate fi omis? QUIT, dupa cum am mentionat mai devreme, este una dintre ele. Vom ajunge mai tarziu si la altele.<br />
? Cand introduci o comanda, mysql o trimite catre server in vederea executiei si afiseaza rezultatele, iar apoi returneaza un alt prompt <strong>mysql&gt;</strong> pentru a indica faptul ca este gata pentru o alta comanda.<br />
? mysql afiseaza iesirile interogarii in formular tabelar (randuri si coloane). Primul rand contine etichete pentru coloane. Urmatoarele randuri reprezinta rezultatele interogarii. In mod normal, etichetele coloanelor constituie numele coloanelor pe care le-ai apelat din tabelele bazei de date. In cazul in care extragi valoarea unei expresii, mai degraba decat o coloana a unui tabel (precum in exemplul pe care tocmai l-am aratat), mysql va eticheta coloana folosind chiar respectiva expresie.<br />
? mysql iti arata cate randuri au fost returnate si cat a durat executarea interogarii, ceea ce iti va da in mare o idee despre calitatea de exploatare a serverului. Aceste valori sunt aproximative, intrucat ele reprezinta timpul fizic petrecut in functia respectiva (si nu cel al computerului sau al unitatii centrale de prelucrare-CPU), dar si pentru ca sunt afectate de factori precum capacitatea de incarcare a serverului si latenta retelei (timpul de acces la date). (Pentru o mai mare concizie, instructiunea ?rows in set? nu va fi intotdeauna inclusa in restul exemplelor din acest capitol.)</p>
<p>Cuvintele cheie pot fi introduse fie cu majuscule, fie cu litere mici. Astfel, urmatoarele interogari sunt echivalente:</p>
<div class="hl-main">
<pre><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SELECT</span><span class="hl-code"> </span><span class="hl-reserved">VERSION</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-reserved">CURRENT_DATE</span><span class="hl-code">;
</span><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">select</span><span class="hl-code"> </span><span class="hl-reserved">version</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-reserved">current_date</span><span class="hl-code">;
</span><span class="hl-identifier">mysql</span><span class="hl-code">&gt; </span><span class="hl-reserved">SeLeCt</span><span class="hl-code"> </span><span class="hl-reserved">vErSiOn</span><span class="hl-brackets">(</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-reserved">current_DATE</span><span class="hl-code">;</span></pre>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://tutorial-video.net/development/bazele-mysql-scurta-introducere-tutorial-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
