I have a search bar in index.php
and when I type an ID, the SQL data is fetched from fetch.php
. The fetch.php contains “AddToZip” button for each row of SQL data. When I click on a selected button, the selected button is disabled (going properly till here). But when I clear the search bar to write a different ID or perhaps same ID, all the disabled buttons of “AddToZip” are reactivated/enabled. How do I keep them disabled when the user uses the search bar multiple times and they anyhow get enabled only when the user refreshes the page.
index.php
<php code>
<?php
session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>LiveData</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<br />
<h2 align="center">Live Data Search</h2><br />
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Search</span>
<input type="text" name="search_text" id="search_text" placeholder="Search by ID" class="form-control" />
</div>
</div>
<p>
<a href="logout.php" class="btn btn-danger">Sign Out of Your Account</a>
</p>
<br />
<div id="result"></div>
</div>
</html>
<script>
$(document).ready(function(){
$('#search_text').keyup(function(){
var txt = $(this).val();
if(txt != '')
{
$.ajax({
url:"fetch.php",
method: "post",
data: {search:txt},
dataType: "text",
success: function(data)
{
$('#result').html(data);
}
});
}
else
if(txt == '')
{
$.ajax({
url:"null.php",
method: "post",
data: {search:txt},
dataType: "text",
success: function(data)
{
$('#result').html(data);
}
});
}
});
});
</script>
<script>
var addToZip = function(id, btn) {
$.ajax({
url:"AddToZip.php?id=" + id,
success: function(data) {
btn.disabled = true;
}
});
};
</script>
fetch.php
<?php
if(mysqli_num_rows($result) > 0)
{
$output .= '<h4 align = "center">Search Result</h4>';
$output .= '<div class="table-responsive">
<table class = "table table bordered">
<tr>
<th>ID</th>
</tr>';
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td>'.$row["ID"].'</td>
<td><button type="button" class="btn btn-primary" onclick="addToZip(''.$row["ID"].'', this)"><i class="fa fa-pdf" aria-hidden="true"> </i>Add to Zip</button></td>
</tr>
';
}
echo $output;
}
?>
Advertisement
Answer
Can you add the code of AddToZip.php ?
You could store all ids into a session value, and check if the id is containt inside this array on your fetch.php.
AddToZip.php :
session_start();
if (!isset($_SESSION['added_to_zip_ids']))
$_SESSION['added_to_zip_ids'] = [];
if (array_search($_GET['id'], $_SESSION['added_to_zip_ids']) === false)
$_SESSION['added_to_zip_ids'][] = $_GET['id'];
fetch.php :
<?php
session_start();
if (!isset($_SESSION['added_to_zip_ids']))
$_SESSION['added_to_zip_ids'] = [];
if(mysqli_num_rows($result) > 0)
{
$output .= '<h4 align = "center">Search Result</h4>';
$output .= '<div class="table-responsive">
<table class = "table table bordered">
<tr>
<th>ID</th>
</tr>';
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td>'.$row["ID"].'</td>
<td><button '.(array_search($row["ID"], $_SESSION['added_to_zip_ids']) === false ? '' : 'disabled').' type="button" class="btn btn-primary" onclick="addToZip(''.$row["ID"].'', this)"><i class="fa fa-pdf" aria-hidden="true"> </i>Add to Zip</button></td>
</tr>
';
}
echo $output;
}
?>
And to clear the stored values, you have two solutions :
Keep other session datas
session_start();
if (isset($_SESSION[‘added_to_zip_ids’]))
unset($_SESSION[‘added_to_zip_ids’]);Clear everything
session_start();
session_unset();
These line can be anywhere on the server.