简体   繁体   中英

Show bootstrap alert box after successfully posted a news

This is what i want to do. Everytime when the admin successfully posted a news i want the div success alert to popup and dissappear after 3 seconds. I want to put it after the text "Add News" As you can see in picture. Can someone give me a clue on how to do this?

Here is the sample picture of my work. 在此输入图像描述

here is my php code for adding the news.

  <?php
    include_once('connection.php');
    session_start();
   $username = ucfirst($_SESSION['username']);

  if(isset($_POST['submit'])){

    $title = $_POST['title'];
    $date = $_POST['date'];
    $content = $_POST['content'];
    $file=$_FILES['image']['tmp_name'];
    $image= @addslashes(file_get_contents($_FILES['image']['tmp_name']));
    $image_name= addslashes($_FILES['image']['name']);
    move_uploaded_file($_FILES["image"]["tmp_name"],"img/" . $_FILES["image"]["name"]);
    $newsimage="img/" . $_FILES["image"]["name"];



    $sql ="INSERT into news (news_title, news_date, news_content, news_image) VALUES ('$title', '$date', '$content', '$newsimage')";
    mysqli_query($con, $sql);



  }
  ?>

here is my form where the alert box is in.

 <div id="page-wrapper">

            <div class="container-fluid">

                  <a class='btn btn-info' href ="news.php" style="margin-bottom:25px; float:right;" ><span class="glyphicon glyphicon-search"></span> View all news</a>


            <form method="post" action ="addnews.php" enctype="multipart/form-data">

             <h4>Add News</h4>

             <div class="alert alert-success" id="success-alert">
              <strong>Successfully posted!</strong>
             </div>

                <div class="form-group">
                       <label for="title">News Title</label>
                        <input type="text" name="title" class="form-control title" id="title" placeholder="News Title" required >
                </div>  

              <div class="form-group">
               <label for="title">Date</label>
                   <input type="text" name="date" class="form-control date" id="date" placeholder="Date" required >  
                </div>

                <div class="form-group">
                      <label for="content">News Content</label>
                     <textarea class="form-control content" name="content" rows="5" id="content" required></textarea>
                </div>    


                      <img id="blah" src="" alt="image here" width="200px" height="140px"/>
                       <input id="image" name="image" class="fileupload" type="file" accept="image/*"/>
                     <button type="submit" name="submit" id="postnews" class='btn btn-info '>Post news</button>
              </form>




        </div>
        <!-- /#page-wrapper -->

    </div>
    <!-- /#wrapper -->

You could Php session to display alert box on form submission like:

<?php
if(isset($_SESSION['form_submit'])) {
 echo '<div class="alert alert-success alert-dismissable" id="success-alert">';
          echo '<strong>Successfully posted!</strong>';
         echo '</div>';
 unset($_SESSION['form_submit']);
}
?>

You have set this session variable on form submission :- $_SESSION['form_submit']=true

to automaticaly hide this alert box you could use this javascript code

$(".alert-dismissable").fadeTo(2000, 500).slideUp(500, function(){
 $(".alert-dismissable").alert('close');
});

In your addnews.php file do something like this

assuming that you are using core php means no framework

     $msg = ''
    $sql ="INSERT into news (news_title, news_date, news_content, news_image) VALUES ('$title', '$date', '$content', '$newsimage')";

    if  (mysqli_query($con, $sql)) 
    {
       $msg = 'success'

    } 
    else 
     {
     $msg = 'error'
     }
     header('Location: http://www.example.com/addnews.php?msg='.$msg);

IN your form file

Just receive the $msg using $_GET['msg']

  <?php  if (isset($_GET['msg'] and $GET['msg'] == 'success') {?>

      <div class="alert alert-success" id="success-alert">
          <strong>Successfully posted!</strong>
         </div>
  <?php  } 

       if (isset($_GET['msg'] and $GET['msg'] == 'error') { ?>

          <div class="alert alert-error" id="error-alert">
             <strong>Something went wrong !</strong>
           </div>
<?php  } ?>

This can also be done by ajax in more efficient way

To close the alert use bootstrap alert close button or use jquery's setTimeout function

 window.setTimeout(function () { 
           $("#success-alert").alert('close'); }, 2000);               
    }); 

Or u can use like :

    $("#success-alert").fadeTo(2000, 500).slideUp(500, function(){
    $("#success-alert").alert('close');
  });  

do the same for error

have created example, You can you use this, It is working fine. This div put after news div.

<div id="msg">
    <?php if(isset($_SESSION) && $_SESSION['msg'] != ''){ ?>
         <div class="alert alert-success">
             <strong>Success!</strong> Successfully posted!
         </div>
    <?php } unset($_SESSION['msg']); ?>
</div>

Script : Set time out function

setTimeout( function(){$('#msg').hide();} , 3000);

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