⊗ppPmDOLVT 384 of 447 menu

Меҳварии пайвандкунӣ тавассути ҷадвали пайванд дар PHP

Ҳоло бигзор корбар дар шаҳрҳои гуногун буда бошад. Дар ин ҳолат ҷадвали корбарон метавонад соҳиби намуди зерин бошад:

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

Равшан аст, ки нигоҳ доштани маълумот ба ин тариҳ дуруст нест - шаҳрҳо бояд ба ҷадвали ҷудогона бароварда шаванд. Ин аст он:

cities
id name
1 city1
2 city2
3 city3

Аммо, ба мо лозим аст, ки ҳар як корбар метавонад ба якчанд шаҳр дастрасӣ дошта бошад. Бо ёрии ду ҷадвал ин амал кардан имконнопазир аст.

Ба мо лозим меояд, ки чизе ба номи ҷадвали пайванд ворид кунем, ки корбарро бо шаҳрҳои он пайванд хоҳад кард.

Дар ҳар як сабти ин ҷадвал пайванди байни корбар ва як шаҳр нигоҳ дошта мешавад. Дар ин ҳолат барои як корбар дар ин ҷадвал он қадар сабт хоҳад буд, ки ӯ дар чанд шаҳр будааст.

Ин аст ҷадвали пайванди мо:

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

Ҷадвали корбарон танҳо номҳои корбаронро нигоҳ медоранд, бе пайвандҳо:

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

Дархостҳо

Биёед дархостеро созем, ки бо ёрии он корбаронро бо шаҳрҳои онҳо бароварем. Барои ин ба мо ду join лозим хоҳад буд: якум join ҷадвали пайвандро ба корбарон мепайвандад, ва дуюм join ба воситаи пайвандҳо шаҳрҳоро мепайвандад:

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

Натиҷаи дархост

Натиҷаи дархости мо дар PHP дорои номи ҳар як корбар он қадар маротиба хоҳад буд, ки ӯ ба чанд шаҳр пайванд доштааст:

<?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'], ]; ?>

Маъкултар мебуд, ки чунин массивро табдил додан ва онро ба намуди зерин табдил додан:

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

Биёед рамзеро нависем, ки чунин табдилдиҳиро иҷро мекунад:

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

Масъалаҳои амалӣ

Бигзор маҳсул метавонад ба якчанд категорияҳо тааллуқ дошта бошад. Сохти нигоҳдорӣ ро бинависед.

Дархостеро нависед, ки маҳсулотро бо категорияҳои онҳо бармеоварад.

Додаҳои гирифташударо ба сурати рӯйхати ul чоп кунед, то дар ҳар як li аввал номи маҳсул истода бошад, ва баъд аз дунукта тавассути вергул категорияҳои ин маҳсул сабт шаванд. Тақрибан ин тавр:

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