1

我有这个类别列表

<?php
$var = explode('|', $_POST['categories']);
 ?>
  <div id="cardContainer">
<div class="wrapper">
    <div class="catList">
        <div class="categories">
            <h2>Categories</h2>
            <form method="post">
            <select id="categories" name="categories">
                <option value="">Choose a category</option>
                <option value="1|page1.html">Real Estate</option>
            <option value="2|page2.html">Commercial Auto</option>
                <option value="3|page3.html">Beauty/Salon</option>
                <option value="4">Health</option>
                <option value="5">Construction</option>
                <option value="6">Legal</option>
                <option value="7">Furniture</option>
                <option value="8">Food</option>
            </select><!-- end id="categories" -->
            </form>
        </div><!-- end class="categories" -->
    </div><!-- class="catList" -->
    <!-- START IMAGE LISTINGS -->
        <div class="imgList">
            <?php include($var); ?>
        </div>
    <!-- END IMAGE LISTINGS -->
</div><!-- end class="wrapper" -->
</div><!-- end id="cardContainer" -->

和一个<?php include(''); ?>在底部。如何将选择的选项的值插入到include('');php 中?我是 php 的新手,感谢您的帮助。

编辑:我想根据选择的类别打开页面,尝试使用该include();方法。如果这不是最好的方法,你能告诉我吗?提前致谢。

4

2 回答 2

3

你不能直接通过使用 php 来做到这一点

因为<option>要选择的语言位于客户端,而 php 是服务器端语言

您需要一种客户端脚本语言,例如 javascript 来处理此类事件(例如onselectonchange

你需要在 javascript 中使用 AJAX 来达到这个目的

于 2013-10-20T08:26:20.480 回答
1

不,你不能那样做。文本不会发送到服务器,<option>也无法单独使用 PHP 来检索它。您必须使用 AJAX 来获取文本并将其发送到您的 PHP 脚本。

但是,您可以通过稍微重构 HTML 标记来实现它:

<select id="categories">
    <option value="">Choose a category</option>
    <option value="1|Real Estate">Real Estate</option>
    <option value="2|Commercial Auto">Commercial Auto</option>
    ...
</select>

现在,您可以简单地使用explode()来获取文本,如下所示:

$var = explode('|', $_POST['categories']);
echo $var[1]; // echo the text

演示!


没有提交按钮可以完成吗?只是在选项更改时更改?

是的,但您需要为此使用 jQuery。以下答案应该会有所帮助:

这是使用上述答案中的代码的快速演示:Fiddle

于 2013-10-20T08:25:13.150 回答