gpt4 book ai didi

PHP、MYSQL,根据 3 个下拉列表中的所有值为 true 选择结果

转载 作者:行者123 更新时间:2023-11-29 07:30:37 25 4
gpt4 key购买 nike

我有 2 个下拉列表和 1 个选择框,国家/地区(下拉列表)、地区(下拉列表)、性别(选择框 x 2)。

我的数据库看起来像这样(我已经减少了值的数量)

| id | england | usa | west | north | male | female | name | age |
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | John | 33 |
| 2 | 0 | 1 | 0 | 1 | 0 | 1 | John | 56 |

除了 ID 和附加值之外,我需要查询的每个值都是 1 或 0(true 或 false)

我需要的结果是,如果有人选择英格兰、西部、男性,它会带回这些值为 true 的每一行(它们是我需要显示的这些行的额外信息)

我只需要一些关于如何实现此目的的指示,我正在考虑使用查找表,但正在努力使用具有多个值的查找表,或者我是否只使用 php 并将每个值设置为其正确的行名称并执行像这样的查询

最佳答案

首先

我怀疑您正在混合数据库中的架构(列名称)和值。

你的 table 应该更像

|id | country |region | gender |
--------------------------------
| 1 | usa | north | male |
| 1 | england | south | female |

考虑一下您要建模的事物具有哪些属性。你的下拉菜单中已经有这个了。每个下拉列表都有该属性的可能值列表。

当您这样做时,您可能应该更进一步,将数据拆分到更多表中。

countries
|id | name | other | columns | about | countries | eg. iso_code|
------------------------------------------------------------------
| 1 | USA | .... | ..... | ..... | ...... | us |
| 2 | England| .... | ..... | ..... | ...... | uk |

regions
| id | name |
------------------
| 1 | north |
| 2 | south |
| 3 | east |
| 4 | west |
| 5 | south-west|
| .. | ....


users
|id | name | country_id |region_id | gender |
---------------------------------------------
| 1 | John | 1 | 1 | m |
| 2 | Mary | 2 | 4 | f |

然后,您必须想出将数据从旧系统转换到新系统的方法。

首先从原表中接管一些数据

 INSERT INTO new_users (id,name) SELECT id, name FROM old_users;

这将在新表中插入与原始表具有相同 ID 的名称。

为查找表创建数据(在本例中为国家和地区)

 INSERT INTO countries (name,iso_code) VALUES
('USA','us'),
('United Kingdom','uk'),
....

然后更新您的字段

 UPDATE new_users 
FROM new_users INNER JOIN old_users ON old_users.id = new_users.id
SET new_users.country_id = 1 WHERE old_users.usa =1;

UPDATE new_users
FROM new_users INNER JOIN old_users ON old_users.id = new_users.id
SET new_users.country_id = 2 WHERE old_users.england =1;
...
etc...

UPDATE new_users
FROM new_users INNER JOIN old_users ON old_users.id = new_users.id
SET new_users.region_id = 1 WHERE old_users.north =1;

UPDATE new_users
FROM new_users INNER JOIN old_users ON old_users.id = new_users.id
SET new_users.region_id = 2 WHERE old_users.west =1;
...

一旦你排序了......

您的下拉列表应该类似于..(您可以通过列出所有值及其名称,从查找表(例如国家)自动生成下拉列表)
当您向表格中添加新国家/地区时,从现在开始它们将自动显示在下拉列表中。

<?php  
....
while ($resultrow = $result->fetch_assoc()){ ?>
<option value="<?php echo $resultrow['id'] ?>">
<?php echo $resultrow['name']; ?></option>
}

您最终应该在 html 输出中得到类似以下内容的内容。

<select>
<option value="1">USA</option>
<option value="2">UK</option>
</select>

那么您的搜索查询应如下所示:

$sql ="SELECT * FROM table 
WHERE `country_id`= '$country_id'
AND `region_id`= '$region_id'
AND `gender`= '$gender'";

关于PHP、MYSQL,根据 3 个下拉列表中的所有值为 true 选择结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32761958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com