代码之家  ›  专栏  ›  技术社区  ›  user6243955

如何将java切换存储为sql中的值?

  •  0
  • user6243955  · 技术社区  · 8 年前

    问题是,当我进入网站的不同页面时,shoutbox最初总是打开的。这很烦人。我想存储用户是否最小化了shoutbox的信息(例如在sql db中),这样shoutbox的状态就不会总是返回。

    任何帮助都将不胜感激!!

    下面是我的shoutbox代码:

    load_data = {'fetch':1};
     $.post('<?php echo THEMEPATH; ?>/shout.php', load_data,  function(data) {
        $('.message_box').html(data);
        var scrolltoh = $('.message_box')[0].scrollHeight;
        $('.message_box').scrollTop(scrolltoh);
     });
    
    //method to trigger when user hits enter key
    $("#shout_message").keypress(function(evt) {
        if(evt.which == 13) {
                var iusername = "<?php echo $login; ?>";
                var imessage = $('#shout_message').val();
                post_data = {'username':iusername, 'message':imessage};
    
                //send data to "shout.php" using jQuery $.post()
                $.post('<?php echo THEMEPATH; ?>/shout.php', post_data, function(data) {
    
                    //append data into messagebox with jQuery fade effect!
                    $(data).hide().appendTo('.message_box').fadeIn();
    
                    //keep scrolled to bottom of chat!
                    var scrolltoh = $('.message_box')[0].scrollHeight;
                    $('.message_box').scrollTop(scrolltoh);
    
                    //reset value of message box
                    $('#shout_message').val('');
    
                }).fail(function(err) { 
    
                //alert HTTP server error
                alert(err.statusText); 
                });
            }
    });
    
    //toggle hide/show shout box
    $(".close_btnn").click(function (e) {   
        //get CSS display state of .toggle_chat element
        var toggleState = $('.toggle_chat').css('display');
    
        //toggle show/hide chat box
        $('.toggle_chat').slideToggle();
    
        //use toggleState var to change close/open icon image
        if(toggleState == 'block')
        {
            $(".header div").attr('class', 'open_btnn');
        }else{
            $(".header div").attr('class', 'close_btnn');
        }
    
    
    });
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   user3391232 user3391232    8 年前

    因此,您要做的是在PHP中使用Cookie,例如,尝试以下方法:

    呼喊php(在返回内容之前的文件末尾)

    setcookie("COOKIENAMEHERE", $output_message, time() + (86400 * 30), '/'); // 86400 = 1 day, therefore 30 days
    

    然后,为了在页面上检索cookie,您可以在html页面中设置内容(请提供您的html/PHP,以便我可以将其适应您的场景):

    <?php
    $cookie_name = 'COOKIENAMEHERE';
    if(isset($_COOKIE[$cookie_name])) { ?>
      <div class="message_box">
         <?php echo $_COOKIE[$cookie_name]; ?>
      </div>
    <?php } ?>
    

    为了使呼喊框在默认情况下隐藏,请将其放入css文件中:

    .message_box {
        display: none;
    }
    

    此外,如果/当您想要更新或删除cookie时,您只需执行与创建相同的操作以更新和删除:

    $cookie_name = 'COOKIENAMEHERE';
    unset($_COOKIE[$cookie_name]); //removes the cookie from memory
    // empty value and expiration one hour before just to be sure
    $result = setcookie($cookie_name, '', time() - 3600);
    

    编辑: 对于您的代码

    ...
    
    elseif($_POST["fetch"]==1)
    {
        $results = mysqli_query($sql_con,"SELECT user, message, date_time FROM (select * from table ORDER BY id DESC LIMIT 10) table ORDER BY table.id ASC");
        while($row = mysqli_fetch_array($results))
        {
            $output_message = $output_message.'<div class="shout_msg"><time>'.$row["date_time"].'</time><span class="username">'.$row["user"].'</span> <span class="message">'.$row["message"].'</span></div>';
        }
        setcookie("shout_msg", $output_message, time() + (86400 * 30), '/'); // 86400 = 1 day, therefore 30 days
        echo $output_message;
    }
    else
    {
        header('HTTP/1.1 500 Are you kiddin me?');
        exit();
    }
    }
    

    在索引中。php文件:

    <div class="header">Shout Box <div class="close_btn">&nbsp;</div></div>
      <div class="toggle_chat">
      <?php
    $cookie_name = 'shout_msg';
    if(isset($_COOKIE[$cookie_name])) { ?>
      <div class="message_box">
         <?php echo $_COOKIE[$cookie_name]; ?>
      </div>
    <?php } ?>
        <div class="user_info">
    
       <input name="shout_message" id="shout_message" type="text" placeholder="Type Message Hit Enter" maxlength="100" /> 
        </div>
        </div>
    </div>
    

    除非我看错了,否则你正在衰退。因此,请将此添加到您的css中的message_框:

    .消息框{
    显示:无;
    }
    

    PRO提示:

        2
  •  0
  •   user6243955 user6243955    8 年前

    这是带有shoutbox的页面的HTML/PHP;

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
    <!--
    .shout_box {
    background: #000000;
    width: 260px;
    overflow: hidden;
    position: fixed;
    bottom: 0;
    right: 10px;
    z-index:9;
    }
    .shout_box .header .close_btn {
    background: url(close_btn.gif) no-repeat 0px 0px;
    float: right;
    width: 15px;
    height: 15px;
    }
    .shout_box .header .close_btn:hover {
    background: url(close_btn.gif) no-repeat 0px -16px;
    }
    
    .shout_box .header .open_btn {
    background: url(close_btn.gif) no-repeat 0px -32px;
    float: right;
    width: 15px;
    height: 15px;
    }
    .shout_box .header .open_btn:hover {
    background: url(close_btn.gif) no-repeat 0px -48px;
    }
    .shout_box .header{
    padding: 5px 3px 5px 5px;
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif;
    font-weight: bold;
    color:#fff;
    border: 1px solid rgba(0, 39, 121, .76);
    border-bottom:none;
    cursor: pointer;
    }
    .shout_box .header:hover{
    background-color: #000000;
    }
    .shout_box .message_box {
    background: #FFFFFF;
    height: 200px;
    overflow:auto;
    border: 1px solid #CCC;
    }
    .shout_msg{
    margin-bottom: 10px;
    display: block;
    border-bottom: 1px solid #F3F3F3;
    padding: 0px 5px 5px 5px;
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif;
    color:#7C7C7C;
    }
    .message_box:last-child {
    border-bottom:none;
    }
    time{
        font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif;
    font-weight: normal;
    float:right;
    color: #D5D5D5;
    }
    .shout_msg .username{
    margin-bottom: 10px;
    margin-top: 10px;
    }
    .user_info input {
    width: 98%;
    height: 25px;
    border: 1px solid #CCC;
    border-top: none;
    padding: 3px 0px 0px 3px;
    font: 11px 'lucida grande', tahoma, verdana, arial, sans-serif;
    }
    .shout_msg .username{
    font-weight: bold;
    display: block;
    }
    -->
    </style>
    
    <script type="text/javascript" src="shoutbox/jquery-1.9.0.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
    
    // load messages every 1000 milliseconds from server.
    load_data = {'fetch':1};
    //window.setInterval(function(){
     $.post('shoutbox/shout.php', load_data,  function(data) {
        $('.message_box').html(data);
        var scrolltoh = $('.message_box')[0].scrollHeight;
        $('.message_box').scrollTop(scrolltoh);
     });
    //}, 1000);
    
    //method to trigger when user hits enter key
    $("#shout_message").keypress(function(evt) {
        if(evt.which == 13) {
                var iusername = "java";
                var imessage = $('#shout_message').val();
                post_data = {'username':iusername, 'message':imessage};
    
                //send data to "shout.php" using jQuery $.post()
                $.post('shoutbox/shout.php', post_data, function(data) {
    
                    //append data into messagebox with jQuery fade effect!
                    $(data).hide().appendTo('.message_box').fadeIn();
    
                    //keep scrolled to bottom of chat!
                    var scrolltoh = $('.message_box')[0].scrollHeight;
                    $('.message_box').scrollTop(scrolltoh);
    
                    //reset value of message box
                    $('#shout_message').val('');
    
                }).fail(function(err) { 
    
                //alert HTTP server error
                alert(err.statusText); 
                });
            }
    });
    
    //toggle hide/show shout box
    $(".close_btn").click(function (e) {
        //get CSS display state of .toggle_chat element
        var toggleState = $('.toggle_chat').css('display');
    
        //toggle show/hide chat box
        $('.toggle_chat').slideToggle();
    
        //use toggleState var to change close/open icon image
        if(toggleState == 'block')
        {
            $(".header div").attr('class', 'open_btn');
        }else{
            $(".header div").attr('class', 'close_btn');
        }
    
    
    });
    });
    
    </script>
    </head>
    
    <body>
    <div class="shout_box">
    <div class="header">Shout Box <div class="close_btn">&nbsp;</div></div>
      <div class="toggle_chat">
      <div class="message_box">
        </div>
        <div class="user_info">
    
       <input name="shout_message" id="shout_message" type="text" placeholder="Type Message Hit Enter" maxlength="100" /> 
        </div>
        </div>
    </div>
    </body>
    </html>
    

    这是我呼喊的php。php:

    if($_POST)
    {
    //connect to mysql db
    $sql_con = mysqli_connect($db_host, $db_username, $db_password,$db_name)or die('could not connect to database');
    
    //check if its an ajax request, exit if not
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
        die();
    } 
    
    if(isset($_POST["message"]) &&  strlen($_POST["message"])>0)
    {
        //sanitize user name and message received from chat box
        //You can replace username with registerd username, if only registered users are allowed.
        $message = filter_var(trim($_POST["message"]),FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
        $date = date("Y-m-d H:i");
        $username = filter_var(trim($_POST["username"]),FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH);
        //insert new message in db
        if(mysqli_query($sql_con,"INSERT INTO table(user, message, date_time) value('$username','$message','$date')"))
        {
            //$msg_time = date('h:i Y-m-d',time()); // current time
            $msg_time = date("Y-m-d H:i");
            echo '<div class="shout_msg"><time>'.$msg_time.'</time><span class="username">'.$username.'</span><span class="message">'.$message.'</span></div>';
        }
    
    
    }
    elseif($_POST["fetch"]==1)
    {
        $results = mysqli_query($sql_con,"SELECT user, message, date_time FROM (select * from table ORDER BY id DESC LIMIT 10) table ORDER BY table.id ASC");
        while($row = mysqli_fetch_array($results))
        {
    
            echo '<div class="shout_msg"><time>'.$row["date_time"].'</time><span class="username">'.$row["user"].'</span> <span class="message">'.$row["message"].'</span></div>';
        }
    }
    else
    {
        header('HTTP/1.1 500 Are you kiddin me?');
        exit();
    }
    }