2017-07-18 2 views
0

J'ai besoin d'analyser en paramètre le $_POST['Country'] à l'intérieur de la fonction la fonction mailer php. Je prends la valeur de ce bien avec javascript:PHP Mailer: Comment analyser en tant que paramètres la valeur d'une option de sélection

var country = $("#country").val(); 

Comment puis-je analyser le paramètre de ce dans le script php et le corps pour voir sélectionner les options? Je dois mettre quelque part dans php Cette valeur, jusqu'à présent, je reçois 500 erreur interne.

Html des entrées:

<select name="countryName" id="country" name="country"> 
     <option value="cy">Κύπρος</option> 
     <option value="gr">Ελλάδα</option> 
     <option value="other">άλλη</option> 
    </select> 

puis avec ajax je fais:

$.ajax({ 
      type: 'POST', 
      url: '../../sendemail.php', 
      data: { 
       Name: name, 
       Email: email, 
       message: Message, 
       Country : country, 

      }, 

Voici le code php:

if(empty($_POST['Email'])){ 
     $_POST['Email']= ""; 
    } 
    if(empty($_POST['Name'])){ 
     $_POST['Name']= ""; 
    } 
    if(empty($_POST['Subject'])){ 
     $_POST['Subject']= ""; 
    } 
    if(empty($_POST['message'])){ 
     $_POST['message']= ""; 
    } 



if (isset($_POST["message"]) && !empty($_POST["message"])) { 

$mymail=smtpmailer("[email protected]",$_POST['Email'], $_POST ['Name'], 
$_POST['Subject'], $_POST['message']);  


}else{ 
    header('Location: http://google.com'); exit(); 

} 



function smtpmailer($to, $from, $from_name, $subject, $body) { 

Répondre

0

Si je vous ai bien compris, vous ne peut pas analyser les options d'entrée 'select' puisque seule la valeur de l'option choisie est envoyée via le formulaire. Le $_POST['Country'] var aura la valeur de l'option choisie de l'entrée select.

MISE À JOUR:

PHP SIDE:

<?php 
    $options = json_decode($_POST["country"]); 
?> 

function sendAjax(){ 
 

 
     // Get the options of select input 
 
     var selectOptions = document.getElementById("country"); 
 
\t var countries = []; 
 
\t for (i = 0; i < selectOptions.length; i++) { 
 
\t \t countries.push(selectOptions.options[i].value); 
 
\t } 
 
    // Parse the array with all the options into JSON 
 
\t var parsedOptions = JSON.stringify(countries); 
 

 
    // Send the AJAX request 
 
\t $.ajax({ 
 
\t \t type: 'POST', 
 
\t \t url: '../../sendemail.php', 
 
\t \t data: { 
 
\t \t Country : parsedOptions, 
 
\t } 
 
\t }); 
 
    } 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select name="country" id="country"> 
 
    \t <option value="USA">USA</option> 
 
    \t <option value="Brazil">Brazil</option> 
 
    \t <option value="Israel">Israel</option> 
 
</select> 
 

 
<button onClick="sendAjax()">Send</button>

+0

oui dans le code html, il dispose de 2 options. Je dois les prendre et les imprimer dans mon corps pour recevoir dans l'email les options –

+0

Ensuite, je recommanderai d'utiliser JS pour obtenir toutes les valeurs de l'entrée 'select' et de les stocker ensuite dans un tableau. Puis analyser le tableau en JSON et le passer à travers AJAX en tant que texte JSON, puis décoder le JSON dans le code php. –

+0

Y a-t-il un moyen plus facile? C'est juste 3 options. J'ai mis à jour ma question –