【问题标题】:Dropdown function is losing words after space in submitted output下拉功能在提交输出中的空格后丢失单词
【发布时间】:2016-08-16 16:45:40
【问题描述】:

我正在尝试在 PHP 中创建我的第一个函数,这是一个下拉菜单。它几乎可以工作了,但是当我提交/发布数据时,其中带有空格的选项只会显示输出中的第一个单词。

在示例中,我将“名字”作为下拉列表中的一个选项。当我点击提交时,输出只会是“第一”。当我将“名字”更改为“名字”时,它可以工作,输出为“名字”。所以我想我需要在代码中的某处添加引号,以便将其作为字符串处理??

希望有人可以帮助我,我离我想要的很近。

<!DOCTYPE HTML>
<html>
<body>

<?php

include('db_functions.php');

function clean_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
} 

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   $fName = clean_input($_POST['first_name']);
}

//drop down function
function dropdown($name, $options) {
    $dropdown = '<select type="text" name='.$name.'>'."\n";
    $rows = $options;
    if($rows === false) {
        $error = db_error();
    }
    $totalrows = count($rows);
    for ($x = 0; $x < $totalrows; $x++) {
        $dropdown .= '<option value=' . $rows[$x][$name] . '>' . $rows[$x][$name] . '</option>'."\n";
    }
    $dropdown .='</select>'."\n";
    return $dropdown;
}



echo '<form action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '" method="post">';

//start dropdown
echo 'First Name:';
$name = 'first_name';
$options = db_select("SELECT DISTINCT first_name FROM nametable GROUP BY first_name ORDER BY first_name ASC LIMIT 20");
echo dropdown($name, $options);

//end dropdown

echo '<input type="submit" name="submit" value="Submit">';
echo '</form>';

echo $fName;

?>

</body>
</html>

【问题讨论】:

  • 可以添加clean_input函数的代码吗?
  • 谢谢。我在代码中添加了 clean_input 函数。

标签: php forms function select post


【解决方案1】:

你的代码正在编写

<option value=First Name>

空格结束值,所以Name是一个单独的属性。您需要将值放在引号中,所以它是

<option value="First Name">

代码应该是:

    $dropdown .= '<option value="' . $rows[$x][$name] . '">' . $rows[$x][$name] . '</option>'."\n";

【讨论】:

  • 这就是问题所在。现在看起来很明显!非常感谢!
猜你喜欢
  • 2019-10-19
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 2017-08-27
  • 2021-01-22
相关资源
最近更新 更多