⊗ppPmDOLVT 384 of 447 menu

Kuunganisha Kupitia Jedwali la Uhusiano katika PHP

Hebu sasa mtumiaji amekuwepo katika miji tofauti. Katika kesi hii, jedwali la watumiaji linaweza kuwa na muonekano ufuatao:

users
id name city
1 user1 city1, city2, city3
2 user2 city1, city2
3 user3 city2, city3
4 user4 city1

Ni wazi kuwa kuhifadhi data kwa njia hii sio sahihi - miji inahitaji kutolewa kwenye jedwali tofauti. Hapa iko:

cities
id name
1 city1
2 city2
3 city3

Hata hivyo, tunahitaji kufanya hivi ili kila mtumiaji aweze kurejelea miji kadhaa. Kwa kutumia jedwali mbili hii haiwezekani kufanyika.

Tutahitaji kuanzisha kinachojulikana kama jedwali la uhusiano, ambalo litaunganisha mtumiaji na miji yake.

Kwa kila kuingia kwenye jedwali hili, kutawekwa uhusiano kati ya mtumiaji na mji mmoja. Wakati huo huo, kwa mtumiaji mmoja katika jedwali hili kutakuwa na ingizo kadiri ya idadi ya miji aliyowahi kuwepo.

Hapa kuna jedwali letu la uhusiano:

users_cities
id user_id city_id
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 3 2
7 3 3
8 4 1

Jedwali la watumiaji litahifadhi majina tu ya watumiaji, bila miunganisho:

users
id name
1 user1
2 user2
3 user3
4 user4
5 user5

Maswali

Hebu tufanye swali, ambalo kwa kutumia litatoa watumiaji pamoja na miji yao. Kwa hili tutahitaji kufanya viunganisho viwili: kiunganisho cha kwanza kitaunganisha kwa watumiaji jedwali la uhusiano, na kiunganisho cha pili kupitia viunganisho kitaunganisha miji:

SELECT users.name as user_name, cities.name as city_name FROM users LEFT JOIN users_cities ON users_cities.user_id=users.id LEFT JOIN cities ON users_cities.city_id=cities.id

Matokeo ya swali

Matokeo ya swali letu katika PHP yatakuwa na jina la kila mtumiaji mara kadiri ya idadi ya miji anayounganishwa nayo:

<?php $arr = [ ['user_name' => 'user1', 'city_name' => 'city1'], ['user_name' => 'user1', 'city_name' => 'city2'], ['user_name' => 'user1', 'city_name' => 'city3'], ['user_name' => 'user2', 'city_name' => 'city1'], ['user_name' => 'user2', 'city_name' => 'city2'], ['user_name' => 'user3', 'city_name' => 'city2'], ['user_name' => 'user3', 'city_name' => 'city3'], ['user_name' => 'user4', 'city_name' => 'city1'], ]; ?>

Itakuwa rahisi zaidi kubadilisha safu kama hii na kuigeuza kuwa ifuatayo:

<?php $res = [ ['user1' => ['city1', 'city2', 'city3']], ['user2' => ['city1', 'city2']], ['user3' => ['city2', 'city3']], ['user4' => ['city1']], ]; ?>

Wacha tuandike msimbo, unaotekeleza ubadilishaji kama huo:

<?php $res = []; foreach ($data as $elem) { $res[$elem['user_name']][] = $elem['city_name']; } var_dump($res); ?>

Kazi za Vitendo

Hebu bidhaa iweze kuwa ya kategoria kadhaa. Eleza muundo wa uhifadhi.

Andika swali, ambalo litatoa bidhaa pamoja na kategoria zake.

Onyesha data zilizopatikana kwa mfumo wa orodha ul kiasi kwamba katika kila li mwanzo kuwe jina la bidhaa, na baada ya koloni kwa kutumia comma, kategoria za bidhaa hii ziorodheshwe. Kwa mfano kama hivi:

<ul> <li>product1: category1, category2, category3</li> <li>product2: category1, category3</li> <li>product3: category1</li> </ul>
Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa