Lấy dữ liệu từ mysql ra select trong php

mình đang lam trang quản trị phần quản lý loại sản phẩm. trong đó mình chỉ có 2 loại là 1-sản phẩm di động và 2-phụ kiện di động.
mình lấy giá trị của ô loại bằng cách kiểm ma_loai đang sửa vs ma_loai tren csdl rồi cho thuộc tính selected . nhưng khi chọn được cái selected rồi thì nó in hết ra các ma_loai theo số sản phẩm chứ không theo số loại.

<select name="loai">
						<?php
						while($rows = mysqli_fetch_array($run)){
							if($row["id_loai_sp"] == $rows["id_loai_sp"]){
							?>
                          <option selected="selected" value="<?php echo $rows["ma_loai"] ?>"><?php if($rows["ma_loai"] == 1) echo " Sản Phẩm Di Động" ; else echo "Phụ Kiện Di Động";?></option>
							<?php
							}
							else{
								?>
                            <option  value="<?php echo $row["ma_loai"] ?>"><?php if($rows["ma_loai"]==1) echo "Sản Phẩm Di Động"; else echo "Phụ Kiện Di Động";?></option>
								<?php
							}
						}
						?>
					</select>

ai biết chỉ cho mình cách mà trong cái mục select loại đấy sau khi xác định giá trị select rồi nó chỉ hiện thêm cái còn lại với ạ.

ai giúp mình với ạ :::::::::::::::

Chào bạn,

Tôi nghĩ rằng hiện giờ không ai có thể trả lời cho bạn vì câu hỏi của bạn không rõ ràng. Vấn đề bạn đưa ra rất tối nghĩa. Tôi nghĩ nó sẽ dễ hiểu hơn rất nhiều nếu bạn đưa ra vấn đề tương tự như ví dụ sau (nếu bạn học qua UML thì nó gọi là một use case):

“Giao diện cho ứng dụng có một ô chọn cho phép chọn lựa các sản phẩm di động hoặc các phụ kiện. Khi chọn một sản phẩm di động được chọn, thì có kết quả …”

Tôi đã cố đọc để hiểu bạn muốn nói gì nhưng không được. Ví dụ như bạn nói

Số sản phẩmsố loại trong câu hỏi của bạn là gì? Chỉ có bạn biết mà thôi, tôi không thấy định nghĩa của hai khái niệm này ở đâu cả.

Ngoài ra, bạn cũng mắc phải một số lỗi cơ bản:

  1. Trong điều kiện đầu tiên:
if($row["id_loai_sp"] == $rows["id_loai_sp"])

Điều kiện này luôn luôn đúng, thành ra phần else tiếp theo sẽ không bao giờ được thực hiện. Tôi không hiểu logic của bạn ở đây.

  1. Trong table loaisanpham, các row của bạn chứa các dữ liệu không liên quan đến nhau về mặt khái niệm. Cụ thể là có hai loại dữ liệu: Một là các thương hiệu (Apple, Samsung, Oppo, …) và hai là các sản phẩm (tai nghe, cáp sac, ốp lưng…). Bạn nên đưa các dữ liệu này vào các table khác nhau với quan hệ phù hợp. Ví dụ như sau nếu chỉ dùng quan hệ một-nhiều:
    Table 1: ThươngHiệu(id, tên_thương_hiệu)
    Table 2: SảnPhẩm(id, tên_sản_phẩm, thuong_hieu_id)
    Hoặc nếu chi tiết hơn, bạn có thể dùng quan hệ nhiều-nhiều với 3 table:
    Table 1: ThươngHiệu(id, tên_thương_hiệu)
    Table 2: SảnPhẩm(id, tên_sản_phẩm)
    Table 3: ThươngHiệu_SảnPhẩm(id, thương_hiệu_id, sản_phẩm_id)
    Làm như vậy, các query của bạn sẽ rõ ràng hơn và dễ xử lý hơn rất nhiều.

Bạn nên tìm hiểu kỹ vấn đề để đưa ra câu hỏi cho rõ ràng thì mọi người mới có thể giúp cho bạn được.

5 Likes

Mình đoán vấn đề của bạn nằm ở chỗ này.
Bạn cần 2 tables,

  • một là table “ma_loai” (ví dụ có 2 columns, là ID và Tên). Nếu mình hiểu đúng, thì table này của bạn là loaisanpham, với cột ID đặt tên là ma_loai
  • hai là table “san_pham”, trong table này có column “ma_loai” (hay tên gì khác cũng được). Nếu mình hiểu đúng, thì table này của bạn là chitietsanpham

Khi cần show “loại sản phẩm” (ở cột Sửa Loại sản phẩm như torng hình), bạn sẽ query từ table “ma_loai”, chứ không phải từ table “san_pham”.

Bạn sẽ cần tìm hiểu thêm về join tables khi query (như inner join, left join, etc)

4 Likes

mình hiểu vấn đề rồi, cảm ơn bạn

mình hiểu vấn đề rồi, cảm ơn bạn…

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?