Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara menambahkan beberapa pilihan kotak centang ke database saya menggunakan php

Kotak centang mewakili daftar nilai. Seorang pengguna dapat memilih beberapa kotak centang, yang berarti bahwa untuk setiap catatan pengguna, Anda mungkin memiliki daftar nilai. Untuk alasan ini, Anda memerlukan tabel lain di database Anda untuk menyimpan opsi ini. Sebenarnya Anda mungkin memerlukan tiga tabel secara total:donor darah, aktivitas, aktivitas_per_donor. Untuk informasi lebih lanjut, lihat Apa cara terbaik untuk menyimpan Nilai Kotak Centang di Database MySQL?

Terserah Anda bagaimana Anda mendesain tabel tetapi aktivitas_per_donor Anda harus memiliki setidaknya dua kolom:user_id dan aktivitas. Anda juga harus membuat kunci utama komposit pada kedua kolom untuk menghindari nilai duplikat. Kolom aktivitas harus mereferensikan daftar aktivitas yang telah ditentukan sebelumnya dari tabel ketiga sehingga pengguna tidak dapat menyisipkan aktivitas yang tidak valid.

Saat formulir Anda dibuat dengan benar dan kotak centang Anda dinamai sebagai array (yaitu name="act[]" ) maka Anda akan menerima larik terpilih nilai dalam PHP di $_POST['act'] variabel. Jika tidak ada nilai yang dipilih maka variabel ini tidak akan disetel, jadi Anda perlu memeriksanya juga. Anda perlu memproses larik ini dan menyisipkan setiap elemen sebagai baris baru ke dalam tabel aktivitas_per_donor

Cara menyimpan beberapa kotak centang menggunakan PDO

Sebagian besar waktu Anda akan menggunakan PDO untuk berinteraksi dengan database. Untuk memasukkan nilai, Anda perlu melakukan pernyataan yang disiapkan. Anda perlu memasukkan data donor ke dalam satu tabel dan aktivitasnya ke tabel lain, yang mengharuskan Anda membungkus kedua sisipan dalam suatu transaksi.

$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();
}

Cara menyimpan banyak kotak centang menggunakan mysqli

Jika Anda harus menggunakan mysqli, Anda masih dapat mencapai hal yang sama dengan kode yang sangat mirip. Sekali lagi, kami memulai transaksi dan melakukan 2 pernyataan yang disiapkan dan kemudian memasukkannya ke dalam database.

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. Tingkat isolasi dengan Flask-SQLAlchemy

  2. JSON_QUOTE() – Cara Menghilangkan Karakter dalam String yang digunakan sebagai Nilai JSON di MySQL

  3. Bagaimana cara mengurangi satu ke bulan dari format tanggal di mysql?

  4. MySQL - Kueri Semua pengguna TANPA janji temu

  5. MySQL di mana TIDAK DALAM array nama?