สอบถามเรื่อง Mysql หน่อยครับ ลบข้อมูลบางแถว ออก แล้วเพิ่มข้อมูลใหม่เข้าไป แทนที่จะเรียงลำดับ แต่กลับข้ามอันดับที่ลบออก
ช่วยหน่อยค้าบ
Date :
2013-02-26 12:15:25
By :
Judinho
เอ่อ.... ปกติแล้วในการลบข้อมูลในฐานข้อมูลออก แล้วเพิ่มข้อมูลไปใหม่ระบบมันจะข้ามลำดับนั้นอยู่แล้วครับ ถ้าหากคุณต้องการให้ข้อมูลที่เพิ่มเข้าไปใหม่อยู่ในลำดับหรือ ID เดิม จะต้องทำการแก้ไข (Update) ครับ คือต้องใช้คำสั่ง UPDATE ไม่ใช่คำสั่ง DELETE ครับ
Date :
2013-02-26 14:02:57
By :
arm8957
ผมต้องอัพเดทในส่วนไหนครับ ที่ฐานข้อมูลเลย หรือ ที่ไฟล์ php ครับ ขอบคุณครับ
Date :
2013-02-26 14:19:16
By :
Judinho
คุณสามารถทำการอัพเดทข้อมูลได้ 2 ทางครับ คืออัพเดทโดยตรงใน phpMyadmin เลย หรือเขียนคำสั่ง php ให้ทำการแก้ไขข้อมูลในฐานข้อมูลครับ
Date :
2013-02-26 14:23:47
By :
arm8957
พอดียังมือใหม่ครับ รบกวน ยกตัวอย่างให้ดูได้ไหมครับ ขอบพระคุณมากครับ
Date :
2013-02-26 14:34:04
By :
Judinho
อันนี้เป็นตัวที่ผม สั่งเพิ่มยูสเซอร์ ครับ และผมต้องแก้ในส่วนไหนครับ ในการอัพเดท
Code (PHP)
<?
$tb="admin";
$admin_id = $_GET['admin_id'];
$AddEdit = $_GET['AddEdit'];
if($AddEdit=="edit") {
$sql2 = "SELECT * FROM $tb WHERE admin_id=$admin_id";
$result2=mysql_query($sql2);
$db=mysql_fetch_array($result2);
$admin_id2=$db["admin_id"];
$username2=$db["username"];
$password2=$db["password"];
$admin_name2=$db["admin_name"];
$admin_type2=$db["admin_type"];
}
if($AddEdit<>"edit"){
$msg = "เพิ่ม";
}else if($AddEdit=="edit"){
$msg = "แก้ไข";
}
?>
ขอบคุณครับ
Date :
2013-02-26 14:37:38
By :
Judinho
ขอความรู้หน่อยค้าบ ขอบคุณค้าบ
Date :
2013-02-27 10:54:09
By :
Judinho
ประมาณนี้ครับ
Code (PHP)
<?
$tb="admin";
$admin_id = $_GET['admin_id'];
$AddEdit = $_GET['AddEdit'];
//------------ค่าต่อไปนี้ผมสมมติว่าได้มาจากฟอร์ม--------------//
$User = $_POST['user'];
$Passwd = $_POST['passwd'];
$Name = $_POST['name'];
$Type = $_POST[type'];
if($AddEdit=="edit") {
$sql2 = "SELECT * FROM $tb WHERE admin_id=$admin_id";
$result2=mysql_query($sql2);
$db=mysql_fetch_array($result2);
$admin_id2=$db["admin_id"];
$username2=$db["username"];
$password2=$db["password"];
$admin_name2=$db["admin_name"];
$admin_type2=$db["admin_type"];
}
if($AddEdit<>"edit"){ //เพิ่มใหม่
$ins = "INSERT INTO ".$tb." VALUES('', '$User', '$Passwd', '$Name', '$Type') LIMIT 1";
$Query_ins = mysql_query($ins);
}else if($AddEdit=="edit"){ //แก้ไข
$up = "UPDATE ".$tb." SET username = '$User', password = '$Passwd', admin_name = '$Name', admin_type = '$Type' WHERE admin_id = '$admin_id2' LIMIT 1";
$Query_up = mysql_query($up);
}
?>
Date :
2013-02-27 14:12:08
By :
arm8957
ไม่หายเลยครับท่าน แต่ก็ขอบคุณครับ เพราะมันไม่ค่อยสำคัญเท่าไหร่
แต่!ผมมีหน้าที่อยากรบกวนอีกซักหน่อยครับ
กรณีเหมือนกันครับ
Code (PHP)
<?
$tb="project";
$pro_id = $_GET['pro_id'];
$AddEdit = $_GET['AddEdit'];
if($AddEdit=="edit") {
$sql2 = "SELECT * FROM $tb WHERE pro_id=$pro_id";
$result2=mysql_query($sql2);
$db=mysql_fetch_array($result2);
$pro_id2=$db["pro_id"];
$pro_name2=$db["pro_name"];
$category2=$db["category"];
$pro_tel2=$db["pro_tel"];
$pro_email2=$db["pro_email"];
$pro_address2=$db["pro_address"];
$list_category = explode(",", $category2);
$cat_name_en=$category2;
$pro_detail2=$db["pro_detail"];
$pro_pic2=$db["pro_pic"];
$folder2=$db["folder"];
}
if($AddEdit<>"edit"){
$msg = "ชื่อ";
}else if($AddEdit=="edit"){
$msg = "แก้ไข";
}
?>
<? if($AddEdit=="edit"){?>
แล้วมันจะเด้งมาที่หน้า save project ครับ เหมือนกันเลยอยากให้มันอัพเดทแบบไม่ต้องข้าม
ใน phpmyadmin โดยมีฟิวส์ ID เป็น primary key เซ็ต เป็น auto increment
ทดลองเพิ่มข้อมูลลงไปในตารางได้ซักพัก ที่ฟิวส์ ID มันก็เรียงลำดับข้อมูลเป็น 1 2 3 4..แต่พอลบข้อมูลบางแถว ออก
เช่น ลบ 2 3 ออก แล้วเพิ่มข้อมูลใหม่เข้าไป แทนที่จะเรียงลำดับให้ เป็น 1 2 3 4...เหมือนเดิม
แต่กลับไม่มี ลำดับ 2 3 ที่ลบไปเช่นเดิมกลับข้ามลำดับเป็น 1 4 5 6..ไปเลย ครับ ท่านใดรู้วิธี เซ็ต ค่าการเรียงลำดับ ใน
phpmyadmin ไม่ให้ข้ามลำดับที่เราลบ ไปบ้างครับ อยากให้มันเรียงลำดับ 1 2 3 4..ไปเรื่อยๆโดยไม่ข้ามลำดับที่เราลบข้อมูลออกนะครับ
Date :
2013-03-01 08:46:18
By :
Judinho
ช่วยหน่อยนะค้าบ
Date :
2013-03-01 14:58:29
By :
Judinho
พูดกันตามจริงนะครับ มันต้องเป็นอย่างนั้นครับ
เพราะ id มีความหมายว่า "เลขประจำตัว" ไม่ควรมีซ้ำกัน
สมมติว่าผมเนี่ย เลขบัตรประชาชน 1 ต่อให้ผมตายไป ก็ไม่ควรมีใครได้เลข 1 เป็นเลขบัตรอีก
แต่ถ้าคุณต้องการที่จะทำแบบนั้น ผมแนะนำให้เปลี่ยนชนิดของ id เลยครับ
ผมเคยทำอยู่ คือให้ id เป็นชนิด UUID ซึ่งเป็นตัวอักษรเลขฐาน 16 แบบสุ่ม
แต่การค้นหาอะไรจะช้ากว่าการใช้ตัวเลขเป็น id มาก และเรียงลำดับตาม id ก็ไม่ได้ด้วย (แต่เราไปเรียงตามวันที่สร้างแทน)
ลองศึกษาดูครับ
Universally unique identifier
Date :
2013-03-02 05:18:01
By :
cookiephp
อ๋ออย่างนี้นี่เอง ขอบคุณครับผม
Date :
2013-03-04 16:38:08
By :
Judinho
ใน Database phpMyadmin ไปที่ Structure ของ Table นั้น >> ติ๊ก Checkbox ที่ ID แล้ว Drop ID ทิ้งไปซะ
>> แล้ว Insert ใหม่ กดที่ At Beginning of Table ข้างล่าง >> Go
>> แล้วตั้ง ID เป็น Auto_Increment เหมือนเดิมค่ะ เหมือนตอนก่อนที่จะลบไป
เท่านี้ เรียบร้อย เลขรันใหม่ ไม่ขาดไม่แหว่งค่า ^^
Date :
2015-04-08 17:04:04
By :
Athena glory
Load balance : Server 01