投票系统怎么做_一个投票系统的源程序coveryourasp.com

2017-10-11 新闻资讯 阅读:


  SurveyDescr.asp

  <%

  // ============================================

  // NOTE: all source code downloaded from CoverYourASP was written by

  // James Shaw (unless stated otherwise), and is copyright (c) 2000 by

  // James Shaw. You may use this source code on your web sites, but

  // please don't publish or distribute in any way.

  //

  // I would appreciate an HTML comment in any code you use, i.e.

  //

  // (see Footer(), documented in SSI.asp for details on how to do this)

  //

  //

  //      Please contact me to discuss any ASP contract work you may have.

  //

  // ============================================

  // output relevant meta tags

  Init( "Survey your readers" );

  // output common top of page

  Header( 'Survey your readers' );

  // output page content

  Content ( );

  // output common bottom of page

  Footer( );

  // ============================================

  // the content of this page - every page has a function 'Content' that

  // is called above.

  // ============================================

  function Content ( )

  {

  Out ( '' );

  Out ( '' );

  }

  %>

  utils/Survey.asp

  <%

  // ============================================

  // NOTE: all source code downloaded from CoverYourASP was written by

  // James Shaw (unless stated otherwise), and is copyright (c) 2000 by

  // James Shaw. You may use this source code on your web sites, but

  // please don't publish or distribute in any way.

  //

  // I would appreciate an HTML comment in any code you use, i.e.

  //

  // (see Footer(), documented in SSI.asp for details on how to do this)

  //

  //

  //      Please contact me to discuss any ASP contract work you may have.

  //

  // ============================================

  // ============================================

  // display or process the named survey

  // ============================================

  function ProcessSurvey ( sName )

  {

  // has the survey form been submitted?

  if ( Request.Form.Count )

  {

  // connect to the database

  DBInitConnection ( );

  var sSurvey = "" + Request.Form ( "Survey" );

  // only update the survey when no cookie

  if ( "" == Request.Cookies ( sSurvey ) )

  {

  // get the data from the form and update the database

  // use an enumerator to get name and value

  var e = new Enumerator ( Request.Form );

  while ( !e.atEnd ( ) )

  {

  var oItem = e.item();

  // increment the current number of times this answer has been chosen

  oConnection.Execute ( 'UPDATE SurveyAnswers SET Hits=Hits+1 WHERE Question="' + oItem + '" AND

  Answer="' + Request.Form ( oItem ) + '";' );

  e.moveNext ( );

  }

  // note that setting cookie here assumes we are buffering

  // the Reponse.Writes - cookies must be set before any

  // HTML is sent to the client

  Response.Cookies ( sSurvey ) = "1";

  // I'm not setting the 'expires' on the cookie, so it'll go

  // away when the browser is closed. I just wanted to stop

  // the survey incrementing if the page refreshed.

  }

  // now display all the answers to the survey

  Out ( '

  Thanks for taking part in our "' + sSurvey + '" survey! The answers that everyone has

  given so far are shown below:' );

  // the last question we displayed

  var sLast = "";

  // get all the selected answers, sorted by question and hits

  DBGetRecords ( 'SELECT SurveyAnswers.Question,Answer,Hits FROM SurveyAnswers INNER JOIN

  SurveyQuestions ON SurveyQuestions.Question=SurveyAnswers.Question WHERE Survey="' + sSurvey + '" AND

  Hits>0 ORDER BY SurveyAnswers.Question,Hits DESC;' );

  var fScale;

  while ( !oRecordSet.EOF )

  {

  // display question when it changes

  var sIntQuestion = "" + oRecordSet ( 0 );

  // slice off chars used for sorting

  var sQuestion = sIntQuestion.slice ( 2 );

  // get answer

  var sIntAnswer = "" + oRecordSet ( 1 );

  // slice off chars used for sorting

  var sAnswer = ExpandMacros ( sIntAnswer.slice ( 2 ) );

  var nReaders = oRecordSet ( 2 ) - 0;

  if ( sQuestion != sLast )

  {

  Out ( '

  ' + sQuestion + '

  ' );

  sLast = sQuestion;

  Out ( '"' + sAnswer + '" was the top answer (' + nReaders + ' readers)

  ' );

  fScale = 300.0 / nReaders;

  }

  else

  {

  Out ( '"' + sAnswer + '" was chosen by ' + nReaders + ' readers

  ' );

  }

  Out ( '

  ' );

  oRecordSet.MoveNext ( );

  }

  // release the connection ASAP

  DBReleaseConnection ( );

  }

  else

  {

  // some initial instructions

  Out ( '

  There aren\'t any important instructions when answering these questions - except you

  don\'t have to answer any. All are optional - if you don\'t like a question, or none of the answers are

  relevant, just move onto the next one!' );

  // connect to the database

  DBInitConnection ( );

  // get the questions from the database

  DBGetRecords ( 'SELECT Question FROM SurveyQuestions WHERE Survey="' + sName + '" ORDER BY

  Question;' );

  if ( oRecordSet.EOF )

  {

  Out ( 'No questions were found for survey "' + sName + '"

  ' );

  return;

  }

  // store the questions in an array

  var sIntQuestions = new Array;

  var nQuestions = 0;

  while ( !oRecordSet.EOF )

  {

  sIntQuestions [ nQuestions++ ] = "" + oRecordSet ( 0 );

  oRecordSet.MoveNext ( );

  }

  Out ( '' );

  // some hidden fields to pass data through to results page

  Out ( '' );

  // now loop through the questions

  for ( var nQuestion=0; nQuestion<nQuestions; nQuestion++ )

  {

  var sIntQuestion = sIntQuestions [ nQuestion ];

  // slice off chars used for sorting

  var sQuestion = sIntQuestion.slice ( 2 );

  // get the answers from the database

  DBGetRecords ( 'SELECT Answer,AnswerType FROM SurveyAnswers WHERE Question="' + sIntQuestion + '"

  ORDER BY Answer;' );

  Out ( '

  ' + sQuestion + '

  ' );

  while ( !oRecordSet.EOF )

  {

  // get the answer

  var sIntAnswer = "" + oRecordSet ( 0 );

  // slice off chars used for sorting

  var sAnswer = ExpandMacros ( sIntAnswer.slice ( 2 ) );

  var sAnswerType= "" + oRecordSet ( 1 );

  switch ( sAnswerType )

  {

  case 'radio':

  Out ( '' +

  sAnswer );

  break;

  default:

  break;

  }

  Out ( '

  ' );

  // get next answer

  oRecordSet.MoveNext ( );

  }

  }

  Out ( '

  ' );

  Out ( '

  ' );

  // release the connection ASAP

  DBReleaseConnection ( );

  }

  }

  // ============================================

  // add links to text where *? macros are found, e.g. *d expands to

  // Send a donation!

  // NOTE: currently assumes expansions are always at end of line

  // ============================================

  function ExpandMacros ( sText )

  {

  var sMacros = new Array (

  '**',

  '*d'

  );

  var sExpansions = new Array (

  'You need to send me feedback!',

  'send a donation!'

  );

  for ( var i=0; i<sMacros.length; i++ )

  {

  var nPos = sText.indexOf ( sMacros [ i ] );

  if ( -1 != nPos )

  {

  sText = sText.slice ( 0, nPos ) + sExpansions [ i ];

  break;

  }

  }

  return sText;

  }

  %>

  utils/Database.asp

  <%

  // ============================================

  // NOTE: all source code downloaded from CoverYourASP was written by

  // James Shaw (unless stated otherwise), and is copyright (c) 2000 by

  // James Shaw. You may use this source code on your web sites, but

  // please don't publish or distribute in any way.

  //

  // I would appreciate an HTML comment in any code you use, i.e.

  //

  // (see Footer(), documented in SSI.asp for details on how to do this)

  //

  //

  //      Please contact me to discuss any ASP contract work you may have.

  //

  // ============================================

  // globals

  var oConnection;

  var oRecordSet;

  // enums

  // Connection.State and Recordset.State property

  var adStateClosed = 0;         // the object is closed.

  var adStateOpen = 1;             // the object is open.

  var adStateConnecting = 2;   // the object is connecting.

  var adStateExecuting = 4;      // the object is executing a command.

  var adStateFetching = 8;         // the rows of the object are being fetched.

  // Recordset.Cursor property

  var adOpenUnspecified = -1;   // does not specify the type of cursor.

  var adOpenForwardOnly = 0;   // (default) a forward-only cursor, i.e. you get only one pass thru the data!

  var adOpenKeyset = 1;         // can go in any direction, and as a bonus you'll see changes other users

  make. EXPENSIVE!

  var adOpenDynamic = 2;      // as Keyset, but also you can see additions/deletions other users make.

  EXPENSIVE!

  var adOpenStatic = 3;         // can go in any direction, but read-only.

  // Recordset.LockType property

  var adLockUnspecified = -1;   // does not specify a type of lock.

  var adLockReadOnly = 1;      // (default) guess!

  var adLockPessimistic = 2;      // guaranteed to work

  var adLockOptimistic = 3;      // records locked only when you call Update. fingers crossed

  var adLockBatchOptimistic = 4;// required for batch update mode

  // ============================================

  // example usage:

  //      DBInitConnection ( );

  //

  //      DBGetRecords ( "SELECT * FROM Somewhere" );

  //

  //      ...use oRecordSet

  //

  //      DBReleaseRecords ( );      // optional step

  //

  //      DBGetRecords ( "SELECT * FROM SomewhereElse" );

  //

  //      ...use oRecordSet

  //

  //      DBReleaseRecords ( );      // optional step

  //

  //      DBReleaseConnection ( );

  // ============================================

  // ============================================

  // initializes database variables for first use on page - leave it to the

  // last possible second before calling this function

  // ============================================

  function DBInitConnection ( )

  {

  // don't open it again if already opened!

  if ( oConnection != undefined )

  return;

  // you can open Recordset objects without a Connection object, but

  // it's far less efficient if you are opening multiple Recordsets.

  //

  // if you don't create a Connection object ADO creates a new one for

  // each new Recordset.Open, even if you use the  connection string.

  oConnection = Server.CreateObject( 'ADODB.Connection' );

  // open the database - use MapPath to make relative path into physical path

  // NOTE: keep your database path a secret - nasty people are everywhere!

  // 2. change the 4.0 to 3.51 when using Access 97

  oConnection.Open( 'Provider=Microsoft.Jet.' + sDBDriver + '; Data Source=' + Server.MapPath (

  sDBPath ) );

  // create a Recordset

  oRecordSet = Server.CreateObject( 'ADODB.Recordset' );

  }

  // ============================================

  // tidies up after DBInitConnection

  // ============================================

  function DBReleaseConnection ( )

  {

  // don't release the connection if not connected!

  if ( oConnection == undefined )

  return;

  // close and delete the Recordset object

  DBReleaseRecords ( );

  oRecordSet = undefined;

  // Don't call Close if the Recordset failed to Open properly, i.e. its

  // State is still adStateClosed (0)

  if ( oConnection.State != adStateClosed )

  oConnection.Close();

  oConnection = undefined;

  }

  // ============================================

  // executes the passed in SQL statement and returns a read-only

  // forward-only oRecordSet object

  // ============================================

  function DBGetRecords ( sSQL )

  {

  // if the Recordset is already open, close it

  DBReleaseRecords ( );

  // we could use oRecordSet = oConnection.Execute( sSQL ) here

  // but then we will always get back a read-only, forward-only cursor.

  // (admittedly this is the most used type, but still)

  // use oRecordSet.Open and we have far more control. For details

  // read the definitions of the enums at the top of this file.

  // remember that this can fail if passed garbage, and hence the

  // Recordset will remain closed, State == adStateClosed

  oRecordSet.Open ( sSQL, oConnection, adOpenForwardOnly, adLockReadOnly );

  }

  // ============================================

  // tidies up after DBGetRecords

  // ============================================

  function DBReleaseRecords ( )

  {

  // when you have finished with an open Recordset object, call the

  // Close method to release its resources. You can call Open again.

  // Don't call Close if the Recordset failed to Open properly, i.e. its

  // State is still adStateClosed

  if ( oRecordSet != undefined && oRecordSet.State != adStateClosed )

  oRecordSet.Close();

  }

  %>

  ' );

  // if the survey hasnt been submitted yet...

  if ( !Request.Form.Count )

  {

  //...display some blah, blah

  Out ( 'Finally, surveys come to CoverYourASP! I\'ve been wanting to ask you guys and gals

  questions for a long time, and now I can. It\'s up to you if you want to answer of course!' );

  Out ( '

  Of course, the real benefit to you is that if you tell me what you like I\'ll probably

  provide it. If you send in your donations the probability increases rather

  dramatically!' );

  Out ( '

  Take the example survey below if you have the time and inclination. I plan to post more

  in a special survey category, and start offering incentives to take them.' );

  Out ( '

  Afterwards, look at the code. I think you\'ll be surprised how simple it is to create

  surveys with this code. This page has one function call in it, with just one parameter - the name of the

  survey! All questions, answers and results are stored in the database.' );

  }

  // show the survey, or process it's input

  ProcessSurvey ( 'Who are you and what do you think?' );

  if ( !Request.Form.Count )

  Out ( '

  <img src="images/source.gif" align="right"

  border=0>Please submit the survey first before looking at the source code - this link is on the result

  page too!' );

  else

  Out ( '

  <img src="images/source.gif"

  border=0>' );

  Out ( '

  ' );

  // show rotating banners

  ShowBanners ( 4 );

  Out ( '

投票系统怎么做_一个投票系统的源程序coveryourasp.com

http://m.hzclsc.cn/anzhuo/2577.html

推荐访问:钻石投票系统 深交所互联网投票系统

新闻资讯推荐文章

推荐内容

上一篇:【wap是什么东西】WAP中的ASP技术二 下一篇:制作一个个人搜索引擎_制作一个个人搜索引擎(源码)