Ich versuche, eine Seite zu erstellen, die Preise abhängig von Land berechnet. Ich habe zwei Preisstufen und möchte die Preise in zwei separaten Eingabefeldern aktualisieren, wenn das Land ausgewählt wird. Ich könnte dies tun, indem ich die JQuery- und Business_plan_calculation-Funktion zweimal wiederhole, aber wollte wissen, ob es eine Möglichkeit gibt, dies mit einer Funktion zu tun?Füllen Sie mehrere Eingabefelder von einer PHP-Funktion
Hier ist der Code, den ich es mit zwei Funktionen
function country_selector() {
global $wpdb;
$results = $wpdb->get_results("SELECT country FROM master_country ORDER BY country ASC");
foreach ($results as $rows) :
$option .= '<option value="'.$rows->country.'">';
$option .= $rows->country;
$option .= '</option>';
endforeach;
?>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('#country_selector').change(function() {
var countryPOP = jQuery('#country_selector').val();
jQuery.ajax({
url: "<?php bloginfo('wpurl'); ?>/wp-admin/admin-ajax.php",
type: 'POST',
data: 'action=business_plan_calculation&countryID=' + countryPOP,
success: function(results) {
jQuery('#business_plus_price').empty();
jQuery('#business_plus_price').val(results);
}
});
jQuery.ajax({
url: "<?php bloginfo('wpurl'); ?>/wp-admin/admin-ajax.php",
type: 'POST',
data: 'action=enterprise_calculation&countryID=' + countryPOP,
success: function(results) {
jQuery('#enterprise_price').empty();
jQuery('#enterprise_price').val(results);
}
});
});
});
</script> <?php
return '<select id="country_selector"><option value="0" disabled selected>Select Your Country</option>'.$option.'</select>';
}
add_shortcode('country-selector', 'country_selector');
function business_plan_calculation() {
if(isset($_POST['countryID'])) :
$parentCat=$_POST['countryID'];
global $wpdb;
$results = $wpdb->get_row("SELECT currency_alpha, ppp_conversion FROM master_country WHERE country='$parentCat'");
$endpoint = 'convert';
$access_key = '3a8c6c408b87705bde661d3d17b938ed';
$user_currency = $results->currency_alpha;
$chGBPUSD = curl_init('https://apilayer.net/api/'.$endpoint.'?access_key='.$access_key.'&from=GBP&to=USD&amount=1');
$chUSERGBP = curl_init('https://apilayer.net/api/'.$endpoint.'?access_key='.$access_key.'&from='.$user_currency.'&to=GBP&amount=1');
curl_setopt($chGBPUSD, CURLOPT_RETURNTRANSFER, true);
curl_setopt($chUSERGBP, CURLOPT_RETURNTRANSFER, true);
$mh = curl_multi_init();
curl_multi_add_handle($mh, $chGBPUSD);
curl_multi_add_handle($mh, $chUSERGBP);
$active = null;
do {
curl_multi_exec($mh, $active);
} while ($active);
$GBPUSD = curl_multi_getcontent($chGBPUSD);
$USERGBP = curl_multi_getcontent($chUSERGBP);
curl_multi_close($mh);
$conversionResultGBPUSD = json_decode($GBPUSD, true);
$conversionResultUSERGBP = json_decode($USERGBP, true);
$GBPUSDresults = $conversionResultGBPUSD['result'];
$USERGBPresults = $conversionResultUSERGBP['result'];
$ppp = $results->ppp_conversion;
$business_plus = (65 * $GBPUSDresults * $ppp * $USERGBPresults);
echo '£'.number_format((float)$business_plus, 2, '.', '').' per year';
die();
endif;
}
add_action('wp_ajax_nopriv_business_plan_calculation', business_plan_calculation);
add_action('wp_ajax_business_plan_calculation', business_plan_calculation);
function enterprise_calculation() {
if(isset($_POST['countryID'])) :
$parentCat=$_POST['countryID'];
global $wpdb;
$results = $wpdb->get_row("SELECT currency_alpha, ppp_conversion FROM master_country WHERE country='$parentCat'");
$endpoint = 'convert';
$access_key = '3a8c6c408b87705bde661d3d17b938ed';
$user_currency = $results->currency_alpha;
$chGBPUSD = curl_init('https://apilayer.net/api/'.$endpoint.'?access_key='.$access_key.'&from=GBP&to=USD&amount=1');
$chUSERGBP = curl_init('https://apilayer.net/api/'.$endpoint.'?access_key='.$access_key.'&from='.$user_currency.'&to=GBP&amount=1');
curl_setopt($chGBPUSD, CURLOPT_RETURNTRANSFER, true);
curl_setopt($chUSERGBP, CURLOPT_RETURNTRANSFER, true);
$mh = curl_multi_init();
curl_multi_add_handle($mh, $chGBPUSD);
curl_multi_add_handle($mh, $chUSERGBP);
$active = null;
do {
curl_multi_exec($mh, $active);
} while ($active);
$GBPUSD = curl_multi_getcontent($chGBPUSD);
$USERGBP = curl_multi_getcontent($chUSERGBP);
curl_multi_close($mh);
$conversionResultGBPUSD = json_decode($GBPUSD, true);
$conversionResultUSERGBP = json_decode($USERGBP, true);
$GBPUSDresults = $conversionResultGBPUSD['result'];
$USERGBPresults = $conversionResultUSERGBP['result'];
$ppp = $results->ppp_conversion;
$enterprise = (120 * $GBPUSDresults * $ppp * $USERGBPresults);
echo '£'.number_format((float)$enterprise, 2, '.', '').' per year';
die();
endif;
}
add_action('wp_ajax_nopriv_enterprise_calculation', enterprise_calculation);
add_action('wp_ajax_enterprise_calculation', enterprise_calculation);
Vielen Dank für Ihre Antwort. Ich habe versucht, dies zu implementieren, aber ich kann es nicht zum Laufen bringen. Ich bin sehr neu in der Codierung, was wahrscheinlich der Grund ist. Du sagst, mein ursprünglicher Code hatte Tippfehler und andere Probleme. Kannst du mir bitte ein Beispiel geben, damit ich versuchen kann, diese zuerst zu beheben? Mein ursprünglicher Code hat funktioniert, daher bin ich nicht wirklich sicher, wo ich die Fehler finden könnte. Danke – Dudley
Zum Beispiel konnte diese Zeile nicht funktionieren: 'add_action ('wp_ajax_nopriv_enterprise_calculation', enterprise_calculation);' - Das zweite Argument muss eine Zeichenfolge oder ein Array sein. –
Danke dafür habe ich jetzt funktioniert – Dudley