⊗ppPmDOLVT 384 of 447 menu

Pautan melalui Jadual Pautan dalam PHP

Sekarang katakan pengguna pernah berada di bandar-bandar yang berbeza. Dalam kes ini, jadual pengguna mungkin kelihatan seperti berikut:

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

Jelas sekali, menyimpan data dengan cara ini adalah tidak betul - bandar-bandar perlu dipindahkan ke jadual berasingan. Inilah jadual tersebut:

cities
id name
1 city1
2 city2
3 city3

Walau bagaimanapun, kita perlu memastikan bahawa setiap pengguna boleh merujuk kepada beberapa bandar. Ini mustahil untuk dilakukan dengan hanya dua jadual.

Kita perlu memperkenalkan apa yang dipanggil jadual pautan, yang akan menghubungkan pengguna dengan bandar-bandarnya.

Setiap catatan dalam jadual ini akan menyimpan satu pautan antara seorang pengguna dan satu bandar. Pada masa yang sama, untuk satu pengguna, akan terdapat banyak catatan dalam jadual ini sebanyak bandar yang pernah dia kunjungi.

Inilah jadual pautan kami:

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

Jadual pengguna hanya akan menyimpan nama pengguna, tanpa pautan:

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

Pertanyaan

Mari buat pertanyaan yang akan mengambil pengguna bersama-sama dengan bandar mereka. Untuk ini, kita perlu membuat dua sambungan: sambungan pertama akan menyambung jadual pautan kepada pengguna, dan sambungan kedua melalui pautan akan menyambung bandar-bandar:

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

Keputusan Pertanyaan

Keputusan pertanyaan kami dalam PHP akan mengandungi nama setiap pengguna sebanyak kali yang dia dikaitkan dengan bandar:

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

Lebih mudah untuk menukar tatasusunan sedemikian dan mengubahnya menjadi yang berikut:

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

Mari tulis kod yang melakukan penukaran sedemikian:

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

Tugas Amali

Katakan produk boleh tergolong dalam beberapa kategori. Terangkan struktur penyimpanan.

Tulis pertanyaan yang akan mengambil produk bersama-sama dengan kategori mereka.

Paparkan data yang diperoleh dalam bentuk senarai ul supaya dalam setiap li pada awalnya terdapat nama produk, dan selepas titik bertindih, kategori produk tersebut disenaraikan dipisahkan dengan koma. Contohnya seperti ini:

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