Как обрабатывать значения флажков в строке запроса?

У меня есть строка запроса, в которой есть куча значений полей формы. Одним из полей является флажок, и он создает дубликаты параметров, например:

?employee_selection_needs = кошка&employee_selection_needs = собака&employee_selection_needs = свинья

Мне нужно поместить все эти значения флажков в одну переменную для отправки в HubSpot API. Как я могу это сделать? Я попробовал это с foreach цикл, но это не похоже на работу.

$firstname = $_POST["firstname"];
$lastname = $_POST["lastname"];
$email = $_POST["email"];
$organization_name = $_POST["organization_name"];
$phone = $_POST["phone"];
$best_describes_org = $_POST["best_describes_org"];
$organizations_safety = $_POST["organizations_safety"];
$confident_interview_process = $_POST["confident_interview_process"];
$needs_around_leadership = $_POST["needs_around_leadership"];
$used_employee_assessments = $_POST["used_employee_assessments"];
$hire_annually = $_POST["hire_annually"];

foreach($_POST['employee_selection_needs'] as $needs) {
$employee_selection_needs .= $needs;
}//Need to populate these variable with values from the form.
$str_post = "firstname=" . urlencode($firstname)
. "&lastname=" . urlencode($lastname)
. "&email=" . urlencode($email)
. "&phone=" . urlencode($phonenumber)
. "&organization_name=" . urlencode($organization_name)
. "&best_describes_org=" . urlencode($best_describes_org)
. "&employee_selection_needs=" . urlencode($employee_selection_needs)
. "&organizations_safety=" . urlencode($organizations_safety)
. "&confident_interview_process=" . urlencode($confident_interview_process)
. "&needs_around_leadership=" . urlencode($needs_around_leadership)
. "&used_employee_assessments=" . urlencode($used_employee_assessments)
. "&hire_annually=" . urlencode($hire_annually)
. "&hs_context=" . urlencode($hs_context_json); //Leave this one be

0

Решение

Привет человек! Я постараюсь ответить Вам как можно проще


Использование? Employee_selection_needs = cat&employee_selection_needs = собака&employee_selection_needs = pig анализатор PHP учитывает только последний ключ: значение (pig), и для этого у вас нет массива для итерации

Необходимо разделить URL. Увидеть ниже

<?php

/** CODE */

/** Create an Array of Query Strings Values
*
* OUTPUT EXAMPLE
* array(
*     0 => 'employee_selection_needs=cat',
*     1 => 'employee_selection_needs=dog',
*     2 => 'employee_selection_needs=pig',
*     3 => 'other_key=other_value',
*     ...
* )
*/
$queryArray= explode('&', $_SERVER['QUERY_STRING']);

/** Init a variable for append Query Values */
$myOutputString = "";

/** Need for separate append values */
$myOutputToken = "|";

/** Append to $myOutputString the correct Query Value */
foreach($queryArray as $queryArrayElement) {
/** Create an Array starting from a Query String
*
* OUTPUT EXAMPLE
* array(
*     0 => 'employee_selection_needs',
*     1 => 'cat',
* )
*/
$tArray= explode('=', $queryArrayElement);

/** Filter only "employee_selection_needs" key and append Query Value
* to $myOutputString
*/
if(!empty($tArray[0]) && $tArray[0] == 'employee_selection_needs') {
if(!empty($tArray[1]))
$myOutputString .= $tArray[1].$myOutputToken;
}
}

/** Remove last Token */
if(!empty($myOutputString))
$myOutputString = substr($myOutputString, 0, -strlen($myOutputToken));

print_r($myOutputString); // Expected result cat|dog|pig

/** OTHER APPEND HERE */

?>

Вы должны использовать «employee_selection_needs []» вместо «employee_selection_needs» на флажок. Увидеть ниже

<form ...>
<input type="checkbox" value="dog" name="employee_selection_needs[]" />
<input type="checkbox" value="cat" name="employee_selection_needs[]" />
<input type="checkbox" value="fish" name="employee_selection_needs[]" />
...
</form>

При отправке у вас будет массив значений вместо одного значения

<?php

/** ... CODE ... */

/** Now is an array =)) */
$used_employee_assessments = $_POST["used_employee_assessments"];

/** ... CODE ... */

/** Convert to String, if You need */
$myOutputString = "";
foreach($used_employee_assessments as $assessment)
$myOutputString .= $assessment;

/** OR use implode ( string $glue , array $pieces )
* $myOutputString = implode(" %MY_TOKEN% ", $used_employee_assessments);
*/

/** OTHER APPEND HERE */

?>
0

Другие решения

Для того, чтобы передать несколько параметров с одинаковым именем, вы должны включить [] в конце названия. Так что ваш URL должен выглядеть так:

?employee_selection_needs [] = кошка&employee_selection_needs [] = собака&employee_selection_needs [] = свинья

Для этого ваш флажок должен иметь

name="employee_selection_needs[]"
0

По вопросам рекламы [email protected]