Php 将数据从int传输到字符串

Php 将数据从int传输到字符串,php,database,logic,Php,Database,Logic,用户通过向下滚动菜单输入信息,并多次选择一个选项。当他们这样做时,它被保存为INT而不是字符串。这是因为一些计算需要在信息上运行。所以本质上看起来是这样的: <select name="option1"> <option value="0">Chair</option> <option value="10">Table</option> <option value="20"&g

用户通过向下滚动菜单输入信息,并多次选择一个选项。当他们这样做时,它被保存为INT而不是字符串。这是因为一些计算需要在信息上运行。所以本质上看起来是这样的:

   <select name="option1">
        <option value="0">Chair</option>
        <option value="10">Table</option>
        <option value="20">Counter</option>
        <option value="30">Toaster</option>
        <option value="40">Oven</option>
        <option value="50">Microwave</option>
    </select>
    <select name="option2">
        <option value="0">Red</option>
        <option value="2">Blue</option>
        <option value="4">Green</option>
        <option value="6">Yellow</option>
        <option value="8">Orange</option>

椅子
桌子
柜台
烤面包机
烤箱
微波炉
红色
蓝色
绿色
黄色的
橙色
这些值加在一起构成一个总和。因此,蓝色(2)表(10)的值为12

当我希望用户能够编辑这些数据时,我的问题就出现了。我想显示他们当前拥有的数据,但是现在它被保存为INT。我如何使其以文本格式显示,以基于数据库中的值。(即,值为38将输出“橙色烤面包机”


*我是用PHP做这件事的,但我不一定要寻找代码,只是想知道如何做。

你可以使用数学函数。
使用除法,您可以找到余数,这将是您的选项2,并使用减法(整数-余数)=您的选项1

开始。您将需要在除以10时找到余数

if($numberX%10 == 4) { echo "Green"; }

您需要一个表来保存所有选项,例如:

id info
-- ----
0  Red Chair
2  Blue Chair
...
但我最好保存在两个表中,为什么要将它们汇总为一个int

好吧,既然你说不需要把它们加起来,那就试试两个表:

id furniture
-- -------
10 ...

id color
-- -----
2  Blue
对于非表解决方案,将上述值保存到数组中,例如

$furniture = array(
    10 => '...',
    ...
);
$colors = array(
    2 => 'Blue',
    ...
);

将一些ID值设为0不是一个好主意。您可以使用以下表结构将选项保存在数据库中

Table Name: selection_options
id(pk) option_name option_value category
1      chair       0           option1    
2      Table       10          option1    
3      Toaster     30          option1    

.
.
6      red          0          option2   
7      Orange       8          option2   
.
.
so on 
要创建选择框选项1,请执行以下查询:

$option1Array = "SELECT * FROM selection_options WHERE category = 'option1'" ;
<select name="option1">
    <?php foreach($option1Array  as $option1) {?>
    <option value="<?php echo $option1['id']; ?>"><?php echo $option1['option_name']; ?></option>
    <?php }?>
</select>
<select name="option2">
    <?php foreach($option2Array  as $option2) { ?>
    <option value="<?php echo $option2['id']; ?>"><?php echo $option2['option_name']; ?></option>
    <?php } ?>
</select>
id  user_id     option1     option2     option_name     option_name     total   
1    1             3         4          Toaster          Orange         38
这将为您提供类别选项1中的所有可用选项 对选项2执行相同操作。现在,您的选择框将更改如下:

$option1Array = "SELECT * FROM selection_options WHERE category = 'option1'" ;
<select name="option1">
    <?php foreach($option1Array  as $option1) {?>
    <option value="<?php echo $option1['id']; ?>"><?php echo $option1['option_name']; ?></option>
    <?php }?>
</select>
<select name="option2">
    <?php foreach($option2Array  as $option2) { ?>
    <option value="<?php echo $option2['id']; ?>"><?php echo $option2['option_name']; ?></option>
    <?php } ?>
</select>
id  user_id     option1     option2     option_name     option_name     total   
1    1             3         4          Toaster          Orange         38
否如果您想显示用户选择的选项,启动执行联接查询,您将得到结果

SELECT uso . * , so.option_name, so1.option_name, (so.option_value + so1.option_value) AS total
FROM users_selected_options AS uso
JOIN selection_options AS so ON uso.option1 = so.id
JOIN selection_options AS so1 ON uso.option2 = so1.id
WHERE user_id =1
LIMIT 0 , 30
上述查询将为您提供以下记录:

$option1Array = "SELECT * FROM selection_options WHERE category = 'option1'" ;
<select name="option1">
    <?php foreach($option1Array  as $option1) {?>
    <option value="<?php echo $option1['id']; ?>"><?php echo $option1['option_name']; ?></option>
    <?php }?>
</select>
<select name="option2">
    <?php foreach($option2Array  as $option2) { ?>
    <option value="<?php echo $option2['id']; ?>"><?php echo $option2['option_name']; ?></option>
    <?php } ?>
</select>
id  user_id     option1     option2     option_name     option_name     total   
1    1             3         4          Toaster          Orange         38
因此,现在您可以轻松地迭代结果,并向用户显示适当的输出

这个解决方案对您来说可能很长,但它将有助于在将来您希望 应用程序动态为

  • 现在,您可以轻松提供添加/编辑值的界面 和选项名称

    2.如果选项名称和值正在更改 你不必担心,因为我们是直接通过 查询

    3.现在您可以根据 同一个用户

    4.将来如果您想为 选择,然后你可以很容易地做这个改变,你只需要 不在整个代码中更新查询


  • 您使用的是数据库吗?您是通过表单提交的吗?还是用户从下拉列表中选择使用javascript?老实说,我认为您需要更好地解释您的问题。您试图实现的目标有点混乱是的,这将是通过表单提交的。如果您使用的是非表解决方案,Thomas solution是聪明的虽然这是一个很好的观点,我想没有理由把它们加在一起。哇,真棒的答案。我一定会尝试这样的东西。