【问题标题】:$_POST[string] containing spaces$_POST[string] 包含空格
【发布时间】:2014-05-02 15:02:28
【问题描述】:

在我的网页上,我希望能够从下拉菜单中选择一个选项。为此,我从 MySQL 表中选择数据,如下所示:

$quantity_query = "SELECT * FROM input_quantity"; 
$quantity_result = mysqli_query($connection, $quantity_query); 
while ($row = mysqli_fetch_array($quantity_result)) {
    $option_quantity .= "<option value = $quantity_name> $quantity_name </option>";
}

然后我像这样创建实际的下拉列表:

<select id = "new_quantity" name = "new_quantity" style = "width: 100%">
    <?php echo $option_quantity; ?>
</select>

然后我想将$_POST['new_quantity'] 打印到屏幕上,效果很好。但是,我使用的一些数据包含空格,例如100 ml。在这种情况下,只打印100

我也试过了

$option_quantity .= "<option value = '".$row['quantity']."'>".$row['quantity']."</option>";

但这没什么区别。

我该如何解决这个问题?

【问题讨论】:

    标签: php html mysql string select


    【解决方案1】:

    更新这个:

    while ($row = mysqli_fetch_array($quantity_result)) {
        $option_quantity .= "<option value = $quantity_name> $quantity_name </option>";
    }
    

    到:

    while ($row = mysqli_fetch_array($quantity_result)) {
        $option_quantity .= "<option value='$quantity_name'> $quantity_name </option>";
    }
    

    说明:当您将值分配给您的选项时,如果您没有引号(单引号/双引号),则该值在空格的第一个实例处被修剪。


    示例:test.php

    <?php
    
    // Handle Post
    if (count($_POST))
    {
        var_dump($_POST);
    }
    
    // Dummy Options
    $option_quantity = '';
    for ($i = 1; $i < 5; $i++) {
        $option_quantity .= "<option value='value$i'>Value $i</option>";
    }
    
    ?>
    <form action="test.php" method="post">
    <select name="mySelect">
        <?php echo $option_quantity; ?>
    </select>
    <input type="submit" value="Submit">
    </form>
    

    示例输出:

    【讨论】:

    • 添加引号有效!这么简单,我怎么没想到……总之,非常感谢!
    【解决方案2】:

    您没有在循环中创建有效的 HTML,我更喜欢在 HTML 属性中使用正确的 "'

    $option_quantity = null;
    while ($row = mysqli_fetch_array($quantity_result)) {
        $option_quantity .= '<option value="'.$quantity_name.'"> '.$quantity_name.' </option>';
    }
    

    另外不要忘记在连接之前创建$option_quantity,否则如果你有错误报告,你会得到一个未定义的警告。

    【讨论】:

      【解决方案3】:

      如果要删除所有空格:

      $str = str_replace(' ', '', $row['quantity']);
      

      然后使用变量在需要的地方回显。

      编辑:

      基本上它应该看起来像这样某种东西

      $str = str_replace(' ', '', $row['quantity']); echo '<select id = "new_quantity" name = "new_quantity" style = "width: 100%">'; echo '<option value="' . $str . '">' . $str . '</option></select>';

      【讨论】:

      • 是的,这正是 OP 所要求的
      • 不,我不想删除空格。我想保持原样
      猜你喜欢
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多