Hello I'm implementing a tool in Wordpress where the user can choose a source and a target language for a translation of a file. The source languages are insert into the options
tag when the page is loaded, and when the user choose a source language the system need to make a query on the database for get the target languages that are available for the selected language and need to be insert into another. When I make the ajax request, the server respond me with a 500 Internal Server Error. The query is correct and I don't understand why it happen.
PHP of the dropdown menu:
<?php
$languageMatrix = array();
$currentLanguage = "";
function show_languages_list(){
global $wpdb;
$table_name = "wp_languages_price";
$prepared_query = $wpdb->prepare("SELECT * FROM ".$table_name."");
$results = $wpdb->get_results($prepared_query );
echo '<label for="'.'source'.'">Select source language:</label><select name="'.'source'.'" id="'.'source'.'" onchange="showTargetLanguages(this.value)">';
echo '<option value="" disabled selected>Select language</option>';
$sourceLanguages = array();
foreach($results as $languageCouple){
//echo '<option>'.$languageCouple->languages_1.' - '.$languageCouple->languages_2.'</option>';
$languageRow = array($languageCouple->languages_1, $languageCouple->languages_2, $languageCouple->price);
array_push($languageMatrix, $languageRow);
//Create an array of unique languages
if(!in_array($languageCouple->languages_1, $sourceLanguages)){
array_push($sourceLanguages,$languageCouple->languages_1);
echo '<option value="'.$languageCouple->languages_1.'">'.$languageCouple->languages_1.'</option>';
}
}
echo '</select>';
echo '<label for="'.'target'.'">Select target language:</label><select name="'.'target'.'" id="'.'target'.'">';
echo '<option value="" disabled selected>Select language</option>';
echo '</select>';
}
show_languages_list();?>
Ajax call:
function showTargetLanguages(sourceLanguage){
if (sourceLanguage == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
//Target get_stylesheet_directory_uri()."/gettarget.php"
xmlhttp.open("GET",'/wp-content/themes/hello-theme-child-master/gettarget.php?q='+sourceLanguage,true);
xmlhttp.send();
}
}
PHP of the Ajax GET request:
<?php
$q = ($_GET['q']);
function get_target_languages(){
global $wpdb;
$table_name = "wp_languages_price";
$prepared_query = $wpdb->prepare("SELECT * FROM ".$table_name." WHERE language_2'=".$q."'");
$results = $wpdb->get_results($prepared_query );
}
get_target_languages();
?>
Am i doing something wrong? Thank you so much for the time!