0

can someone help me how to get rid the counts or number on notification after I read or open it... I hope you understand, sorry if its vague and to my bad English tho. Just here my sample codes..

/index.php

   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">

function addmsg(type, msg){

$('#notification_count').html(msg);

}

function waitForMsg(){

$.ajax({
type: "GET",
url: "select.php",

async: true,
cache: false,
timeout:50000,

success: function(data){
addmsg("new", data);
setTimeout(
waitForMsg,
1000
);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
addmsg("error", textStatus + " (" + errorThrown + ")");
setTimeout(
waitForMsg,
15000);
}
});
};

$(document).ready(function(){
waitForMsg();
});
</script>



</head>

<body>

    <span id='notification_count'></span>
<a href="notificationview.php" id="notificationLink" onclick = "return getNotification()">Notifications</a>
<div id="HTMLnoti" style="textalign:center"></div>


<br>
<p style="font-weight: bold; font-size: 20px; font-family: Tahoma;">Admin panel</p>
<form action="index.php" method="post">
<input type="text" required name="notification" autofocus="on" autocomplete="off">
<br>
<br>
<input type="text" name="status" value="unread" style="display: none;">
<input type="submit" name="btnsub" value="Submit">
</form>

and then my /select.php where why my notification counts..

 <?php
       $servername = "localhost";
       $username = "root";
       $password = "";
       $dbname = "messageTest";

       // Create connection

       $conn = new mysqli($servername, $username, $password, $dbname);

       // Check connection

       if ($conn->connect_error) {

           die("Connection failed: " . $conn->connect_error);

       } 

       $sql = "SELECT * from messageTest where status = 'unread'";
       $result = $conn->query($sql);
       $row = $result->fetch_assoc();
       $count = $result->num_rows;
       echo $count;
       $conn->close();
?>

please! all I want is get rid of the counts on the notification after the user open or read it. Thanks!

my database name = "messageTest" my database table = "messagetest" inside my table =

id notification status

1
  • 2
    uh, delete echo $count? Or is that too obvious? Commented Aug 9, 2016 at 20:27

2 Answers 2

1

If you don't want to show the count if there are no unread values, you simply don't show it. Easy as that.

if ($count > 0) {
    echo $count;
} else {
    // Do nothing
}

You may also want to consider checking out some basic programming tutorials.

Sign up to request clarification or add additional context in comments.

4 Comments

Im actually new on php but okay I will.. anyways where should put that code?
replace echo $count; with that. You don't actually need the else condition, I added that just to illustrate what is happening.
can you show me how? exactly where i should put that piece of code?
Did you read my comment? I told you where to put it. StackOverflow is not a "code it for me" site. We can provide nudges in the right direction if we are feeling froggy, but you have to do the legwork and learn as well so you can come back and answer other people's questions.
0

When you are displaying the notification count:

$count = $result->num_rows; echo ($count > 0) ? $count : 0;

Now call the addmsg function only when the count is not == 0 meaning there actually are some unread notifications.

success: function(data){
  if(data >0){ // unread notification
        addmsg("new", data);
    }
setTimeout(
waitForMsg,
1000
);
}

Now your notification link has a

onclick = "return getNotification()"

You would not need the return keyword. You can now have the ajax function as:

function getNotification(){

$.ajax({
type: "GET",
url: "notification.php",

success: function(data){
},
error: function(XMLHttpRequest, textStatus, errorThrown){
addmsg("error", textStatus + " (" + errorThrown + ")");
}
});
};
Now your notification.php should handle the update query by something like:

//Connection part 

$sql = "UPDATE messageTest Set status = 'unread'";
       $conn->query($sql);
       echo 1;
       $conn->close();

However, there is a lot more efficient way to handle this, just trying to fit the code you already have in place. You would not need separate pages for each ajax call. You can create all of them in a single file and create different functions. Try searching for php ajax notification example.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.