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

PHP memasukkan beberapa kotak centang DAN array kotak teks ke dalam Database MySQL

Anda seharusnya tidak menggunakan implode . Itu menempatkan daftar yang dipisahkan koma dari semua yang ada di formulir ke dalam setiap baris yang Anda masukkan, dan mengulanginya untuk setiap kotak yang dicentang. Anda cukup memasukkan satu item di setiap baris, dengan mengindeks array.

Namun, ketika Anda memiliki kotak centang di formulir, itu hanya mengirimkan yang dicentang. Hasilnya adalah indeks dari $_POST['checkbox'] array tidak akan cocok dengan $_POST['item'] yang sesuai dan $_POST['quantity'] elemen. Anda perlu memasukkan indeks eksplisit ke dalam checkbox nama sehingga Anda dapat menghubungkannya.

<form method = "POST">

<input type = "hidden" name = "item[]" value = "cupcake">
<input type = "text" name = "items" value = "cupcake" readonly><br>
<b>Price :</b> <span name = "price" value = "3.00">$17.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[0]" type="checkbox" value="17" /><span>Add to Cart</span></label></div></div></td><br>

<input type = "hidden" name = "item[]" value = "cake">
<input type = "text" name = "items" value = "cake" readonly><br>
<b>Price :</b> <span name = "price" value = "20.00">$20.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /><span>Add to Cart</span></label></div></div></td><br>

<input type = "submit" name = "insertBT"><br>
</form>

Maka kode PHP Anda bisa seperti ini:

$stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)");
$stmt->bind_param("sis", $name, $quantity, $price);
foreach ($_POST['checkbox'] as $i => $price) {
    $name = $_POST['name'][$i];
    $quantity = $_POST['quantity'][$i];
    $stmt->execute();
}

BTW, menempatkan harga di HTML Anda sepertinya ide yang buruk. Tidak ada yang menghentikan pengguna untuk memodifikasi HTML menggunakan pemeriksa web sebelum mereka mengirimkan formulir, sehingga mereka dapat menurunkan harganya. Anda harus mendapatkan harga dari database saat memproses formulir.

Perhatikan juga bahwa dalam kode asli Anda, Anda membuka koneksi database menggunakan MySQLi, tetapi kemudian Anda mencoba melakukan penyisipan menggunakan mysql_query bukannya $conn->query() . Anda tidak dapat mencampur API seperti itu; myql_query hanya dapat digunakan ketika Anda membuka koneksi dengan mysql_connect .




  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 Nilai tanggal waktu salah:'0000-00-00 00:00:00'

  2. Cara Menemukan dan Mengganti Teks di Database MySQL menggunakan SQL

  3. MySQL JOIN LENGKAP?

  4. Bagaimana Operator LIKE Bekerja di MySQL

  5. cara memeriksa dan mengatur variabel mysql max_allowed_packet