来自包含空格的URL的$ _GET值

时间:2015-05-26 14:07:48

标签: php mysql

我有一个带有可点击行和一个文本框的表格,其值是点击该行的名称,很简单。这是我的代码示例。 表:

<table border="2">
        <tbody>
            <tr>
                <td>Categorie number</td>
                <td>Categorie name</td>
            </tr>
                <?php
                    $SQLCategorie = mysqli_query($db,'SELECT * FROM categorie ORDER BY Name_categorie');
                    while($row= mysqli_fetch_array($SQLCategorie))
                    {
                        echo '<td>' .$row[0]. '</td>';
                            echo "<td><a href='GererCategorie.php?Name_categorie=".$row[1]."' >".$row[1]."</a></td>";  
                        echo "</tr>";
                    }
                ?>  
        </tbody>
</table>

文本框:

<input type="text" name="Delete_Categorie" 
                    <?php 
                        if (isset($_GET['Name_categorie'])) 
                        {
                            echo "value=".$_GET['Name_categorie'];
                        }
                    ?>
>

一切正常,但我有一个奇怪的问题。例如,我的数据库中有INTERNET EXPLORER,我的网址看起来像?Name_categorie=INTERNET%20EXPLORER。文本框仅显示INTERNET,我无法回显INTERNET EXPLORER

我知道我的问题似乎很容易,但我不知道如何回应全名。我需要得到它,因为我有EXCEL 2003EXCEL 2010,但它只显示了EXCEL。对于EXCEL 2010我的网址EXCEL%202010

3 个答案:

答案 0 :(得分:4)

看看你正在生成的HTML,你的输出看起来像这样:

<input type="text" name="Delete_Categorie" value=INTERNET EXPLORER>

因此浏览器会将此值读为INTERNET,并且EXPLORER将被解释为属性名称。

您需要在文字周围添加引号。

echo "value=\"".$_GET['Name_categorie']."\"";

这将输出

<input type="text" name="Delete_Categorie" value="INTERNET EXPLORER">

答案 1 :(得分:0)

您需要urlencode()

echo "<td><a href='GererCategorie.php?Name_categorie=".urlencode($row[1])."' >".$row[1]."</a></td>";

然后urldecode()

echo "value=".urldecode($_GET['Name_categorie']);

答案 2 :(得分:0)

作为替代方案, 在href=""中使用_之前,您可以replace使用_的空格,然后在获得文本框的值后,您可以再次使用空格replace _。

示例:

echo "<td><a href='GererCategorie.php?Name_categorie=".str_replace(' ', '_',$row[1])."' >".$row[1]."</a></td>";

和你的价值:

echo "value=".str_replace('_', ' ',$_GET['Name_categorie']);