首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用POST从HTML表单获取select选项值

使用POST从HTML表单获取select选项值
EN

Stack Overflow用户
提问于 2016-04-19 20:23:11
回答 2查看 1.3K关注 0票数 0

我有一张表格,在那里我可以得到一些不同的信息。但是,我有一个带有多个选项的Select,我希望能够在1或0/ true或false中将其发送到数据库。但这是行不通的。到目前为止,这是我的代码:

代码语言:javascript
复制
              <select name="multipleSelect[]" multiple>
                <option value="" disabled selected>Choose your option</option>
                <option name="esea" value="esea">ESEA</option>
                <option name="faceit" value="faceit">FaceIT</option>
                <option name="matchmaking" value="matchmaking">Matchmaking</option>
              </select>
              <label>What are you looking to play?</label>

这是我的php:

代码语言:javascript
复制
$esea = 0;
$faceit = 0;
$matchmaking = 0;
foreach ( $_POST['multipleSelect'] as $value ) {
    if ( $value == 'esea' )        { $esea = 1;       }
    if ( $value == 'faceit' )      { $faceit= 1;      }
    if ( $value == 'matchmaking' ) { $matchmaking= 1; }
}   


  // Sätt in dataN
  $sql = "INSERT INTO users ( steamid, profilename, profileurl, avatar, region, age, ranks, esea, faceit, matchmaking, textarea1 ) VALUES ( 
    '{$mysqli->real_escape_string($_POST['steamid'])}', 
    '{$mysqli->real_escape_string($_POST['profilename'])}',
    '{$mysqli->real_escape_string($_POST['profileurl'])}',
    '{$mysqli->real_escape_string($_POST['avatar'])}',
    '{$mysqli->real_escape_string($_POST['region'])}',
    '{$mysqli->real_escape_string($_POST['age'])}',
    '{$mysqli->real_escape_string($_POST['ranks'])}',
    $esea,
    $faceit,
    $matchmaking',
    '{$mysqli->real_escape_string($_POST['textarea1'])}')";
  $insert = $mysqli->query($sql);

我知道这个代码不起作用,但我不知道该怎么做才能使它工作。我不打算发送一个1或0取决于选择或不选择。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-19 20:36:28

多个可选择下拉列表的<select>需要是一个数组,由name="NameThatMakesSense[]"定义。

代码语言:javascript
复制
<select name="NameThatMakesSense[]" multiple>

然后,这将返回一个名为$_POST‘’NameThatMakesSense‘的字段,它本身是一个数组,包含一个或多个值,指示在下拉列表中选择了哪些项。来自value=""标记的<option>属性

然后,您需要对NameThatMakesSense数组进行预处理,以获取实际从多选择下拉列表中选择了哪些值。

代码语言:javascript
复制
$esea = 0;
$esea = 0;
$esea = 0;
foreach ( $_POST['NameThatMakesSense'] as $value ) {
    if ( $value == 'esea' )        { $esea = 1;       }
    if ( $value == 'faceit' )      { $faceit= 1;      }
    if ( $value == 'matchmaking' ) { $matchmaking= 1; }
}    

$sql = "INSERT INTO users 
             ( profilename, profileurl, avatar, region, 
               age, esea, faceit, matchmaking, textarea1 ) 
        VALUES ( 

'{$mysqli->real_escape_string($_POST['profilename'])}',
'{$mysqli->real_escape_string($_POST['profileurl'])}',
'{$mysqli->real_escape_string($_POST['avatar'])}',
'{$mysqli->real_escape_string($_POST['region'])}',
'{$mysqli->real_escape_string($_POST['age'])}',
'{$mysqli->real_escape_string($_POST['ranks'])}',
$esea,
$faceit,
$matchmaking,
'{$mysqli->real_escape_string($_POST['textarea1'])}')";
票数 1
EN

Stack Overflow用户

发布于 2016-04-19 20:29:02

您的select html标记需要一个name属性,这样表单onSubmit才能发送到“后端”。

就像这样:

代码语言:javascript
复制
<select name="enterNameThatMakesSense" multiple>  // <----- HERE
  <option value="" disabled selected>Choose your option</option>
  <option name="esea" value="1">ESEA</option>
  <option name="faceit" value="1">FaceIT</option>
  <option name="matchmaking" value="1">Matchmaking</option>
</select>
<label>What are you looking to play?</label>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36728701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档