Я немного изменил код кнопки и принцип работы функции javascript getmovie
. Вместо того, чтобы жестко кодировать идентификатор в качестве параметра функции, вы можете обратиться к кнопке из функции javascript, используя this
, и получить идентификатор, который является value
для кнопки.
Я отметил ниже о необходимости использования подготовленного оператора, а также передал комментарий к этому эффекту, поэтому sql ниже "как было"
<?php
if ( isset( $_GET['movie'] ) ) {
/*
This really should be using a prepared statement!!!
*/
$id = filter_input( INPUT_GET, 'movie', FILTER_SANITIZE_STRING );
$get = $data->show("SELECT
`server_id`,
`server_name`,
`link`
FROM `servers`
WHERE `movie_id`='$id'
ORDER BY server_id DESC");
foreach( $get as $row ) {
$id=$row['server_id'];
$name=$row['server_name'];
$link=$row['link'];
?>
<!--
"echo" the ID in the value and modify function
call to accept `event` as the single argument.
There is no specific need for the ID as this
would be duplicated in the loop and we can refer
to button in Javascript using `this`
-->
<button type='button' value='<?php echo $id; ?>' class='btn btn-warning m-2 p-2 <?php if( $id==$serverii ) echo 'disabled'; ?>' onclick='getmovie( event );'>
<?php echo $name; ?>
</button>
<?php
}
}
?>
<script>
function getmovie( e ){
//perhaps not strictly required for a regular button...
e.preventDefault();
//disable the button.
e.target.disabled=true;
$.ajax({
url:'../../control/operation/view_movie.php',
method:'POST',
data:{ 'serverid':e.target.value },
success:function( data ){
$('#show').html( data );
},
error:function( err ){
alert( err )
}
});
}
</script>
Я собрал быструю демонстрацию
<?php
error_reporting( E_ALL );
ini_set( 'display_errors', 1 );
if( $_SERVER['REQUEST_METHOD']=='POST' ){
/* random nonsense as response... */
$_POST['date']=date(DATE_ATOM);
$_POST['ip']=$_SERVER['REMOTE_ADDR'];
exit(json_encode($_POST));
}
$rs=array(
array( 'server_id'=>'pdc', 'server_name'=>'corp-dc-01', 'link'=>'\\example.com\corp-dc-01' ),
array( 'server_id'=>'adfs', 'server_name'=>'corp-adfs-01', 'link'=>'\\example.com\corp-adfs-01' ),
array( 'server_id'=>'file', 'server_name'=>'corp-fs-01', 'link'=>'\\example.com\corp-fs-01' ),
array( 'server_id'=>'bdc', 'server_name'=>'corp-dc-02', 'link'=>'\\example.com\corp-dc-02' ),
array( 'server_id'=>'adfs-2', 'server_name'=>'corp-adfs-02', 'link'=>'\\example.com\corp-adfs-02' ),
array( 'server_id'=>'file-2', 'server_name'=>'corp-fs-02', 'link'=>'\\example.com\corp-fs-02' )
);
# to emulate a chosen server... selected at random
$serverii=$rs[mt_rand(0,count($rs)-1)]['server_id'];
?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title></title>
<script src='//code.jquery.com/jquery-latest.js'></script>
<script>
function getmovie( e ){
e.preventDefault();
e.target.disabled=true;
$.ajax({
url:location.href, //'../../control/operation/view_movie.php'
method:'POST',
data:{
'serverid':e.target.value,
'link':e.target.dataset.link,
name:e.target.innerText
},
success:function( data ){
$('#show').html( data );
},
error:function( err ){
alert( err )
}
});
}
</script>
<style>
button{padding:1rem;margin:1rem;}
.disabled{color:red;}
:disabled{background:red;color:white}
</style>
</head>
<body>
<form method='post'>
<div id='show'></div>
<?php
printf( '<h1>Active:%s</h1>',$serverii );
foreach( $rs as $svr ){
$id=$svr['server_id'];
$name=$svr['server_name'];
$link=$svr['link'];
$disabled=$id==$serverii ? 'disabled' : '';
printf(
'<button type="button" value="%s" data-link="%s" class="btn btn-warning m-2 p-2 %s" onclick="getmovie( event );">
%s
</button>',
$id,
$link,
$disabled,
$name
);
}
?>
</form>
</body>
</html>