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

Php . का उपयोग करके मेरे डेटाबेस में एकाधिक चेकबॉक्स चयन कैसे जोड़ें

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

यह आप पर निर्भर करता है कि आप तालिकाओं को कैसे डिज़ाइन करते हैं लेकिन आपके activity_per_donor में कम से कम दो कॉलम होने चाहिए:user_id और activity. डुप्लिकेट मानों से बचने के लिए आपको दोनों स्तंभों पर एक समग्र प्राथमिक कुंजी भी बनानी चाहिए। गतिविधि कॉलम तीसरी तालिका से आपकी पूर्वनिर्धारित गतिविधियों की सूची का संदर्भ देना चाहिए ताकि उपयोगकर्ता कोई अमान्य गतिविधि सम्मिलित न कर सके।

जब आपका फॉर्म सही ढंग से बनाया गया हो और आपके चेकबॉक्स को एक सरणी के रूप में नामित किया गया हो (यानी name="act[]" ) तो आपको चयनित . की एक सरणी प्राप्त होगी PHP में मान $_POST['act'] . में चर। यदि कोई मान नहीं चुना गया है तो यह चर सेट नहीं किया जाएगा, इसलिए आपको इसकी भी जांच करनी होगी। आपको इस सरणी को संसाधित करने और प्रत्येक तत्व को एक नई पंक्ति के रूप में activity_per_donor तालिका में सम्मिलित करने की आवश्यकता है

पीडीओ का उपयोग करके एकाधिक चेकबॉक्स कैसे स्टोर करें

अधिकांश समय आप डेटाबेस के साथ बातचीत करने के लिए पीडीओ का उपयोग कर रहे होंगे। मूल्यों को सम्मिलित करने के लिए आपको एक तैयार कथन करने की आवश्यकता है। आपको दाता डेटा को एक तालिका में और उनकी गतिविधियों को दूसरी तालिका में सम्मिलित करने की आवश्यकता है, जिसके लिए आपको लेन-देन में दोनों प्रविष्टियों को लपेटने की आवश्यकता होती है।

$pdo = new \PDO("mysql:host=localhost;dbname=test;charset=utf8mb4", 'user', 'password', [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_EMULATE_PREPARES => false
]);

if (isset($_POST["name"], $_POST["gender"], $_POST["dob"], $_POST["weight"], $_POST["contact"], $_POST["bloodtype"], $_POST["adress"])) {
    $pdo->beginTransaction();
    
    // Insert blood donor
    $stmt = $pdo->prepare('INSERT INTO blooddonor(name,gender,dob,weight,contact,bloodtype,adress) VALUES (?,?,?,?,?,?,?)');
    $stmt->execute([
        $_POST["name"],
        $_POST["gender"],
        $_POST["dob"],
        $_POST["weight"],
        $_POST["contact"],
        $_POST["bloodtype"],
        $_POST["adress"],
    ]);
    
    $donor_id = $pdo->lastInsertId();
    
    // Insert donor's acitvities
    if(isset($_POST['act'])) {
        $stmt = $pdo->prepare('INSERT INTO activities_per_donor(donor_id, activity) VALUES (?,?)');
        $stmt->bindValue(1, $donor_id);
        $stmt->bindParam(2, $activity);
        foreach ($_POST['act'] as $activity) {
            $stmt->execute();
        }
    }
    
    $pdo->commit();
}

mysqli का उपयोग करके एकाधिक चेकबॉक्स कैसे संग्रहीत करें

यदि आपको mysqli का उपयोग करना है तो आप अभी भी एक समान कोड के साथ इसे प्राप्त कर सकते हैं। एक बार फिर, हम एक लेन-देन शुरू करते हैं और 2 तैयार बयान करते हैं और फिर इसे डेटाबेस में जमा करते हैं।

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'password', 'test');
$mysqli->set_charset('utf8mb4'); // always set the charset

if (isset($_POST["name"], $_POST["gender"], $_POST["dob"], $_POST["weight"], $_POST["contact"], $_POST["bloodtype"], $_POST["adress"])) {
    $mysqli->begin_transaction();
    
    // Insert blood donor
    $stmt = $mysqli->prepare('INSERT INTO blooddonor(name,gender,dob,weight,contact,bloodtype,adress) VALUES (?,?,?,?,?,?,?)');
    $stmt->bind_param('sssssss', $_POST["name"], $_POST["gender"], $_POST["dob"], $_POST["weight"], $_POST["contact"], $_POST["bloodtype"], $_POST["adress"]);
    $stmt->execute();
    
    $donor_id = $mysqli->insert_id;
    
    // Insert donor's acitvities
    if(isset($_POST['act'])) {
        $stmt = $mysqli->prepare('INSERT INTO activities_per_donor(donor_id, activity) VALUES (?,?)');
        $stmt->bind_param('ss', $donor_id, $activity);
        foreach ($_POST['act'] as $activity) {
            $stmt->execute();
        }
    }
        
    $mysqli->commit();
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कॉलम गिनती पंक्ति 1 पर मूल्य गणना से मेल नहीं खाती जावा mysql

  2. MySQL डिफ़ॉल्ट तालिका वर्णसेट को डेटाबेस वर्णसेट में बदल देता है

  3. mysqldump:निष्पादित नहीं किया जा सका। info_schema में अज्ञात तालिका 'column_statistics'

  4. नेस्टेड टिप्पणी प्रणाली को कैसे कार्यान्वित करें?

  5. MySQL में InnoDB और MyISAM क्या है?