【问题标题】:Transferring data from int to string将数据从 int 传输到 string
【发布时间】:2016-01-22 04:22:14
【问题描述】:

用户通过向下滚动菜单输入他们的信息,然后选择一个选项几次。当他们这样做时,它被保存为 INT 而不是 STRING。这是因为需要对信息进行一些计算。所以基本上它看起来像这样:

   <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>

将这些值相加得出总和。所以 blue(2) table(10) 的值为 12。

当我希望用户能够编辑这些数据时,我的问题就出现了。我想显示他们当前拥有的数据,但是它现在保存为 INT。我将如何根据数据库中的值以文本格式显示信息。 (即 38 的值会输出“Orange Toaster)?

*我在 PHP 中执行此操作,但我并不需要寻找代码,只是了解如何执行此操作。

【问题讨论】:

  • 你在使用数据库吗?
  • 您是通过表格提交的吗?还是在用户从下拉列表中选择时使用javascript?老实说,我认为您需要更好地解释您的问题。您要完成的工作有点令人困惑
  • 是的,这将通过一个表格。

标签: php database logic


【解决方案1】:

您可以使用以下表结构将选项保存在数据库中。

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'" ;

这将为您提供类别 option1 中的所有可用选项 对选项 2 执行相同操作,现在您的选择框将更改如下:

<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>

现在您必须将这些数据保存在数据库中,如下所示: 表名:users_selected_options

id user_id option1 option2 
1     1     3      7
.
.

id: Primary key of the table
user_id: Foreign key of the user table 
option1: Foreign key of the selection_options
option2: Foreign key of the selection_options

不,您想显示用户选择了哪些选项触发执行连接查询,您将获得结果。

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

以上查询将为您提供如下记录:

id  user_id     option1     option2     option_name     option_name     total   
1    1             3         4          Toaster          Orange         38

所以现在您可以轻松地迭代结果并向用户显示适当的输出。

这个解决方案对您来说可能会很长,但它会在您将来想要制作 应用程序动态。

  1. 现在您可以轻松地提供添加/编辑值的界面 和选项名称。

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

    3.现在您可以将多个数据保存在 同一个用户。

    4.将来如果您想为 选择然后您可以轻松地进行此更改,您只需要 不在整个代码中更新查​​询。

【讨论】:

  • 哇,答案真棒。我一定会尝试这样的事情。
【解决方案2】:

首先,您需要找到除以 10 的余数。

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

【讨论】:

  • 如果你使用的是非表解决方案,托马斯解决方案足够聪明
【解决方案3】:

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

id info
-- ----
0  Red Chair
2  Blue Chair
...

但我可能会更好地保存在 2 个表中,你为什么将它们总结为一个 int?

好的,既然你说不需要加起来,试试两张表:

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

id color
-- -----
2  Blue

对于非表格解决方案,您将上述值保存到数组中,例如

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

将某个 ID 值设为 0 不是一个好主意

【讨论】:

  • 这点很好,我想没有理由把它们加在一起。
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 2020-06-03
    • 2014-09-22
    相关资源
    最近更新 更多