PHP : echo message for a specified amount of time

两盒软妹~` 提交于 2019-12-02 11:24:20

问题


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


回答1:


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)!




回答2:


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




回答3:


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 (e.g.) sleep for three seconds and then set the content of that div to be empty.




回答4:


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.




回答5:


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/




回答6:


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



来源:https://stackoverflow.com/questions/5988909/php-echo-message-for-a-specified-amount-of-time

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!