2012-02-09 4 views
0

У меня есть страница со 100 вопросами.php auto-save code

Когда пользователь отправляет форму, данные сохраняются в таблице (на следующей странице).

Что я хочу сделать, это сохранить выбранные ответы пользователя, которые скажут каждые 30 секунд в таблице перед отправкой формы.

Может ли кто-нибудь, пожалуйста, направить меня в каком направлении?

Как я могу запустить скрипт каждые 30 секунд?

Помощь будет принята с благодарностью.

+1

Вам понадобится JavaScritp для этого (AJAX), чтобы совершать вызовы на веб-сервер каждые x секунд. – PeeHaa

ответ

1

Вам нужно будет использовать javascript.

Вы должны будете искать следующее:

  1. Как отправить форму с помощью AJAX.
  2. window.setInterval

Я хотел бы использовать JQuery, как это делает JS легко для этого.

0

Я предлагаю использовать JS, чтобы запустить код каждые 30 секунд (SetTimeout()), где либо хранит ваши данные в куки, или отправляет его на сервер с помощью AJAX (хотя я бы рекомендовал печенье)

1

Я не думаю, что вы можете сделать это с помощью PHP в одиночку, но есть интересная функция JQuery, которая звучит как то, что вам нужно:

http://rikrikrik.com/jquery/autosave/

это использует куки-файлы, но, возможно, вы можете изменить его, чтобы использовать базу данных?

+0

Здесь используется база данных: http://jetlogs.org/2007/11/11/auto-saving-with-jquery/ – davidjwest

0
function sendQuery(){ 
    AjaxArr = $('#formID *').serializeJSON(); 

    toAjax(AjaxArr,'yourPHPToSave.php'); 

    setTimeout('sendQuery',30000); 
} 

function toAjax(arr,ajaxAdr){ 
    JsHttpRequest.query( siteAdr+ajaxAdr+'?x=c'+Math.random(), AjaxArr, 
     function(result, errors) { 
      if(errors)alert(errors); 
      else{ 
       if(result['error'] && result['error']!='')alert(result['error']); 
       if(result['callback'] && result['callback']!='')eval(result['callback']); 
      } 
     } 
    ); 
} 

jQuery.fn.serializeJSON=function() { 
    var json = {}; 
    jQuery.map($(this).serializeArray(), function(n, i){ 
     json[n['name']] = n['value']; 
    }); 
    return json; 
} 

вызовов sendQuery и retrive данные POST в yourPHPToSave.php

UPDATE: Вы должны JSHttpRequest библиотеку http://www.phpclasses.org/package/3637-PHP-Process-regular-and-file-upload-AJAX-requests.html и JQuery

0

Использование JavaScript:

var refreshId = setInterval(function() 
{ 
    //get your data here and make an ajax call to update your db table 

}, 10000); 

Этот код будет работать для каждого 10 секунд на вашей странице.

1

Следующий код использует jQuery для отправки некоторых данных в файл php под названием store.php каждую секунду.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
function callback() { 
    // make ajax request 
    $.ajax('store.php',{ 
     data:'<contains-the-data-to-store>', 
     success:function() { 

     } 
    }); 
} 
$(document).ready(function() { 
    setInterval("callback()", 1000); 
}); 
</script> 
0
<script type="text/javascript"> 
function func() 
{ 
// collect data like that 
//var your_data_array = {} 
// your_data_array.Ans1 = $('#someID').val(); 
    $.ajax({ 
      type: "POST", 
      url:"path/to/page/which/will/save_data.php", 
      data:your_data_array, 
      //dataType:'json', 

      beforeSend: function() 
      { 
      }, 
      success: function(resp) 
      { 
       $("#activity").html(resp); 
       /*$("#db").html(resp.db); 
       $("#time").html(resp.time);*/ 
      }, 
      complete: function() 
      { 
      }, 
      error: function(e) 
      { 
      alert('Error: ' + e); 
      } 
     }); 

    var t = setTimeout("func()",30000); 
} 
var t = setTimeout("func()",30000); 
</script> 

добавить к вашей головной секции после preapare в соответствии с вашими данными (FUNC) функция будет срабатывать после каждых 30 секунд.