HTML formaları. PHP və Formalar bu qədər




Heç kimə sirr deyil ki, HTML səhifəsinin vebsaytla ən çox əlaqə qurma üsulu formadır. Forma (yəni forma etiketi ilə formalaşan HTML elementi) pulsuz e-poçt xidmətləri, elektron mağazalar və bir çox başqa saytlar tərəfindən də istifadə olunur.

PHP istifadə edərək sadə formaları emal etmək asandır. Bununla belə, onların sayının geniş diapazonda dəyişə biləcəyinə və sayının əvvəlcədən məlum olmamasına baxmayaraq, zaman-zaman eyni tipli bir neçə sahəni ehtiva edən formanı emal etməyə ehtiyac yaranır. Belə hallar üçün PHP dəyərlər massivi ilə eyni tipli sahələrin işlənməsini təmin edir.


Müxtəlif növ sahələr üçün variantları daha ətraflı nəzərdən keçirək.

Mətn sahələri

Bu məqalədə mətn sahələri mətnin tip parametri və mətn sahəsi etiketi ilə daxiletmə teqləri tərəfindən yaradılmış elementlər kimi müəyyən edilir. Bir neçə belə sahədən ibarət formanın işlənməsini təşkil etmək ən asandır. Aşağıdakı siyahı belə bir forma üçün HTML işarələməsini göstərir.






Siyahıdan göründüyü kimi, PHP baxımından forma elementlərinin adları massiv elementləridir. Buna görə də, bu formanı emal edəcək PHP skripti bu formanın bütün çoxsaylı mətn sahələrini tək massiv kimi nəzərdən keçirəcək. Ayrı-ayrı elementlərə indekslə daxil olmaq və ya aşağıdakı nümunədə olduğu kimi siyahıdan və hər bir əmrdən istifadə edərək sadalamaq olar.

n"; ?>

Keçidlər

Bu məqalədə qeyd qutuları qeyd qutusuna təyin edilmiş tip parametri ilə giriş teqlərində yaradılmış elementlərdir. Dəyişən sayda "açarların" istifadəsi forması eyni şəkildə qurulur. Nəzərə alın ki, xüsusi radio düyməsinin dəyərinin seçimi (yəni dəyər xüsusiyyətinin dəyəri) vacib deyil. Aşağıdakı siyahıda bir nümunə göstərilir:






Bununla belə, belə bir formanın işlənməsi mətn sahələri üçün təsvir edilən emaldan fərqlənir. Bu halda, sayt ziyarətçisinin bu və ya digər keçidi yandırıb-söndürmədiyini müəyyən etmək lazımdır. Aktivdirsə, müvafiq massiv elementi mövcuddursa, o, yoxdur; Aşağıdakı siyahı aktivləşdirilmiş radio düymələrini çap edən bir nümunə PHP skriptidir:

Radio düymələri

Radio düymələrinin işlənməsini təsvir etməzdən əvvəl onların necə işlədiyini xatırlamaq lazımdır. Radio düymələrinin mahiyyəti (növ parametrinin dəyəri radioya bərabər olan daxiletmə teqləri ilə yaradılmış elementlər) ondan ibarətdir ki, bir düyməni seçməklə istifadəçi avtomatik olaraq eyni dəstdən başqa düymənin seçimini ləğv edir. Düymələr çox sadə bir dəstdə birləşdirilir: dəstdəki bütün düymələr eyni ada malikdir.

Ancaq dəstdəki düymələrin dəyərləri (yəni dəyər parametrləri) fərqlidir. Və seçilmiş düymənin dəyəri dəstin adı ilə sayta göndəriləcək. Mətn sahələri və radio düymələri kimi, radio düymələr dəstlərinin adları PHP-də massiv elementlərinin adları kimi formatlaşdırılmalıdır. Belə bir forma nümunəsi aşağıdakı siyahıda verilmişdir:

// düymələrin ilk dəsti
// düymələrin ikinci dəsti
// üçüncü düymələr dəsti

Radio düymələrinin işlənməsi həm mətn sahələrindən, həm də emal zamanı radio düymələrindən istifadə ideyalarını birləşdirir. Əgər html səhifəsinin müəllifi standart dəyər təyin etməyibsə və istifadəçi radio düymələri dəstində konkret düyməni seçməyibsə, onda bu element massivdə olmayacaq (radio düymələri kimi).

Düymə seçilibsə, müvafiq massiv elementi onun dəyərini ehtiva edəcək (mətn sahələrində olduğu kimi). Aşağıda çoxlu radio düymələri dəsti ilə formanı emal edən siyahı nümunəsi verilmişdir.

n"; ?>

Beləliklə, mürəkkəb formaların emalında mürəkkəb bir şey yoxdur.

Bu dərslikdə biz PHP dəyişənləri və CSS istifadə edərək sadə dizayn şablon dəyişdiricisi yaradacağıq.

Bir çox oxşar açarlar var və mən artıq bir neçə dəfə bu mövzuda dərsləri tərcümə etmişəm. Xüsusi PHP skriptlərindən istifadə edərək dizaynı tamamilə dəyişə bilərsiniz və ya JavaScript-dən istifadə edə bilərsiniz. Bu halda, skriptlər sadəcə üslub cədvəllərini dəyişir. Səhifədə yalnız bir neçə üslubu dəyişmək lazım gələrsə nə etməli? Buna görə bir neçə fərqli CSS faylı yaratmayacağıq.

Xoşbəxtlikdən, bu vəziyyətdən çıxış yolu var. PHP dəyişənləri bu işdə bizə kömək edəcək, onlar üslub cədvəlində bəzi sətirləri dəyişəcək və buna uyğun olaraq dizaynımız da dəyişəcək.

İlk öncə səhifəmizin məzmunu üçün PHP faylı yaratmalıyıq. Biz bunu son dərəcə sadə edəcəyik, lakin siz daha mürəkkəb tətbiq sxemləri hazırlaya bilərsiniz. Nəzərə alın ki, stil cədvəlimiz .php genişlənməsinə malikdir və CSS qovluğunda yerləşir.


< html >

CSS Demosunda PHP Dəyişənləri
< meta http -equiv="Content -Type" content="text /html; charset = utf-8" />










Ehtiyacınız olan hər hansı bir elementi yoxlayın, adipisising elitini təyin edin, iş vaxtı və hər hansı bir iş üçün vaxt ayırın. Minimum hesab edirəm ki, heç bir nəticə əldə edə bilməyəcəksiniz. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, identity of the officia desertunt mollit anim id est of office.





Şablonu dəyişdirməyə imkan verəcək kiçik bir naviqasiya ilə bəzi məzmun yaratdım (bizim vəziyyətimizdə başlıq dəyişəcək).

Biz eyni PHP faylına ad dəyərini ötürməklə cari mövzunu dəyişmək üçün sorğu sətirindən istifadə edəcəyik. Hal-hazırda hansı dizaynı istifadə etdiyimizi xatırlamaq üçün də skriptə ehtiyacımız var və o, saytda qalır.

Sənəd növündən əvvəl aşağıdakı kodu daxil edin:

session_start();


$_SESSION["şablon"] = $_GET["şablon"];

) elseif (isset($_SESSION["şablon"])) (
$template = "?template=".$_SESSION["şablon"];
) başqa (
$şablon = "";
}
?>

Beləliklə, bu kodun nə etdiyi budur. Biz seanslardan istifadə etdiyimiz üçün əvvəlcə sessiyaya başlamalıyıq. Sonra, sorğu sətirində şablon dəyişəninin dəyərinin olub olmadığını yoxlayırıq. Əgər belə deyilsə, onda biz seans dəyişənini şablonun dəyərinə təyin edirik. Sonra CSS faylının yerinə əlavə edəcəyimiz sətirlə yerli dəyişən yaradırıq. Bu, bizə PHP faylında istifadə etmək istədiyimiz şablonun adını ötürməyə, CSS üslublarını yaratmağa imkan verəcək.

İndi şablon dəyişdirici yarada bilərik. İstədiyiniz nümunəni müəyyən etmək üçün 1-3 rəqəmlərindən istifadə edirik:

mövzunu dəyişdirin:
1
2
3

CSS-nin yaradılmasına cavabdeh olan PHP faylının yerini də dəyişdirməliyik.

İndi şablonumuzun yaradılmasına cavabdeh olacaq PHP faylını yaratmağa hazırıq. Biz brauzerə faylın ən əvvəlində CSS üslublarının burada yer alacağını bildirməliyik. Aşağıdakı kod xətti bu işdə bizə kömək edəcək:

Başlıq("Məzmun növü: mətn/css; simvol dəsti: UTF-8");

İndi siz sadəcə olaraq bu faylı PHP dəyişənlərini daxil etmək imkanı ilə normal üslub cədvəli kimi istifadə edə bilərsiniz. Bu, sizə nəinki səhifənin görünüşünü dəyişdirmək, həm də məzmunu dinamik şəkildə dəyişdirmək üçün böyük imkanlar açır.

Yalnız 3 mümkün nümunəmiz olduğundan əmin olmalıyıq ki, yalnız bu 3 rəqəmdən istifadə edilə bilər. Birdən kimsə sorğu sətirində fərqli bir dəyər ötürməyə cəhd edərsə, defolt şablon onların gözləri qarşısında açılacaq (bizim vəziyyətimizdə bu “1”dir).

$şəblonların sayı = 3;
if (isset($_GET["şablon"])) (
$şablon = $_GET["şablon"];
əgər ((!is_rəqəm($şablon)) || ($şablon > $şablon nömrəsi) || ($şablon)< 0)) {
$şablon = 1;
) başqa (
$şablon = dəyirmi($şablon);
}
) başqa (
$şablon = 1;
}

İndi bizdə istifadə ediləcək şablonun nömrəsini ehtiva edən yerli $şablon dəyişəni var. Aydınlıq üçün bunu CSS koduna şərh kimi istifadə edərək yoxlaya bilərsiniz:

Echo "/*====== istifadə edilən şablon: ".$şablon." ======*/";

Bundan sonra siz style.php faylına müraciət edə və mənbə kodunda aşağıdakı yazıya baxa bilərsiniz: “/*====== istifadə olunan şablon: 1 ======*/”. Brauzerdə style.php?template=2 ünvanına daxil olsanız, onda fərqli dəyər olacaq.

Hər şablon üçün ayrıca üslub cədvəli yaratmadığımız üçün dizaynlarımız arasındakı fərqləri yalnız bir faylda qeyd etməliyik. Bu dəyişiklikləri seriala yaza bilərik:

$css = massiv(
"header-background" => massiv(
1 => "url(../images/header-bg-1.jpg) təkrar olunmur",
2 => "url(../images/header-bg-2.jpg) təkrar olunmur",
3 => "url(../images/header-bg-3.jpg) təkrar olunmur"
),
"header-h1-colour"=> massiv(
1 => "#fff",
2 => "#fff",
3 => "#666"
),
"header-h1-font"=> massiv(
1 => "qalın normal 35px Helvetica, Arial, sans-serif",
2 => "qalın normal 35px Trebuchet MS, Arial, sans-serif",
3 => "normal normal 35px Gürcüstan, serif"
);

Gördüyünüz kimi, hər bir CSS seçicisi üçün massivdə 3 element ayırmışam.

İndi sadəcə olaraq düzgün yerdə əvəz etməliyik:

Fon:;

və şablondan asılı olaraq fərqli fon şəklimiz olacaq.

Bu sizə lazım olan hər şeydir. Bu konstruksiyaları fayl boyunca istifadə edin. Bu yolla siz səhifədə çoxlu müxtəlif elementləri əvəz edə bilərsiniz. Tam üslub cədvəli:

* {
marja: 0;
doldurma: 0;
}
bədən (
font ölçüsü:.8em;
fon:#F3F4F9;
font-family:Arial;
mətnin düzülməsi:mərkəz;
}
#bükmək (
eni: 990px;
marja: 0 avtomatik;
mətni düzün: sola;
}
#nav (
doldurma: 10px 0;
eni: 990px;
daşqın:avtomatik;
}
#loqo (
float:sol;
}
#dəyişdirici (
üzmək: sağa;
eni: 170px;
mətni düzün: sağa;
doldurma:45px 20px 0 0;
}
#keçirici aralığı (
float:sol;
doldurma:6px 10px 0 0;
}
#keçirici a (
ekran: blok;
float:sol;
doldurma: 4px 8px;
haşiyə:1px bərk #ccc;
fon:#eee;
kənar: 0 0 0 2px;
}
#dəyişdirici a:hover (
fon:#fff;
}
#başlıq (
aydın:hər ikisi;
fon:;
hündürlük: 206px;
}
#başlıq h1 (
mətni düzün: sağa;
doldurma:155px 25px 0 0;
rəng:;
şrift:;
}
#col1 (
eni: 450px;
float:sol;
haşiyə: 20px 0 0 0;
}
#col2 (
eni: 450px;
üzmək: sağa;
haşiyə: 20px 0 0 0;
}

Bu belədir! Zövq alın!

Çox vaxt veb saytlarda HTML formaları yerləşdirilmiş səhifələrə rast gələ bilərsiniz. Veb formaları saytınızın ziyarətçilərindən məlumat almaq üçün əlverişli bir yoldur. Buna misal olaraq ziyarətçilərə və sayt tərtibatçılarına rəy bildirən qonaqlar kitabını göstərmək olar. Formalar CMS hazırlayarkən sayt tərtibatçıları üçün də əlverişlidir ki, bu da onlara saytın əsas xüsusiyyətini - aktuallığını qorumağa imkan verir. Bu məqalə HTML formalarının yaradılması, onların işlənməsi və məlumatların ekran formalarından PHP skriptlərinə ötürülməsinin əsaslarını əhatə edir.

1) Sadə bir forma yaradın

Teqlər

formanın başlanğıcını və sonunu müəyyənləşdirin. Başlanğıc forma etiketi
iki atribut ehtiva edir: hərəkətüsul. Fəaliyyət atributunda skripti emal etmək üçün çağırılmalı olan skript URL-i var. Atribut üsul brauzerə formanı təqdim etmək üçün hansı növ HTTP sorğusundan istifadə edəcəyini bildirir; mümkün dəyərlər POSTGET.

Şərh

POST və GET metodları arasındakı əsas fərq məlumatın ötürülmə üsuludur. GET metodunda parametrlər ünvan çubuğundan keçirilir, yəni. əsasən HTTP sorğu başlığında, POST metodunda isə parametrlər HTTP sorğusunun əsas hissəsi vasitəsilə ötürülür və ünvan sətrində heç bir şəkildə əks olunmur.

$text = nl2br($_POST["mytext"]);
?>

Tapşırıq: Tutaq ki, 2000-ci ildən 2050-ci ilə qədər olan bir açılır siyahı yaratmalısınız.
Həll: Formanın işlənməsi üçün SELECT elementi və PHP skripti ilə HTML forması yaratmalısınız.

Müzakirə:

Əvvəlcə iki fayl yaradaq: form.htmlaction.php. Faylda form.html açılan siyahısı olan html formasını ehtiva edəcək. Üstəlik, siyahıdakı dəyərlər iki şəkildə göstərilə bilər:

I. Məlumatların əl ilə daxil edilməsi:

II. Döngü vasitəsilə məlumatların daxil edilməsi:

Gördüyünüz kimi, döngə ilə ikinci nümunə daha yığcamdır. Düşünürəm ki, bu forma üçün işləyici skriptini təqdim etməyə ehtiyac yoxdur, çünki o, mətn sahəsi ilə eyni şəkildə işlənir, yəni. siyahı dəyərləri superqlobal massivdən əldə edilə bilər $_POST.

Təsvir:

Faylı serverə göndərmək üçün HTML formasını yaradaq.




Bu html formasında element var gözdən keçirin, serverə yükləmək üçün faylı seçmək üçün dialoq pəncərəsini açır. Düyməni basdığınız zaman "Faylı köçürmək", fayl işləyici skriptinə ötürülür.

Sonra işləyici skripti yazmalısınız action.php. İşləyicini yazmadan əvvəl faylı hansı qovluğa köçürəcəyimizə qərar verməliyik:

if(isset($_FILES [ "mənim faylım" ])) // Əgər fayl varsa
{
$kataloq = "../şəkil/" ; // Kataloqumuz
əgər (is_dir($kataloq)) // Əgər belə bir kataloq varsa
{
$myfile = $_FILES [ "myfayl" ][ "tmp_name" ]; // Müvəqqəti fayl
$myfayl_name = $_FILES [ "mənim faylım" ][ "ad" ]; // Fayl adı
if(! surəti ($myfayl, $kataloq)) echo "Faylı kopyalama xətası". $myfayl_name // Əgər faylın surəti uğursuz olarsa
}
else mkdir ("../image/" ); // Əgər belə bir kataloq yoxdursa, onu yaradacağıq
}
?>

Şərh

İstifadəçilərin serverinizə hər hansı fayl yükləməsinə etibar edirsinizsə, son dərəcə diqqətli olmalısınız. Təcavüzkarlar “pis” kodu şəkilə və ya fayla yerləşdirib serverə göndərə bilərlər. Belə hallarda faylların yüklənməsinə ciddi nəzarət etməlisiniz.

Bu nümunə kataloq yaratmağı və faylı həmin qovluğa serverə köçürməyi nümayiş etdirir.

Mən də elementlə bir nümunə göstərmək istərdim onay qutusu. Bu element digər elementlərdən bir qədər fərqlənir ki, əgər elementlərdən biri deyilsə onay qutusu'a seçilmir, sonra superqlobal dəyişən $_POST boş dəyəri qaytaracaq:


Mavi
Qara


if (!empty($_POST [ "mycolor" ])) echo $_POST [ "mycolor" ]; // Ən azı 1 element seçilibsə
başqa əks-səda "Dəyər seçin";
?>




Başqa sualınız varsa və ya aydın olmayan bir şey varsa - bizim səhifəmizə xoş gəlmisiniz

Dünyanın bütün dillərində "keçid" sözü var
və yalnız rus dilində - "keçid"!
Mixail Zadornov

Bu gün biz belə bir sintaksis elementi haqqında danışacağıq PHP, açarlar kimi. Bunu HTML etiketi ilə qarışdırmaq olmaz , bu da açarları yaradır. Belə ki,

keçid bəyanatı

Tapşırıq: istifadəçinin seçdiyi seçimdən asılı olaraq tələb olunan seçimi göstərin. Koda baxaq:

Nümunə 1. Formalı HTML səhifəsi:

Sosial sorğu

Rus dilində qiymətinizi daxil edin:

Və burada işləyici kodu:

Nümunə 2. Forma işləyicisi (cup6.php faylı):

əgər (! $score ) (
echo();
) elseif ($score == 1 ) (
əks-səda ("Dəhşət!");
) elseif ($score == 2 ) (
echo ("Uğursuz -(" );
) elseif ($score == 3 ) (
əks-səda ("Ud...");
) elseif ($score == 4 ) (
echo("Yaxşı");
) elseif ($score == 5 ) (
echo("Əla!");
) başqa (
əks-səda ( "Maraqlı qiymətləndirmə...");
}
?>

Düşünürəm ki, hamınız kodu asanlıqla başa düşdünüz və onun necə işlədiyini başa düşdünüz. Ümumiyyətlə, bu kod düzgündür və onda heç bir səhv yoxdur (görünür...), lakin çox əlverişsizdir: bir çox şərtlər, hər şeyin harada olduğunu izləmək olduqca çətindir. Nə etməli? İndi keçid açarına ehtiyacımız olacaq.

Keçid belə görünür:

Nümunə 3. Keçid açarının görünüşü:

keçid (ifadə) (
hal dəyəri1:
// ifadə = dəyər1 olduqda yerinə yetirilən əmrlər
fasilə; // lazım deyil
hal dəyəri2:
// ifadə = dəyər2 olduqda yerinə yetirilən əmrlər
fasilə; // lazım deyil
...
defolt:
// tapılmadıqda yerinə yetirilən əmrlər
// uyğunluq yoxdur
fasilə; // lazım deyil
}

Bütün bu blok necə işləyir:

  1. İfadənin dəyəri hesablanır.
  2. İfadənin dəyəri 1 dəyəri ilə yoxlanılır. Əgər onlar bərabərdirsə, onda case value1 əmrindən sonra yerləşən kod yerinə yetirilir:
  3. Əgər ifadənin qiyməti 1 qiymətinə bərabər deyilsə, 2, 4 və s. qiymətlərlə yoxlanılır.
  4. Heç bir uyğunluq tapılmadıqda, standart blokdakı kod yerinə yetirilir.

Standart blok isteğe bağlıdır: onu buraxmaq olar.

Komanda fasiləsi (); hər kod blokundan sonra kod yerinə yetirildikdən sonra bütün sonrakı hallar sadəcə atlansın ki, lazımdır.

İndi daha rahat olmaq üçün ikinci nümunənin kodunu dəyişdirək! Məsələn, bu kimi:

Nümunə 4. Misal 2-dən dəyişdirilmiş kod (cup6.php faylı):

keçid ($score) (
hal 0:
əks-səda ( “Hələ bir reytinq daxil etməlisiniz...”);
fasilə;
hal 1:
əks-səda ("Dəhşət!");
fasilə; hal 2:
echo ("Uğursuz -(" );
fasilə;
hal 3:
əks-səda ("Ud...");
fasilə;
hal 4:
echo("Yaxşı");
fasilə;
hal 5:
echo("Əla!" );
fasilə;
defolt:
əks-səda (
"Maraqlı qiymətləndirmə...");
}
?>

Bunun kimi. Sadə və rahat. Bu işin nəticələri rəqəmlərdə təsvir edilmişdir:

Əvvəl sonra

Əlaqə

Kodu bir neçə hissəyə bölmək və lazımi yerlərdə göstərmək çox vaxt daha rahatdır. Bir faylın məzmununu digər fayla daxil etmək üçün iki əmrdən istifadə edə bilərik: require(); və daxildir();

tələb()

Komandanın görünüşü:

Misal 6. Require() əmrinin görünüşü:

tələb ("fayl adı");

Ssenariyə başlamazdan əvvəl PHP bütün tələb() əmrlərini tapır; Və onları (əmrləri) göstərilən faylın məzmunu ilə əvəz edir.

Dəyişdirmə skript işə başlamazdan əvvəl yalnız bir dəfə baş verir, ona görə də tələb() əmrini daxil edə bilməyəcəksiniz; döngənin gövdəsinə!

tələb() əmri ilə daxil etdiyiniz fayl; ehtiva edə bilər PHP-kod. Bu kod icra olunacaq.

daxil edin()

Komandanın görünüşü:

Misal 7. include() əmrinin görünüşü:

daxildir ("fayl adı");

daxil () əmri; göstərilən faylın məzmununu daxil edir və icra edir və bu, inlcude() əmri ilə hər dəfə qarşılaşdıqda skriptin icrası zamanı baş verir; .

Aşkar oxşarlığa baxmayaraq, tələb (); və daxildir(); ciddi şəkildə fərqlənir: tələb () əmri; skript icraya başlamazdan əvvəl bir dəfə yerinə yetirilir və inlcude(); hər dəfə kodda baş verir və siz asanlıqla inlcude(); dövrlərə.

Bu, həyatda necə kömək edə bilər: demək olar ki, hər bir saytda səhifənin sayt boyu dəyişməyən hissələri var - məsələn, saytın başlığı (başlığı) və saytın altbilgisi (aşağı). Onları hər səhifədə təkrar çap etməmək üçün onları iki ayrı fayla (məsələn, header.php və footer.php) yerləşdirməli və lazım olduqda daxil etməlisiniz.

Belə bir səhifənin kodu, məsələn, belə görünə bilər:

Nümunə 8. Xarici fayllardan səhifənin başlığı və alt hissəsinin birləşdirilməsi:

tələb ("header.php"); // burada cari səhifənin mətni var
tələb ("footer.php");
?>

Bu nümunədə require() funksiyasından istifadə etmək daha məqsədəuyğundur, çünki biz bu faylları yalnız bir dəfə daxil edirik.

require_once() və inlcude_once()

Müəyyən bir faylın koda yalnız bir dəfə daxil olduğundan əmin olmaq lazımdırsa, tələb (); və daxildir(); tələb_once(); istifadə etmək lazımdır; və tələb_bir dəfə();

Nümunələrə baxın:

Misal 9. include_once() funksiyasının ikiqat istifadəsi:

include_once("top.php" );
// burada bəzi kodlar include_once("top.php" );
?>

Əvvəlki nümunədə top.php faylı kodda iki əmr olmasına baxmayaraq, səhifə koduna yalnız bir dəfə daxil ediləcək.

Hamısı budur...

Deyəsən, bu gün sizə demək istədiyim tək şey budur. ilə hər hansı bir problem olacaq PHP- mənə yaz, kömək edəcəm!

Ev tapşırığı kimi: sadə kalkulyator hazırlayın. İpucu olaraq sizə bir şəkil təqdim edirik:

Və burada başqa bir şey var: ümumiyyətlə belə "ev tapşırığı" qoymağa dəyərmi?