2017-10-18 5 views
0

J'ai une chaîne de requête qui contient un tas de valeurs de champs de formulaire. L'un des champs est une case à cocher et crée des paramètres en double, par exemple:Comment gérer les valeurs de case à cocher dans une chaîne de requête?

employee_selection_needs = chat & employee_selection_needs = chien & employee_selection_needs = porc

j'ai besoin de placer toutes ces cases à cocher values ​​en? une variable à soumettre à l'API HubSpot. Comment puis-je accomplir cela? Je l'ai essayé avec une boucle foreach mais cela ne semble pas fonctionner.

$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 

Répondre

0

Pour passer plusieurs paramètres avec le même nom que vous devez inclure [] à la fin du nom. Donc, votre URL devrait ressembler à ceci:

employee_selection_needs [] = chat & employee_selection_needs [] = chien & employee_selection_needs [] = porc

Pour ce faire, votre case à cocher doit avoir

name="employee_selection_needs[]" 
+0

Ouais .. c'est HubSpot et si je ne peux pas ajouter [] au nom :( – Dustin

0

Hei man! Je vais essayer de répondre à vous aussi facilement que possible


Méthode 1: De la chaîne de requête (Votre cas)

aide employee_selection_needs = chat & employee_selection_needs = chien & employee_selection_needs = cochon l'analyseur PHP ne considérer que la dernière clé: valeur (cochon) et pour cela vous n'avez pas un tableau à parcourir

Il est nécessaire de diviser l'URL. Voir ci-dessous

<?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 */ 

?> 

Méthode 2: A partir de formulaire HTML

Vous devez utiliser "employee_selection_needs []" au lieu de "employee_selection_needs" sur la case. Voir ci-dessous

<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> 

sur Soumettre Vous avez un tableau de valeurs au lieu unique valeur

<?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 */ 

?>