简体   繁体   中英

PHP : echo message for a specified amount of time

I want to display a string "Your status has been posted" for something around 3 or so seconds than I want it to go away.

As of right now I have a news feed where the user can post messages and after they post it echoes that string of text until the url is re-enetered. Does anyone have any suggestions?

if ($_POST['submit'])
{
$body = $_POST['body'];

if ($body)
{
    include ('connect.php');
    $date = date("Y-m-d");
    $email = $_SESSION['email'];
    $who = mysql_query("SELECT firstname FROM people WHERE email = $email");
    $insert = mysql_query("
    INSERT INTO status VALUES('','$email','$body','$date')");
    echo ('Your status has been posted <p></p>');
}
else
    echo 'Status required to post into news feed! <p></p>';
 }
 ?>

Status :

Thanks for your help!

Jeff

You need to add some JavaScript to do this. Here is an outline to get you started:

<p id="info-message">Your status has been posted</p>
<script>
  setTimeout(function(){
    document.getElementById('info-message').style.display = 'none';
    /* or
    var item = document.getElementById('info-message')
    item.parentNode.removeChild(item); 
    */
  }, 3000);
</script>

Also you may want fade-out effects. For that I'd recommend using a library like jQuery or Scriptaculous.

Useful links:
https://developer.mozilla.org/en/Window.setTimeout
http://api.jquery.com/fadeOut/
http://script.aculo.us/


Oh, by the way, your script is vulnerable to SQL injection . Always escape your query parameters (or use prepared queries)!

You can't do that with php. Try Javascript instead.

Unless you go for some weird "100 Continue" approach interleaved before you present your next web page you will need to do this in javascript.

If this i to display for a period after they first see a webpage then you can have something like a This message will disappear and then add a script which is called from your tag's onLoad action which would (eg) sleep for three seconds and then set the content of that div to be empty.

I'd use AJAX for that. You can assure yourself that the data has been well inserted into the DB, and then show the message with javascript for amount the time you want.

If sending output to the browser, then you can use javascript to control the time-window you want your text to be visible.

If using jquery you could use .hide() http://api.jquery.com/hide/

You cannot achieve this with PHP only; you need JavaScript. Here's a simple example using jQuery: http://jsfiddle.net/4surX/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM