PHP 从多个选定值生成表单操作 URL.(没有Javascript)


PHP Generate form action url from multiple selected values. (No Javascript)

>我正在尝试为汽车站点制作搜索表单,我需要使用所选值生成表单操作。 例如:

<form metho="" action="">
<select id="make" name="make" class="select">
<option value="honda">honda</option>
<option value="ford">ford</option>
</select>
<select id="model" name="model" class="select">
<option value="civic">civic</option>
<option value="fit">fit</option>
</select>
<select id="year" name="year" class="select">
<option value="2014">2014</option>
<option value="2013">2013</option>
</select>
<input type="submit" value="Submit">
</form>

因此,如果我选择本田,公民,2014 动作将更改为:action="mydomain.com/honda/civic/2014"

我已经找到了这个,但在 JavaScript 中,我不知道如何在 PHP 中制作它:

$("#gender, #age").on('change', function() {
    var gender = $("#gender").val(),
        age = $("#age").val(),
        site = "somepage.php#"+gender+"-"+age; //inconsistent use of -/_
        $("form").attr("action", site)};
    }); 
});

我是初学者,提前对不起。

正如上面的注释所说,你不能通过使用 PHP 来更改action=""。客户端脚本可以做到这一点,或者,您可以先提交表单。在同一页面上收集值/输入,然后在处理表单后使用 header() 函数:

<?php
// if its submitted
if(isset($_POST['make'], $_POST['model'], $_POST['year'])) {
    // gather all the values
    $make = urlencode($_POST['make']);
    $model = urlencode($_POST['model']);
    $year = $_POST['year'];
    // make a header redirect
    header("Location: http://www.exampledomain.com/$make/$model/$year");
    exit;
}
?>
<form method="POST" action=""> <!-- leave the action="" empty -->
    <select id="make" name="make" class="select">
        <option value="honda">honda</option>
        <option value="ford">ford</option>
    </select>
    <select id="model" name="model" class="select">
        <option value="civic">civic</option>
        <option value="fit">fit</option>
    </select>
    <select id="year" name="year" class="select">
        <option value="2014">2014</option>
        <option value="2013">2013</option>
    </select>
    <input type="submit" value="Submit">
</form>

你可以尝试一些东西,比如:

<?php
if ((isset($_POST['make'])) and (isset($_POST['model'])) and (isset($_POST['year']))) {
    $url = "mydomain.com/".$_POST['make']."/".$_POST['model']."/".$_POST['year']; //with http://
    header("Location: ".$url);
    die();
}
?>
<form method="POST" action="">
<select id="make" name="make" class="select">
<option value="honda">honda</option>
<option value="ford">ford</option>
</select>
<select id="model" name="model" class="select">
<option value="civic">civic</option>
<option value="fit">fit</option>
</select>
<select id="year" name="year" class="select">
<option value="2014">2014</option>
<option value="2013">2013</option>
</select>
<input type="submit" value="Submit">
</form>

但这不是最好的方法。