Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

वोट अप सिस्टम को कैसे प्रोग्राम करें?

इस उदाहरण के लिए, मान लें कि आप इतने उत्तरों पर मतदान कर रहे हैं। इसके लिए कम से कम तीन तालिकाओं की आवश्यकता होगी:

उपयोगकर्ता , उत्तर , वोट

वोट टेबल में होगा पूरा इतिहास:

voteid | userid | answerid | value
----------------------------------
   1   |   12   |   383    |   1
   2   |   28   |   383    |  -1  (negative number would require signed values)

इस उदाहरण में, हम देखते हैं कि दो वोट दर्ज किए गए हैं। उपयोगकर्ता 12 और 28 दोनों ने उत्तर 383 पर मतदान किया। उपयोगकर्ता 12 ने इसे पसंद किया, और इसके समर्थन में 1 जोड़ा। उपयोगकर्ता 28 को यह पसंद नहीं आया, और इसके समर्थन से 1 घटा दिया।

जब भी कोई उपयोगकर्ता वोट करता है, तो आपको पहले यह देखना चाहिए कि क्या उस उपयोगकर्ता ने उस विशेष प्रश्न पर पहले ही वोट कर दिया है। यदि उनके पास है, तो आप वोट करने के किसी भी अन्य प्रयास को अस्वीकार कर सकते हैं, या उनके पुराने वोट को एक नए के साथ अधिलेखित कर सकते हैं।

SELECT * 
FROM votes 
WHERE (userid = 12) 
  AND (answerid = 383)

यह एक बहुत ही सरल उदाहरण क्वेरी है जो आपको बताएगी कि उपयोगकर्ता ने पहले ही मतदान कर दिया है या नहीं। यदि यह रिकॉर्ड लौटाता है, तो आप जानते हैं कि उन्होंने मतदान किया है। आप बहुत अच्छे से जवाब दे सकते हैं "क्षमा करें, आप पहले ही मतदान कर चुके हैं।" संदेश, या आप इसे अधिलेखित कर सकते हैं:

UPDATE votes 
SET value = $votevalue 
WHERE (userid = 12) 
  AND (answerid = 383)

ऐसा कहने के बाद, आइए देखें कि SO इसे कैसे पूरा करता है:

जब आप अप-वोट तीर पर क्लिक करते हैं, तो SO निम्न की तरह एक url पर एक अनुरोध को सक्रिय करता है:

    http://stackoverflow.com/posts/1303528/vote/2

इस यूआरएल में, हम देख सकते हैं कि पोस्ट #1303528 पर वोट डाला जा रहा है। और वोट-प्रकार को 2 द्वारा दर्शाया जाता है। यह 2 संभावित रूप से "एक जोड़ें" का प्रतिनिधित्व करता है। आप अधिक बुनियादी url का उपयोग कर सकते हैं, और कुछ इस तरह से जा सकते हैं:

    vote.php?answerid=383&vote=1

वोट.php पेज का कोड निम्न के जैसा होगा:

(चेतावनी:इस कोड का इस तरह उपयोग न करें। यह एक उदाहरण के लिए है, समाधान के लिए नहीं)

if ($_GET) {

  $userid   = $_SESSION["userid"]; // assumes the user is logged in via SESSIONS
  $answerid = $_GET["answerid"];
  $votetype = $_GET["vote"];

  $query = "SELECT * 
            FROM votes 
            WHERE (userid = {$userid}) 
              AND (answerid = {$answerid})";

  $result = mysql_query($query) or die(mysql_error());

  if (mysql_num_rows($result) > 0) {
    # User has voted
    print "Sorry, you are only allowed one vote.";
  } else {
    # User has not voted, cast the vote
    $query = "INSERT INTO votes (userid, answerid, votevalue)
              VALUES({$userid},{$answerid},{$vote})";
    $result = mysql_query($query) or die(mysql_error());
    if (mysql_affected_rows($result) > 0) {
      print "Your vote has been recorded.";
    }
  }

}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दी गई कुंजी शब्दकोश में मौजूद नहीं थी। mysql के साथ

  2. MySQL जावा के साथ फ़ाइल से बड़े डेटा सेट सम्मिलित करना

  3. क्या कोई सी # प्रोग्राम स्मृति में एक टेक्स्ट फ़ाइल पढ़ सकता है और फिर उस ऑब्जेक्ट को उस विधि में पास कर सकता है जिसके लिए फ़ाइल नाम की आवश्यकता होती है?

  4. PHP MySQL:PDF को डेटाबेस में सेव करना

  5. लोचदार खोज के लिए मैसकल क्वेरी