когда я вставляю 1 запись в tb_penerimaan, когда я ее отображаю, появляется 1 запись
MariaDB [sijarvis]> SELECT tb_penerimaan.* , tb_pelanggan.nama FROM tb_penerimaan, tb_pelanggan;
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+------+-----------+----------------+-------+------------+-------+
| no_servis | tgl_terima | kode_pelanggan | nama_perangkat | model_perangkat | no_model | keluhan | kelengkapan | dp | status | solusi | harga | presentase | nama |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+------+-----------+----------------+-------+------------+-------+
| SER00000001 | 2019-01-31 | PE000001 | ASUS | X453SA | CVT122 | gsdggfddfg | dfgfgd | 5000 | Di Servis | Belum Diservis | 0 | 15 | Anggi |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+------+-----------+----------------+-------+------------+-------+
и вставьте больше записи обнаружился
MariaDB [sijarvis]> SELECT tb_penerimaan.* , tb_pelanggan.nama FROM tb_penerimaan, tb_pelanggan;
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+--------+-----------+----------------+-------+------------+-------+
| no_servis | tgl_terima | kode_pelanggan | nama_perangkat | model_perangkat | no_model | keluhan | kelengkapan | dp | status | solusi | harga | presentase | nama |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+--------+-----------+----------------+-------+------------+-------+
| SER00000001 | 2019-01-31 | PE000001 | ASUS | X453SA | CVT122 | gsdggfddfg | dfgfgd | 5000 | Di Servis | Belum Diservis | 0 | 15 | Anggi |
| SER00000002 | 2019-02-01 | PE000002 | Sharp | Aquos | 305SH | bootloop | charger | 123000 | Di Servis | Belum Diservis | 0 | 15 | Anggi |
| SER00000001 | 2019-01-31 | PE000001 | ASUS | X453SA | CVT122 | gsdggfddfg | dfgfgd | 5000 | Di Servis | Belum Diservis | 0 | 15 | saya |
| SER00000002 | 2019-02-01 | PE000002 | Sharp | Aquos | 305SH | bootloop | charger | 123000 | Di Servis | Belum Diservis | 0 | 15 | saya |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+--------+-----------+----------------+-------+------------+-------+
и когда я обновляю запись, показываю ошибку
MariaDB [sijarvis]> UPDATE tb_penerimaan SET no_servis='SER00000002',tgl_terima='2019-02-01',kode_pelanggan='PE000002',nama_perangkat='Sharp',model_perangkat='Aquos',no_model='305sh',keluhan='bootloop',kelengkapan='charger',status='Di Servis',solusi='Instal RAM',harga='15000',presentase='15';
ERROR 1062 (23000): Duplicate entry 'SER00000002' for key 'PRIMARY'
когда в tb_penerimaan есть 1 запись, я могу обновить запись. когда в tb_penerimaan есть 2 записи или более, произошла ошибка. Duplicate entry 'SER00000002' for key 'PRIMARY'
это мой файл обновления
<?php
include('koneksi.php');
// Proses input data
$no_servis = $_POST['no_servis'];
$tgl_terima = $_POST['tgl_terima'];
$kode_pelanggan = $_POST['kode_pelanggan'];
$nama_perangkat = $_POST['nama_perangkat'];
$model_perangkat = $_POST['model_perangkat'];
$no_model = $_POST['no_model'];
$keluhan = $_POST['keluhan'];
$kelengkapan = $_POST['kelengkapan'];
$solusi = $_POST['solusi'];
$status = $_POST['status'];
$harga = $_POST['harga'];
if ($status == 'Di Servis') {
$query = "UPDATE tb_penerimaan SET no_servis='$no_servis',tgl_terima='$tgl_terima',kode_pelanggan='$kode_pelanggan',nama_perangkat='$nama_perangkat',model_perangkat='$model_perangkat',no_model='$no_model',keluhan='$keluhan',kelengkapan='$kelengkapan',status='$status',solusi='$solusi',harga='$harga',presentase='15'";
mysql_query($query) or die(mysql_error());
}else if ($status == 'Di Cek') {
$query = "UPDATE tb_penerimaan SET no_servis='$no_servis',tgl_terima='$tgl_terima',kode_pelanggan='$kode_pelanggan',nama_perangkat='$nama_perangkat',model_perangkat='$model_perangkat',no_model='$no_model',keluhan='$keluhan',kelengkapan='$kelengkapan',status='$status',solusi='$solusi',harga='$harga',presentase='40'";
mysql_query($query) or die(mysql_error());
} else if ($status == 'Di Ambil') {
$query = "UPDATE tb_penerimaan SET no_servis='$no_servis',tgl_terima='$tgl_terima',kode_pelanggan='$kode_pelanggan',nama_perangkat='$nama_perangkat',model_perangkat='$model_perangkat',no_model='$no_model',keluhan='$keluhan',kelengkapan='$kelengkapan',status='$status',solusi='$solusi',harga='$harga',presentase='65'";
mysql_query($query) or die(mysql_error());
}else if ($status == 'Selesai') {
$query = "UPDATE tb_penerimaan SET no_servis='$no_servis',tgl_terima='$tgl_terima',kode_pelanggan='$kode_pelanggan',nama_perangkat='$nama_perangkat',model_perangkat='$model_perangkat',no_model='$no_model',keluhan='$keluhan',kelengkapan='$kelengkapan',status='$status',solusi='$solusi',harga='$harga',presentase='100'";
mysql_query($query) or die(mysql_error());
}else{
echo "GAGAL";
}
header("Location: transaksi.php");
?>
Итак, у меня есть selectbox, чтобы показать статус. и в селектбоксе были показаны "Ди Сервис", "Ди Чек", "Диамбил" и "Селесай".
В вашем текущем операторе Update вы пытаетесь обновить все строки. Но это невозможно, потому что no_servis
должен быть уникальным. Правильно будет
UPDATE tb_penerimaan SET tgl_terima='2019-02-01', kode_pelanggan='PE000002', nama_perangkat='Sharp', model_perangkat='Aquos', no_model='305sh', keluhan='bootloop', kelengkapan='charger', status='Di Servis', solusi='Instal RAM', harga='15000', presentase='15'
WHERE no_servis = 'SER00000002';
UNIQUE
вас не может быть конфликтующих значений в одном и том же столбце или наборе столбцов.