2013-07-27 68 views
0

對於我的網站我想有一個小聊天/支持欄。目前我可以編寫並保存到數據庫中。小javascript/ajax/mysql聊天

但我想要它,如果我再次打開該網站,舊的文本來自數據庫。但是如何做到這一點呢?我也認爲我的數組是錯誤的,因爲我只從數據庫中獲得一個而不是全部數據。

我的JavaScript testcode:

initChat: function() { 

       var cont = $('#chats'); 
       var list = $('.chats', cont); 
       var form = $('.chat-form', cont); 
       var input = $('input', form); 
       var btn = $('.btn', form); 

       var handleClick = function (e) { 
        e.preventDefault(); 

        var text = input.val(); 
        if (text.length == 0) { 
         return; 
        } 

        var time = new Date(); 
        var time_str = time.toString('dd.MM.yyyy - H:mm')+ " Uhr"; 
        var tpl = ''; 
        tpl += '<li class="out">'; 
        tpl += '<img class="avatar" alt="" src="assets/img/avatar.png"/>'; 
        tpl += '<div class="message">'; 
        tpl += '<span class="arrow"></span>'; 
        tpl += 'Meine Frage&nbsp;'; 
        tpl += '<span class="datetime">vom ' + time_str + '</span>'; 
        tpl += '<span class="body">'; 
        tpl += text; 
        tpl += '</span>'; 
        tpl += '</div>'; 
        tpl += '</li>'; 

        var msg = list.append(tpl); 

        var time_str_new = time.toString('yyyy-MM-dd H:mm:ss');    

        $.ajax({          
        type: "POST",          
        url: '../support.php', 
        data: {datum: time_str_new, text: text}, 
        dataType: 'json', 
        success: function(data) 
        { 
        input.val(""); 
        } 
        }); 

        $('.scroller', cont).slimScroll({ 
         scrollTo: list.height() 
        }); 
       } 

我的PHP testscript:

$kundenid = KUNDENID; 

$query = "INSERT INTO support set datum = '$datum', kunde = '$kundenid', text = '$text', typ = 'kunde'"; 
$result = mysql_query($query,$db); 

$querysup = "SELECT id, datum, kunde, text, typ FROM support WHERE kunde = '$kundenid'"; 
$resultsup = mysql_query($querysup,$db); 

while($rowsup = mysql_fetch_array($resultsup)) { 
$datum = $rowsup['datum']; 
$text = $rowsup['text']; 
$typ = $rowsup['typ']; 

$data = array("datum"=>$rowsup['datum'], "text"=>$rowsup['text'], "typ"=>$rowsup['typ']); 
} 

echo json_encode($data); 

好吧,現在我有這樣的代碼。如果我發佈新文本,它會顯示數據庫中的所有帖子。但我需要的是,在我的第一篇文章之前,來自mysql的數據仍然存在。

initChat: function() { 

     var cont = $('#chats'); 
     var list = $('.chats', cont); 
     var form = $('.chat-form', cont); 
     var input = $('input', form); 
     var btn = $('.btn', form); 

     var handleClick = function (e) { 
      e.preventDefault(); 

      var text = input.val(); 
      if (text.length == 0) { 
       return; 
      } 

      var time = new Date(); 
      var time_str = time.toString('dd.MM.yyyy - H:mm')+ " Uhr"; 
      var tpl = ''; 
      tpl += '<li class="out">'; 
      tpl += '<img class="avatar" alt="" src="assets/img/avatar.png"/>'; 
      tpl += '<div class="message">'; 
      tpl += '<span class="arrow"></span>'; 
      tpl += 'Meine Frage&nbsp;'; 
      tpl += '<span class="datetime">vom ' + time_str + '</span>'; 
      tpl += '<span class="body">'; 
      tpl += text; 
      tpl += '</span>'; 
      tpl += '</div>'; 
      tpl += '</li>'; 

      var msg = list.append(tpl); 

      var time_str_new = time.toString('yyyy-MM-dd H:mm:ss');    
      $.ajax({          
      type: "POST",          
      url: 'support.php', 
      data: {datum: time_str_new, text: text}, 
      dataType: 'json', 
      success: function(data) 
      { 
      var myArray = data; 
      for (var i = 0; i < myArray.length; i++) { 

      var datum = new Date(myArray[i].datum); 

      var tpl = ''; 
      tpl += '<li class="out">'; 
      tpl += '<img class="avatar" alt="" src="assets/img/avatar.png"/>'; 
      tpl += '<div class="message">'; 
      tpl += '<span class="arrow"></span>'; 
      tpl += 'Meine Frage&nbsp;'; 
      tpl += '<span class="datetime">vom ' + datum.toString('dd.MM.yyyy - H:mm:ss')+ ' Uhr' + '</span>'; 
      tpl += '<span class="body">'; 
      tpl += myArray[i].text; 
      tpl += '</span>'; 
      tpl += '</div>'; 
      tpl += '</li>'; 
      var msg = list.append(tpl); 
      } 
      } 
      }); 
+0

您在每次迭代中覆蓋'$ data'數組。在while和$ data [] = ...'之前在循環中使用'$ data = array()'。 – PeeHaa

+0

嗨,感謝您的回覆。我已經改變了它,現在陣列正在工作。我必須改變才能從數據庫中獲取mysql的信息?我知道我通過jason數組獲得數據。但如何從數組中加載它到我的javascript ...所以如果我刷新頁面,數組中的值在我的「聊天室」中。 – TrivoXx

+0

Google for SQL注入.. – jantimon

回答

0

但如何從數組加載它我的JavaScript ...所以,如果我刷新頁面中的值從陣列是在我的「客艙」

缺少的部分可能是一個簡單的「分配」像

var chatArr=<?PHP echo json_encode($data) ?>; 

<script type="language/JavaScript">部分,您已處理的文檔中的所有PHP的東西后,你可以插入操作。你應該確保沒有任何「不需要的」進入$ data。之後,您可以對文檔中任何位置的部分中的JavaScript Array/Object執行任何您想要的操作。

當然還有專門的JSON解析器,它們也會處理Date對象。簡單賦值只會在JavaScript對象中生成Stings或數字內容,請參閱here