1

我在表单中有复选框,我正在发布到 php 表单处理器。我的表单处理器向 Web 服务发送一个获取请求。请求需要类似于此的每个复选框 ?services=Chin&services=Neck&services=Back&location=5

没有键值,但使用我的 php 代码,它在每次服务后输出一个 [] 。

//build query string
$fields = array('services' => $services,
            'location' => $location,
            'firstname' => $firstname,
            'lastname' => $lastname,
            'email' => $email,
            'emailconfirm' => $email,
            'phone' => $telephone,
            'comments' => $message);

$url = "fakewebaddress?" . http_build_query($fields, '', "&");

//send email if all is ok
if($formok){

    $curl_handle = curl_init($url);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
    $results = curl_exec($curl_handle);
    curl_close($curl_handle);

}

我的 html 框看起来像这样

<input type="checkbox" name="services[]" value="Leg" />
<input type="checkbox" name="services[]" value="Chest" />
<input type="checkbox" name="services[]" value="Neck" />
<input type="checkbox" name="services[]" value="Back" />

如何修复它以获得我需要的输出?

4

2 回答 2

0

服务是一个数组,这就是为什么你要[]追求每一个。如果不是,service则 GET 中的最后一个将替换所有其他的。

您想要这样做的方式将不起作用,因为每个services值都会覆盖前一个值。

为什么不在你的 web 服务中循环遍历所有检查值的 services 数组?

有关更多信息,请参阅http://www.kavoir.com/2009/01/php-checkbox-array-in-form-handling-multiple-checkbox-values-in-an-array.html

编辑

对于您想要的(不确定它将如何工作,但这是您想要的)。

$url = str_replace('services[]', 'services', $url);

也一样

//build query string
$fields = array('services' => $services,
            'location' => $location,
            'firstname' => $firstname,
            'lastname' => $lastname,
            'email' => $email,
            'emailconfirm' => $email,
            'phone' => $telephone,
            'comments' => $message);

$url = "fakewebaddress?" . http_build_query($fields, '', "&");
$url = str_replace('services[]', 'services', $url);
// or use this if the [] is encoded
$url = str_replace('services%5B%5D', 'services', $url);
于 2012-11-01T18:25:19.783 回答
0
$url = "fakewebaddress?" . http_build_query($fields, '', "&");

$url = str_replace(urlencode('services[]'), 'services', $url);
于 2012-11-02T16:04:26.680 回答