如何使用smarty从数据库动态设置选择的默认值?

时间:2016-06-02 00:50:28

标签: php html smarty

我有data$x[is.na(data$x) & data$condition.f == "test"] <- 0这样:

select

我知道如果您使用<select class="fruitsSelect" name="fruits"> <option value="Apples">Apples</option> <option value="Bananas">Bananas</option> <option value="Oranges">Oranges</option> </select> 属性,则可以设置默认值。

selected

但我想要做的是,从我从我的数据库中检索的值(我通过<select class="fruitsSelect" name="fruits"> <option value="Apples">Apples</option> <option value="Bananas" selected>Bananas</option> <option value="Oranges">Oranges</option> </select> 将其发送到HTML),我从我的数据库中检索的选项将是PHP选项(默认选项)。

我对HTML有价值,但我不知道如何让它成为所选的选项,因为它可以改变。我正在使用selected并尝试制作一些ifs语句,但我无法解决它。

如何将从数据库中检索的值与Smarty的值进行比较,并将其作为选定的选项?

提前致谢!

2 个答案:

答案 0 :(得分:2)

由于您特别询问了Smarty模板,这实际上非常简单。使用their example文件中的html_options模板,并将标识符传递给所选属性。

index.tpl的内容:

{html_options name=fruits options=$myOptions selected=$mySelect}

唯一真正混乱的部分是从数据库中填充数组。由于您没有指定该平台,我使用了MySQL。

首先,我设置一个简单的数据库表来为您的示例建模,并为选定状态设置布尔列。这可以根据您的喜好进行约束或设置,但是对于此示例 note 如果将multiple设置为true,则它将使用最后选择的一个。我使用ID作为奖励,因为它可能对非平凡场景更有用。如果您仍想使用与选项文字相同的值,则只需使用$row['id']

查找并替换$row['fruit']
DROP TABLE IF EXISTS fruits;

CREATE TABLE fruits (
  id INT PRIMARY KEY AUTO_INCREMENT,
  fruit VARCHAR(30),
  selected BOOLEAN
);

INSERT INTO fruits (fruit,selected)
VALUES
  ('Apples',FALSE),
  ('Bananas',TRUE),
  ('Oranges',FALSE);

现在使用php检索数据,创建智能对象,设置值,最后显示。

<?php
require_once(__DIR__.'/vendor/smarty/smarty/libs/Smarty.class.php');

$database_server = "localhost";
$database_username = "username";
$database_password = "p@55W0rd";
$database_name = "example_database";

// connect to database
$mysqli = new mysqli($database_server, $database_username, $database_password, $database_name);
if ($mysqli->connect_error)
  trigger_error('Connect Error: '.$mysqli->connect_error, E_USER_ERROR);

// get records
$sql = "SELECT id, fruit, selected FROM fruits";
$result = $mysqli->query($sql);
while ($row = $result->fetch_array(MYSQLI_ASSOC)){

  // set array index of fruit as id
  $fruits[$row['id']] = $row['fruit'];

  // get id of selected fruit
  if ($row['selected'] == true)
    $selected = $row['id'];

}


// create object
$smarty = new Smarty;

$smarty->assign('myOptions', $fruits);
$smarty->assign('mySelect', $selected);

// display it
$smarty->display('index.tpl');

这导致以下输出:

<select name="fruits">
<option value="1">Apples</option>
<option value="2" selected="selected">Bananas</option>
<option value="3">Oranges</option>
</select>

答案 1 :(得分:0)

假设Select是硬编码的,您可以使用:

Sub agregarproducto()

Range("A7:G7").Select
Range("G7").Activate
Selection.Copy

Dim p As Integer

p = 0
p = Range("A2:A50").Count
p = p + 1

Range(p, 1).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False

    Range("E2:E3").Select
    ActiveCell.FormulaR1C1 = "0"
    Range("L11").Select
    ActiveCell.FormulaR1C1 = "1"

End Sub

注意:我的Php有点生疏,所以原谅任何语法或愚蠢的错误。

如果选择列表是动态生成的,我建议查看评论中Fred-ii建议的内容。

相关问题