Используя базовый PHP для эмуляции поиска в базе данных и некоторый ванильный JavaScript, вы обычно делаете что-то вроде этого. Отправьте запрос Ajax в PHP-скрипт, который выполняет поиск в базе данных на основе значения / идентификатора, отправленного в запросе. Пусть PHP-скрипт отправит ответ, содержащий правильные данные, а затем использует обратный вызов ajax для заполнения полей формы.
<?php
/* To emulate a database lookup */
$dbtable=array(
1 => (object)array('service' => 'wifi', 'rate' => 1000, 'unit' => 'mbps'),
2 => (object)array('service' => 'fibre optic', 'rate' => 1500 , 'unit' => 'km')
);
if( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_POST['id'] ) ){
ob_clean();
$obj=array_key_exists( $_POST['id'], $dbtable ) ? $dbtable[ $_POST['id'] ] : false;
header('Content-Type: application/json');
exit( $obj ? json_encode( $obj ) : $obj );
}
?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>Set Form field values based upon selected option</title>
<script>
const ajax=function(url,params,callback){
let xhr=new XMLHttpRequest();
xhr.onload=function(){
if( this.status==200 && this.readyState==4 )callback.call( this, this.response )
};
xhr.open( 'POST', url, true );
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send( params );
};
document.addEventListener('DOMContentLoaded',()=>{
document.querySelector('select[id="service"]').addEventListener('change',function(e){
ajax( location.href, 'id='+this.value, function(r){
if( !r ){
alert( 'Bad foo!' );
return;
}
let json=JSON.parse( r );
Object.keys( json ).map( k=>{
let field=document.querySelector('input[name="'+k+'"]');
if( field )field.value=json[k]
})
});
});
});
</script>
</head>
<body>
<select class='form-control' id='service'>
<option selected disabled hidden>Please select service
<option value=1>Wifi
<option value=2>Fibre Optic
</select>
<table>
<tr class='main'>
<td></td>
<td>
<input type='text' name='service' class='form-control' placeholder='service' />
</td>
<td>
<input type='text' name='rate' class='form-control' placeholder='Rate / Price' />
</td>
<td>
<input type='text' name='unit' class='form-control' placeholder='Mbps/Km' />
</td>
</tr>
</table>
</body>
</html>