Сообщение от middlee
|
в ООП не силен
|
А он в данном случае нужен? Зачем писать класс, публичная функция которой не принимает параметров, обрабатывая конкретный один - значение $_POST['country'], а хотите еще и тертий, и...? Каким же образом $_POST догадается сам подставить нужный ключ?
Более того, у вас mysqli, но вы не только не используете его подготовленные запросы, но и сами не беспокоитесь о безопасности, подставляя в запрос как есть - $_POST['country'].
В данном классе совсем и не нужен запрос к таблице countries, так как список этих значений уже должен быть у клиента.
Не понимаете ООП, напишите проще, свой легкий скрипт, который будет обрабатывать запросы, при этом, если сервер отдает готовый html-списков, то Smarty не нужен, куда проще сразу:
if ($res->num_rows) {
$s = '<select name="'.$key.'">';
while($row = $mysqli->assoc($res)) $s .= '<option value="'.$row['field_name'].'">'.htmlspecialchars($row['field_name']).'</option>';
echo $s .= '</select>';
}
Если же все таки Smart, то
if ($res->num_rows) {
$row = [];
while($row[] = $mysqli->assoc($res));
$smarty->assign("row_region", $row);
}
Но ответ сервера на Ajax запрос, а значит не $smarty->assign(), а перехват в переменную, которую затем возвращать клиенту.
Не $row_region, а $row и $res, а не $res_region потому, что функция должна получать параметр: ключ => значение, где ключ определяет список на клиенте породивший запрос, а значит и таблицу, к которой нужно обратиться. В противном случае придется на каждый список писать отдельные функции. А что на сервере, что на клиенте должен быть один метод обработки запросов.
Как поступать на клиенте при возврате очередного списка от сервера, во многом будет зависеть от html представления этих списков, их окружения.
Разберетесь с работой на базе простого скрипта, а далее дай бог может и сообразите как это должно существовать как класс.