What i suggest you is add one column in the data1 table as Status. So that you can check you already visited that record or not. As per your condition when your condition satisfy then update the status as viewed and change the code as below and check.
int si = 0;
int ka = 0;
string data = "", pl = ""; string read = "";
string read1 = "";
DateTime read2;
string pla = "";
int online = 0;
DateTime now = DateTime.Now;
protected void Page_Load(object sender, EventArgs e)
{
fn();
control();
}
public void fn()
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection cnn = new SqlConnection(constr))
{
cnn.Open();
SqlCommand cmd = new SqlCommand("Select * from data where id = (SELECT MAX(id) FROM data)", cnn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
ka = Convert.ToInt32(dr["ka_no"]);
si = Convert.ToInt32(dr["si_no"]);
data = (dr["data"]).ToString();
pl = (dr["name"]).ToString();
}
dr.Close();
cmd.Dispose();
cnn.Close();
Label7.Text = ka.ToString();
Label9.Text = data.ToString();
Label4.Text = pl.ToString();
}
}
public void control()
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
SqlCommand cmd = new SqlCommand();
con.Open();
cmd.Connection = con;
cmd.CommandText = "Select MAX(id)id,pl,date,online,status from users WHERE pl = @pla AND (Status = '' OR Status IS NULL) GROUP BY pl,date,online,status";
cmd.Parameters.Add("@pla", SqlDbType.VarChar).Value = Label4.Text;
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
read = dr["id"].ToString();
read1 = dr["pl"].ToString();
read2 = Convert.ToDateTime(dr["date"]);
online = Convert.ToInt32(dr["online"]);
pla = read1;
int diff = (now - read2).Days;
if (pla != "" && diff <= 0 && online == 1)
{
UpdateStatus(read1);
string url = "Users.aspx";
string newWindow = "window.open('" + url + "','_blank','height=1000,width=800,status=yes,toolbar=no,menubar=no,location=no,scrollbar=yes,resizable=yes,titlebar=no');";
ScriptManager.RegisterStartupScript(this, typeof(string), "OpenWindow", newWindow, true);
}
}
con.Dispose();
con.Close();
}
}
private void UpdateStatus(string pl)
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
SqlCommand cmd = new SqlCommand();
con.Open();
cmd.Connection = con;
cmd.CommandText = "UPDATE users SET Status = 'viewed' WHERE pl = @pl";
cmd.Parameters.AddWithValue("@pl", pl);
cmd.ExecuteNonQuery();
con.Dispose();
con.Close();
}
}