1 Star2 Stars3 Stars4 Stars5 Stars
Loading...Loading...

» PHP ქართულად – ნაწილი III (PHP მონაცემთა ბაზები)

“წიგნით, თავიდან ბოლომდე შეისწავლით PHP-ს საწყისებს. წიგნი განკუთვნილია დამწყებთათვის”
წიგნის ავტორი: ღონღაძე გიორგი.
წიგნის ვებ-ვიზუალიზაცია: Gigol.net

PHP MYSQL შესავალი

რა არის MYSQL?
MySQL არის მონაცემთა ბაზა. მონაცემთა ბზა განსაზღვრავს ინფორმაციის მოგროვების სტრუქტურას.
მონაცემთა ბაზაში არის ცხრილები. ისევე როგორც HTML ცხრილები, მონაცემთა ბაზის ცხრილები შეიცავენ რიგებს, სვეტებს და უჯრედებს.
მონაცემთა ბზაზების გამოყენება სასარგებლოა, მაშინ, როცა ვაგროვებთ კატეგორიულ ინფორმაციას. კომპანიას შესაძლოა ქონდეს მონაცემთა ბაზა მიმდინარე ცხრილებით: “მოსამსახურეები”, “პროდუქტები”, “მყიდველები” და “შეკვეთები”.
მონაცემთა ბაზის ცხრილები
მონაცემთა ბაზა ყველაზე ხშირად შეიცავს ერთ, ან რამდენიმე ცხრილს. თითოეულ ცხრილს გააჩნია საკუთარი სახელი. თითოეული ცხრილი შეიცავს მონაცემთა ჩანაწერებს.
ქვემოთ მოყვანილია სახელად “Persons” ცხრილის მაგალითი:

გვარი
სახელი
მისამართი
ქალაქი

Hansen
Ola
Timoteivn 10
Sandnes

Svendson
Tove
Borgvn 23
Sandnes

Pettersen
Kari
Storgt 20
Stavanger

ზემოთ მოყვანილი ცხრილი შეიცავს სამ ჩანაწერს (თითოს, თითო პიროვენებისათვის) და ოთხ სვეტს (გვარი, სახელი, მისამართი და ქალაქი).
მოთხოვნები
მოთხოვნა არის შეკითხვა, ან მოთხოვნა.
MySQL-თან ერთად, ჩვენ შეგვიძლია მოვითხოვოთ მონაცემთა ბაზა სპეციფიური ინფორმაციისათვის და და გვქონდეს დაბრუნებული ჩანაწერთა ბაზა.
შევხედოთ მიმდინარე მოთხოვნას:

SELECT LastName FROM Persons

ზემოთ მოყვანილი მოთხოვნა მონიშნავს პიროვნებათა მონაცემთა ბაზაში, გვარის სვეტში არსებულ ყველა მონაცემს და დააბრუნებს მას ჩანაწერთა ბაზის სახით:

გვარი

Hansen

Svendson

Pettersen

MYSQL – შეერთება მონაცემთა ბაზასთან

MYSQL მონაცემთა ბაზასთან შეერთება
სანამ ჩვენ გვექნება უფლება მონაცემთა ბაზის მონაცემებთან მუშაობისა, ჩვენ უნდა შევქმნათ კავშირი მონაცემთა ბაზებთან.
PHP-ში, ეს კეთდება mysql_connect() ფუნქციით.
სინტაქსი:

mysql_connect(servername,username,password);

პარამეტრი
აღწერა

servername
არააუცილებელი. სტანდარტული მნიშვნელობა არის “localhost:3306”

username
არააუცილებელი. მომხმარებლის სახელი სპეციფიკაცია

password
არააუცილებელი. მომხმარებლის პაროლის სპეციფიკაცია.

მაგალითი
მიმდინარე მაგალითში ჩვენ შევაგროვებთ კავშირებს ცვლადში ($con) მოგვიანებით სკრიპტში გამოსაყენებლად. “die” ნაწილი გაეშვება თუ კავშირი გაწყდება:

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 	 
 
 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
// some code 
?>

კავშირის დახურვა
კავშირი დაიხურება, მაშინ როდესაც სრიპტი დაამთავრებს მუშაობას. მანამდე კავშირის დახურვისათვის გამოვიყენოთ the mysql_close() ფუნქცია.

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
// some code 
mysql_close($con); 
?>

MYSQL – მონაცემთა ბაზების და ცხრილების შექმნა

მონაცემთა ბაზის შექმნა
CREATE DATABASE ოპერატორი გამოიყენება MySQL მონაცემთა ბაზის შესაქმნელად.
სინტაქსი

CREATE DATABASE database_name

იმისათვის რომ PHP-მ ამუშავოს ზემოთ მოყვანილი ოპერატორი, უნდა გამოვიყენოთ mysql_query() ფუნქცია. ეს ფუნქცია გამოიყენება მოთხოვნის, ან ბრძანების MySQL კავშირზე გასაგზავნად.
მაგალითი
მიმდინარე მაგალითში ჩვენ შევქმნით ბაზას სახელად “my_db”:

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
if (mysql_query("CREATE DATABASE my_db",$con)) 
  { 
  echo "Database created"; 
  } 
else 
  { 
  echo "Error creating database: " . mysql_error(); 
  } 
mysql_close($con); 
?>

ცხრილის შექმნა
CREATE TABLE ოპერატორი გამოიყენება MySQL-ში მონაცემთა ბაზების ცხრილების შესაქმნელად.
სინტაქსი

CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
…….
)

აუცილებელია დავამატოთ CREATE TABLE ოპერატორი mysql_query() ფუნქციაში, რათა შესრულდეს ბრძანება.
მაგალითი
მაგალითი გვიჩვენებს როგორ შევქმნათ ცხრილი სახელად “person”, სამი სვეტით. სვეტების სახელები იქნება “FirstName”, “LastName” და “Age”:

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
// Create database 
if (mysql_query("CREATE DATABASE my_db",$con)) 
  { 
  echo "Database created"; 
  } 
else 
  { 
  echo "Error creating database: " . mysql_error(); 
  } 
// Create table in my_db database 
mysql_select_db("my_db", $con); 
$sql = "CREATE TABLE person  
( 
FirstName varchar(15), 
LastName varchar(15), 
Age int 
)"; 
mysql_query($sql,$con); 
mysql_close($con); 
?>

აუცილებელი: სანამ შეიქმნება ცხრილები უნდა აირჩეს მონაცემთა ბაზა. მონაცემთა ბაზა ირჩევა mysql_select_db() ფუნქციით.
შენიშვნა: როდესაც ვქმნით varchar ტიპის მონაცემთა ბაზის ველს, ჩვენ უნდა მივუთითოთ ველის მაქსიმალური ზომა, მაგ.: varchar(15).
MYSQL მონაცემთა ტიპები
ქვემოთ მოყვანილია სხვადასვხა MySQL მონაცემთა ტიპები:

რიცხობრივი მონაცემთა ტიპები
აღწერა

int(size) smallint(size) tinyint(size) mediumint(size) bigint(size)
შეიცავს მხოლოდ მთელ რიცხვებს. ციფრთა მაქსიმალური რაოდენობის სპეციფიკაცია შესაძლებელია size პარამეტრში

decimal(size,d) double(size,d) float(size,d)
შეიცავს არამთელ რიცხვებს. ციფრთა მაქსიმალური რაოდენობის სპეციფიკაცია შესაძლებელია size პარამეტრში. რიცხვის მარჯვენა მხარეს ციფრთა მაქსიმალური რაოდენობის სპეციფიკაცია შესაძლებელია d პარამეტრში

ტექსტური მონაცემთა ტიპები
აღწერა

char(size)
შეიცავს ფიქსირებულ სიგრძის სტრინგს. ფიქსირებული ზომის სპეციფიკაცია ხდება ფრჩხილებში

varchar(size)
შეიცავს ცვლადი სიგრძის სტრინგს. მაქსიმალური ზომის სპეციფიკაცია ხდება ფრჩხილებში

tinytext
შეიცავს ცვლად სტრინგს, მაქსიმუმ 255 სიმბოლოს

text blob
შეიცავს ცვლად სტრინგს, მაქსიმუმ 65535 სიმბოლოს

mediumtext mediumblob
შეიცავს ცვლად სტრინგს, მაქსიმუმ 16777215 სიმბოლოს

longtext longblob
შეიცავს ცვლად სტრინგს, მაქსიმუმ 4294967295 სიმბოლოს

თარიღის მონაცემთა ტიპები
აღწერა

date(yyyy-mm-dd) datetime(yyyy-mm-dd hh:mm:ss) timestamp(yyyymmddhhmmss) time(hh:mm:ss)
შეიცავს თარიღს და/ან დროს

Misc. მონაცემთა ტიპები
აღწერა

enum(value1,value2,ect)
ENUM არის ENUMERATED სიის შემოკლებული ვარიანტი. შეუძლია შეაგროვოს 65535 მნიშვნელობა. თუ მნიშვნელობა ჩამატებულია, ის არ არის სიაში, ჩაისმება ცარიელი მნიშვნელობა

set
SET ანალოგიურია ENUM-სა. თუმცა, SET შეუძლია ქონდეს 64 სია.

MYSQL – ჩასმა

მონაცემთა ბაზის ცხრილში მონაცემის ჩასმა
INSERT INTO ოპერატორი გამოიყენება მონაცემთა ბაზის ცხრილში ახალი ჩანაწერის ჩასამატებლად.
სინტაქსი

INSERT INTO table_name
VALUES (value1, value2,….)

ასევე შესაძლებელია სვეტების სპეციფიკაცია, თუ სად გვსურს მონაცემთა ჩასმა:

INSERT INTO table_name (column1, column2,…)
VALUES (value1, value2,….)

შენიშვნა: SQL ოპერატორების დაწერა შესაძლებელია, როგორც პატარა, ასევე დიდი ასოებით.
იმისათვის რომ PHP-მ შეასრულოს ეს ოპერატორი უნდა გამოვიყენოთ mysql_query() ფუნქცია.
მაგალითი

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
mysql_select_db("my_db", $con); 
mysql_query("INSERT INTO person (FirstName, LastName, Age)  
VALUES ('Peter', 'Griffin', '35')"); 
mysql_query("INSERT INTO person (FirstName, LastName, Age)  
VALUES ('Glenn', 'Quagmire', '33')"); 
mysql_close($con); 
?>

მონაცემთა ბაზაში მონაცემების ფორმიდან ჩამატება
ახლა ჩვენ შევქმნით HTML ფორმას, რომელსაც გამოვიყენებთ ცხრილში ახალი ჩანაწერის ჩამატებისათვის.
HTML ფორმა:

<html> 
<body> 
<form action="insert.php" method="post"> 
Firstname: <input type="text" name="firstname" /> 
Lastname: <input type="text" name="lastname" /> 
Age: <input type="text" name="age" /> 
<input type="submit" /> 
</form> 
</body> 
</html>

როდესაც მომხმარებელი იმოქმედებს submit ღილაკზე, ფორმაში არსებული მონაცემები გაიგზავნება “insert.php” ფაილში. “insert.php” ფაილი შეუერთდება მონაცემთა ბაზას და იპოვის მნისვნელობებს ფორმიდან, PHP $_POST ცვლადებთან ერთად. შემდეგ, mysql_query() ფუნქცია გაუშვებს INSERT INTO ოპერატორს და მონაცემთა ბაზის ცხრილს დაემატება ახალი ჩანაწერი.
ქვემოთ მოყვანილია “insert.php” გვერდის კოდი:

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
mysql_select_db("my_db", $con); 
$sql="INSERT INTO person (FirstName, LastName, Age) 
VALUES 
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"; 
if (!mysql_query($sql,$con)) 
  { 
  die('Error: ' . mysql_error()); 
  } 
echo "1 record added"; 
mysql_close($con) 
?>

MYSQL – მონიშვნა

მონაცემთა ბაზის ცხრილიდან მონაცემის მონიშვნა
SELECT ოპერატორი გამოიყენება მონაცემთა ბაზის ცხრილში მონაცემის მოსანიშნად.
სინტაქსი

SELECT column_name(s)
FROM table_name

მაგალითი

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
mysql_select_db("my_db", $con); 
$result = mysql_query("SELECT * FROM person"); 
while($row = mysql_fetch_array($result)) 
  { 
  echo $row['FirstName'] . " " . $row['LastName']; 
  echo "<br />"; 
  } 
mysql_close($con); 
?>

ზემოთ მოყვანილი მაგალითი აგროვებს mysql_query() ფუნქციით დაბუნებულ მონაცემებს $result ცვლადში. შემდეგ, ჩვენ ვიყენებთ mysql_fetch_array() ფუნქციას პირველი რიგის ჩანაწერთა ბაზდიდან დასაბრუნებლად, როგორც მასივი.
კოდი დაბეჭდავს:

Peter Griffin
Glenn Quagmire

რეზულტატების HTML ცხრილში გამოსახვა
მიმდინარე მაგალითი მონიშნულ მონაცემებს გამოსახავს HTML ცხრილში:

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
 
mysql_select_db("my_db", $con); 
 
$result = mysql_query("SELECT * FROM person"); 
 
echo "<table border='1'> 
<tr> 
<th>Firstname</th> 
<th>Lastname</th> 
</tr>"; 
while($row = mysql_fetch_array($result)) 
  { 
  echo "<tr>"; 
  echo "<td>" . $row['FirstName'] . "</td>"; 
  echo "<td>" . $row['LastName'] . "</td>"; 
  echo "</tr>"; 
  } 
echo "</table>"; 
mysql_close($con); 
?>

კოდი დაბეჭდავს:

Firstname Lastname
Glenn Quagmire
Peter Griffin

MYSQL – სადაც წინადადებაა

სადაც წინადადებაა
მხოლოდ იმ მონაცემთა მოსანიშნად, რომელიც ემთხვევა სპეციფიურ კრიტერიუმებს, დავამატოთ WHERE clause, SELECT ოპერატორს.
სინტაქსი

SELECT column FROM table
WHERE column operator value

მიმდინარე ოპერატორები შესაძლებელია გამოვიყენოთ WHERE clause-თან ერთად:

ოპერატორი
აღწერა

=
უდრის

!=
არ უდრის

>
მეტია ვიდრე

< ნაკლებია ვიდრე >=
მეტია ან ტოლი

<= ნაკლებია ან ტოლი BETWEEN შუა, ან შემცველი რიგი LIKE მსგავსის ძებნა მაგალითი

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
 
mysql_select_db("my_db", $con); 
 
$result = mysql_query("SELECT * FROM person 
WHERE FirstName='Peter'"); 
 
while($row = mysql_fetch_array($result)) 
  { 
  echo $row['FirstName'] . " " . $row['LastName']; 
  echo "<br />"; 
  } 
 
?>

კოდი დაბეჭდავს:

Peter Griffin

MYSQL – საკვანძო სიტყვებით მითითებული

ORDER BY
ORDER BY გამოიყენება ჩანაწერთა ბაზაში მონაცემების დასალაგებლად.
სინტაქსი

SELECT column_name(s)
FROM table_name
ORDER BY column_name

მაგალითი

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
 
mysql_select_db("my_db", $con); 
 
$result = mysql_query("SELECT * FROM person ORDER BY age"); 
 
while($row = mysql_fetch_array($result)) 
  { 
  echo $row['FirstName']; 
  echo " " . $row['LastName']; 
  echo " " . $row['Age']; 
  echo "<br />"; 
  } 
mysql_close($con); 
?>

კოდი დაბეჭდავს:

Glenn Quagmire 33
Peter Griffin 35

ზრდადობით, ან კლებადობით დალაგება
თუ ვიყენებთ ORDER BY-ს, ჩანაწერთა ბაზის დალაგება მითითებულია სტანდარტულად.
გამოვიყენოთ DESC კლებადობით დალაგების მისათითებლად:

SELECT column_name(s)
FROM table_name
ORDER BY column_name DESC

ორი მწკრივით მითითება
შესაძლებელია ერთზე მეტი მწკრივით მითითება. როდესაც ვუთითებთ ერთზე მეტი მწკრივით, მეორე მწკრივი გამოიყენება მხოლოდ მაშინ, თუ პირველი მწკრივის მნიშვნელობები იდენტურია:

SELECT column_name(s)
FROM table_name
ORDER BY column_name1, column_name2

MYSQL – განახლება

მონაცემთა ბაზებში მონაცემთა განახლება
UPDATE ოპერატორი გამოიყენება მონაცემთა ბაზების ცხრილში მონაცემთა განახლებისათვის.
სინტაქსი

UPDATE table_name
SET column_name = new_value
WHERE column_name = some_value

მაგალითი

FirstName
LastName
Age

Peter
Griffin
35

Glenn
Quagmire
33

მიმდინარე მაგალითი აახლებს მონაცემებს “Person” ცხრილში:

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
mysql_select_db("my_db", $con); 
 
mysql_query("UPDATE Person SET Age = '36' 
WHERE FirstName = 'Peter' AND LastName = 'Griffin'"); 
mysql_close($con); 
?>

განახლების შემდეგ, “Person” ცხრილი გამოიყურება ასე:

FirstName
LastName
Age

Peter
Griffin
36

Glenn
Quagmire
33

MYSQL – წაშლა

მონაცემთა წაშლა
DELETE FROM ოპერატორი გამოიყენება მონაცემთა ბაზაში მონაცემების წაშლისათვის.
სინტაქსი

DELETE FROM table_name
WHERE column_name = some_value

მაგალითი

FirstName
LastName
Age

Peter
Griffin
35

Glenn
Quagmire
33

მიმდინარე მაგალითი ცხრილში “Person” წაშლის ყველას მონაცემს, ვისი LastName=’Griffin’:

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
  { 
  die('Could not connect: ' . mysql_error()); 
  } 
mysql_select_db("my_db", $con); 
 
mysql_query("DELETE FROM Person WHERE LastName='Griffin'"); 
mysql_close($con); 
?>

წაშლის შემდეგ ცხრილს ექნება სახე:

FirstName
LastName
Age

Glenn
Quagmire
33

ნაწილი IV – PHP XML

PHP XML EXPAT PARSER

რა არის XML?
XML გამოიყენება მონაცემთა აღწერისათვის და ფოკუსირებისათვის. XML ფაილი აღწერს მონაცემთა სტრუქტურას.
XML-ში, ტეგები არ არიან განსაზღვრულნი. ჩვენ უნდა განვსაზღვროთ საკუთარი ტეგები.

რა არის EXPAT?
წასაკითხად და განახლებისათვის – შევქმნათ და მანიპულაცია გავუკეთოთ – XML დოკუმენტს, ჩვენ დაგვჭირდება XML გამრჩეველი.
აქ არის ორი ბაზური ტიპი XML გამრჩეველისა:
· ხე-ბაზური გამრჩეველი: ეს გამრჩეველი გარდაქმნის XML დოკუმენტს ხისებრ სტრუქტურაში. ის ანალიზს უკეთებს მთლიან დოკუმენტს და უზრუნველყოფს ხის ელემენტებთან წვდომას. მაგ.: Document Object Model (DOM)
· შემთხვევა-ბაზური გამრჩეველი: ათვარიელებს XML დოკუმენტს, როგორც სერიების შემთხვევას. როდესაც სპეციფიური შემთხვევა მოხდება, ის გამოიძახებს ფუნქციას მის გამოსატანად

გამრჩეველის გაძევება არის შემთხვევა-ბაზური გამრჩეველი.
შემთხვევა-ბაზური გამრჩეველები ფოკუსირებას აკეთებენ XML დოკუმენტების შემცველობაზე და არა მათ სტრუქტურაზე.
შევხედოთ მიმდინარე XML ნაწილს:

<from>Jani</from>

ზემოთ, შემთხვევა-ბაზური გამრჩეველი ანგარიშს აბარებს XML-ს, როგორც სერიის სამ შემთხვევას:

· საწყისი ელემენტი: from
· საწყისი CDATA სექცია, მნიშვნელობა: Jani
· სასრული ელემენტი: from

ზემოთ მოყვანილი XML მაგალითი შეიცავს well-formed XML-ს. თუმცა, მაგალითი არასწორი XML-ია, რადგან აქ არ არის განსაზღვრული დოკუმენტის ტიპი(Document Type Definition (DTD)).
ინსტალაცია
XML გამრჩეველის გაძევება ფუნქციები არიან PHP-ს შემცველობაში. ამ ფუნქციების გამოყენებისათვის ინსტალაცია საჭირო არ არის.

XML ფაილი

ქვემოთ მოყვანილი XML ფაილი გამოყენებულ იქნება ჩვენ მაგალითში:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note>

XML გამრჩეველის ინიციალიზება
ჩვენ გვსურს XML გამრჩეველის ინიციალიზება PHP-ში, ზოგიერთი გამომტანის განსაზღვრა სხვადასხვა XML შემთხვევებისათვის და XML ფაილის გარჩევა.
მაგალითი

<?php 
//Initialize the XML parser 
$parser=xml_parser_create(); 
//Function to use at the start of an element 
function start($parser,$element_name,$element_attrs) 
  { 
  switch($element_name) 
    { 
    case "NOTE": 
    echo "-- Note --<br />"; 
    break;  
    case "TO": 
    echo "To: "; 
    break;  
    case "FROM": 
    echo "From: "; 
    break;  
    case "HEADING": 
    echo "Heading: "; 
    break;  
    case "BODY": 
    echo "Message: "; 
    } 
  } 	 
 
 
//Function to use at the end of an element 
function stop($parser,$element_name) 
  { 
  echo "<br />"; 
  } 
//Function to use when finding character data 
function char($parser,$data) 
  { 
  echo $data; 
  } 
//Specify element handler 
xml_set_element_handler($parser,"start","stop"); 
//Specify data handler 
xml_set_character_data_handler($parser,"char"); 
//Open XML file 
$fp=fopen("test.xml","r"); 
//Read data 
while ($data=fread($fp,4096)) 
  { 
  xml_parse($parser,$data,feof($fp)) or  
  die (sprintf("XML Error: %s at line %d",  
  xml_error_string(xml_get_error_code($parser)), 
  xml_get_current_line_number($parser))); 
  } 
//Free the XML parser 
xml_parser_free($parser); 
?>

კოდი დაბეჭდავს:

— Note —
To: Tove
From: Jani
Heading: Reminder
Message: Don’t forget me this weekend!

როგორ მუშაობს:
1. გავაკეთოთ XML გამრჩეველის ინიციალიზება xml_parser_create() ფუნქციით
2. შევქმნათ ფუნქციები სხვადასხვა გამომტანების გამოსაყენებლად
3. დავამატოთ xml_set_element_handler() ფუნქცია, იმის სპეციფიკაციისათვის, თუ რომელი ფუნქცია გაეშვება, როცა გამრჩეველი შეხვდება ტეგების გახსნას და დახურვას
4. დავამატოთ xml_set_character_data_handler() ფუნქცია, იმის სპეციფიკაციისათვის, თუ რომელი ფუნქცია გაეშვება, როდესაც გამრჩეველი შეხვდება სიმბოლოების მონაცემებს.
5. გავარჩიოთ “test.xml” ფაილი xml_parse() ფუნქციით
6. შეცდომის შემთხვევაში, დავამატოთ xml_error_string() ფუნქცია XML შეცდომის კონვერტირებისათვის ტექსტურ აღწერაში
7. გამოვიძახოთ xml_parser_free() ფუნქცია, რათა განვათავისუფლოთ მახსოვრობა, რომელიც განაწილებულია xml_parser_create() ფუნქციასთან

PHP XML DOM

რა არის DOM?
W3C DOM უზრუნველყოფს სტანდარტულ ობიექტებს HTML და XML დოკუმენტებისათვის და სტანდარტულ ინტერფეისს მათზე წვდომისა და მანიპულაციისათვის.
W3C DOM გამოყოფილია განსხვავებულ ნაწილებში (Core, XML და HTML) და განსხვავებულ დონეებში (DOM დონე 1/2/3):
· Core DOM – გასაზღვრავს სტანდარტულ ობიექტებს დოკუმენტის ნებისმიერი სტრუქტურისათვის
· XML DOM – გასაზღვრავს სტანდარტულ ობიექტებს XML დოკუმენტისათვის
· HTML DOM – გასაზღვრავს სტანდარტულ ობიექტებს HTML დოკუმენტისათვის

DOM გარჩევა
DOM გამრჩეველი არის ხე-ბაზური გამრჩეველი.
შევხედოთ XML დოკუმენტის ნაწილს:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<from>Jani</from>

XML DOM ხედავს XML-ს, როგორც ხისებრ სტრუქტურას:
· დონე 1: XML დოკუმენტი
· დონე 2: მთავარი ელემენტი:
· დონე 3: ტექსტური ელემენტი: “Jani”

XML ფაილი
ქვემოთ მოყვანილ XML ფაილს გამოვიყენებთ მაგალითში:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note>

XML-ის ჩატვირთვა და დაბეჭდვა
ჩვენ გვინდა XML გამრჩეველის ინიციალიზაცია, xml-ის ჩატვირთვა და მისი დაბეჭდვა:
მაგალითი

<?php 
$xmlDoc = new DOMDocument(); 
$xmlDoc->load("note.xml"); 
 
print $xmlDoc->saveXML(); 
?>

კოდი დაბეჭდავს:

Tove Jani Reminder Don’t forget me this weekend!

თუ მოვნიშნავთ “View source” ბრაუზერში, ჩვენ დავინახავთ შემდეგ HTML კოდს:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note>

ზემოთ მოყვანილი კოდი ქმნის DOM დოკუმენტ-ობიექტს და ტვირთავს XML-ს “note.xml”-დან.
შემდეგ saveXML() ფუნქცია დებს შიდა XML დოკუმენტს სტრინგში, ისე რომ ჩვენ შეგვეძლოს მისი დაბეჭდვა.

XML ციკლი
ჩვენ გვინდა XML გამრჩეველის ინიციალიზება, XML-ის ჩატვირთვა და ელემენტებს შორის ციკლი:
მაგალითი

<?php 
$xmlDoc = new DOMDocument(); 
$xmlDoc->load("note.xml"); 
$x = $xmlDoc->documentElement; 
foreach ($x->childNodes AS $item) 
  { 
  print $item->nodeName . " = " . $item->nodeValue . "<br />"; 
  } 
?>

კოდი დაბეჭდავს:

#text =
to = Tove
#text =
from = Jani
#text =
heading = Reminder
#text =
body = Don’t forget me this weekend!
#text =

PHP SIMPLEXML

რა არის SIMPLEXML?
SimpleXML არის ახალი PHP 5-ში. ეს არის ადვილი გზა ელემენტის ატრიბუტებისა და ტექსტის მისაღებად, თუ ჩვენ ვიცით XML დოკუმენტის სქემა.
DOM, ან Expat parser-თან შედარებით, SimpleXML უბრალოდ იღებს კოდის რამოდენიმე ხაზს, ელემენტიდან მონაცემთა ტექსტის წასაკითხად.
SimpleXML აკონვერტებს XML დოკუმენტს ობიექტში, ამის მსგავსად:
· ელემენტები – კონვერტირებულნი არიან SimpleXMLElement ობიექტის თითო ატრიბუტად. როდესაც აქ არის ერთ დონეზე, ერთზე მეტი ელემენტი, ისინი განთავსდებიან მასშივში
· ატრიბუტები – აქვთ წვდომა ასოციაციური მასივების გამოყენებაზე, სადაც ინდექსი შეესაბამება ატრიბუტის სახელს
· ელემენტის მონაცემები – ტექსტური მონაცემები ელემენტებიდან კონვერტირებულნი არიან სტრინგში.

SimpleXML არის სწრაფი და ადვილი გამოსაყენებელი, როდესაც სრულდება ბაზური ამოცანები:
· XML ფაილების წაკითხვა
· XML სტრინგებიდან მონაცემთა ამოღება
· ტექსტური კვანძების, ან ატრიბუტების რედაქტირება

SIMPLEXML-ის გამოყენება
ქვემოთ მოყვანილია XML ფაილი:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note>

ვაკეთებთ შემდეგს:
1. ჩვატვირთოთ XML ფაილი
2. მივიღოთ პირველი ელემენტის სახელი
3. შევქმნათ ციკლი, რომელიც გაეშვება თითოეულ კვანძზე, children() ფუნქციის გამოყენებით
4. დავბეჭდოთ ელემენტის სახელი და მონაცემები თითოეული კვანძისათვის

<?php 
$xml = simplexml_load_file("test.xml"); 
echo $xml->getName() . "<br />"; 
foreach($xml->children() as $child) 
  { 
  echo $child->getName() . ": " . $child . "<br />"; 
  } 
?>

კოდი დაბეჭდავს:

note
to: Tove
from: Jani
heading: Reminder
body: Don’t forget me this weekend!

© აქ გამოქვეყნებული ნებისმიერი რესურსის გამოყენება, დასაშვებია მხოლოდ მისივე გვერდის ბმულის წყაროდ მითითებით!

7 კომენტარი ამ პოსტზე↓

ჩანიშნე ქვედა კომენტარების RSS 2.0 წყარო.
  1. ნოდარი ამბობს:
    24 დეკემბერი, 2011წ. 19:25სთ.

    აუ ილია მაგარი ჯიგარი ხარ…

    კარგია თუ ცუდი: Thumb up 0 Thumb down 0

  2. ლევა ამბობს:
    8 მარტი, 2013წ. 05:38სთ.

    აუ ყველაფერი ჯიგრულადაა პროსტა xml –ს მაინც ვერ დავუმუგამე.

    კარგია თუ ცუდი: Thumb up 0 Thumb down 0

  3. ვასო ამბობს:
    3 აპრილი, 2013წ. 11:41სთ.

    გ ა ი ხ ა რ ე ! ! !

    კარგია თუ ცუდი: Thumb up 0 Thumb down 0

  4. [SHOOT]A company ამბობს:
    3 ივლისი, 2013წ. 23:28სთ.

    ადმინ ჯიგარი ხარ! სპს ძაან დამეხმარე :*

    კარგია თუ ცუდი: Thumb up 0 Thumb down 0

  5. Nelly ამბობს:
    27 ივლისი, 2013წ. 10:59სთ.

    Hi. I noticed your blog title, “Gigol.net

    კარგია თუ ცუდი: Thumb up 0 Thumb down 0

  6. მამუკა ამბობს:
    12 მაისი, 2015წ. 11:25სთ.

    როგორი კოდირებით უნდა შეიქმნას mysql-ში მონაცემთა ბაზა და ცხრილი, რომ დაინახოს ქართული ჩანაწერები. php-ით რომ ვუკავშირდები mysql-ს ჩანაწერების ნაცვლად გამოაქვს კითხვის ნიშნები(?), ე.ი. ამახინჯებს ჩანაწერებს.

    კარგია თუ ცუდი: Thumb up 0 Thumb down 0

  7. ილია ამბობს:
    15 მაისი, 2015წ. 22:50სთ.

    CHARACTER SET utf8

    კარგია თუ ცუდი: Thumb up 0 Thumb down 0

დატოვე კომენტარი↓

*გთხოვთ წეროთ ქართული ასოებით

 

 

XHTML: დამხმარე კოდები: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

1 vote, average: 5.00 out of 51 vote, average: 5.00 out of 51 vote, average: 5.00 out of 51 vote, average: 5.00 out of 51 vote, average: 5.00 out of 5

› 14 juillet, fête nationale française

2010 წლის 14 ივლისი, საფრანგეთის ეროვნული დღე.
ფეერვერკების ამსახველი ლამაზი ვიდეო. ფოტოაპარატითაა გადაღებული და სამწუხაროდ დაბალი ხარისხია, მაგრამ მაინც წავა.
ნახეთ:
[ვიდეო…]ვიდეოს გადმოწერა↓

DU