การแก้ไขข้อความโดยที่ไม่ทำการ upload มาใหม่ให้ใช้ไฟล์เดิมค่ะ
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา การแก้ไขข้อความโดยที่ไม่ทำการ upload มาใหม่ให้ใช้ไฟล์เดิมค่ะ
การแก้ไขข้อความโดยที่ไม่ทำการ upload มาใหม่ให้ใช้ไฟล์เดิมค่ะ
ก่อนการอัพเดทจะมีรูปภาพ เมื่อแก้ไขข้อความแล้วกดอัพเดท ค่าของรูปภาพเดิมไม่ส่งมาค่ะ
รหัสสินค้าที่ 14 คือก่อนที่จะมีการอัพเดทหรือเเก้ไขข้อมูลต่าง ๆ ไฟล์ภาพยังคงเป็นภาพเดิมไม่เปลี่ยนแปลงอะไร
แต่ในรหัสสินค้าที่ 12 คือ หลังจากที่ลองอัพเดทชื่อสินค้าแล้วแต่ว่าไฟล์รูปภาพสินค้าเปลี่ยนเป็นไฟล์อื่น แล้วไฟล์รูปภาพที่แสดงให้เห็นไม่ได้เป็นไฟล์นามสกุลไม่ใช่ไฟล์ .JPG .PNG
รหัสสินค้าที่ 14 คือก่อนที่จะมีการอัพเดทหรือเเก้ไขข้อมูลต่าง ๆ ไฟล์ภาพยังคงเป็นภาพเดิมไม่เปลี่ยนแปลงอะไร
แต่ในรหัสสินค้าที่ 12 คือ หลังจากที่ลองอัพเดทชื่อสินค้าแล้วแต่ว่าไฟล์รูปภาพสินค้าเปลี่ยนเป็นไฟล์อื่น แล้วไฟล์รูปภาพที่แสดงให้เห็นไม่ได้เป็นไฟล์นามสกุลไม่ใช่ไฟล์ .JPG .PNG
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | <?php include ( "./header.php" ); include ( "./connectdb.php" ); include ( "./menu1.php" ); ?> <?php $pro_id = $_POST [ 'pro_id' ]; $pro_name = $_POST [ 'pro_name' ]; $pro_price = $_POST [ 'pro_price' ]; $pro_count = $_POST [ 'pro_count' ]; //upload imag $numrand = (mt_rand()); $pro_image = (isset( $_REQUEST [ 'pro_image' ]) ? $_REQUEST [ 'pro_image' ] : '' ); $upload = $_FILES [ 'pro_image' ]; if ( $upload <> '' ) { //โฟลเดอร์ที่เก็บไฟล์ $path = "product/" ; //ตัวขื่อกับนามสกุลภาพออกจากกัน $type = strrchr ( $_FILES [ 'pro_image' ][ 'name' ], "." ); $nawe = $numrand . $type ; $path_copy = $path . $nawe ; //คัดลอกไฟล์ไปยังโฟลเดอร์ move_uploaded_file( $_FILES [ 'pro_image' ] [ 'tmp_name' ], $path_copy ); } $sql = "update product SET pro_name= '$pro_name' , pro_image= '$nawe' , pro_price= '$pro_price' , pro_count= '$pro_count' where pro_id= '$pro_id' "; //$result = $mysqli->query($sql) or die($mysqli->error.__LINE__); $mysqli ->query( $sql ); echo $sql ; exit (); ?> <meta http-equiv= "refresh" content= "0; url=./show_product.php" > <?php include ( "./footer.php" ); ?> |

คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
การเขียนโปรแกรม หลักสำคัญคือ การทำงานภายใต้เงื่อนไข http://niik.in/que_2798_6304
การอัพโหลดรูปภาพ โดยเก็บชื่อไฟล์ไว้ใน database และก็เก็บไฟล์ไว้บน server
ทำได้สองแบบคือ อัพเดทแยก กับอัพเดทรวม
อัพโหลดแยก
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php // มีการส่งไฟล์มา if ( $_FILES [ 'pro_image' ][ 'name' ]!= "" ){ //โฟลเดอร์ที่เก็บไฟล์ $path = "product/" ; //ตัวขื่อกับนามสกุลภาพออกจากกัน $arrType = explode ( "." , $_FILES [ 'pro_image' ][ 'name' ]); // แยกชื่อไฟล์ด้วย . เป็น array $type = array_pop ( $arrType ); // เอา array ตัวสุดท้ายมาเป็น นามสกุลไฟล์ $numrand = "ชื่อไฟล์ใหม่" ; // กำหนดชื่อรูปแบบไฟล์ใหม่ที่ต้องการ $nawe = $numrand . "." . $type ; // สร้่างรูปแบบชื่อไฟล์ใหม่ โดยต่อเข้ากับนามสกุล $path_copy = $path . $nawe ; // กำหนด path ไฟล์ที่จะจัดเก็บ //คัดลอกไฟล์ไปยังโฟลเดอร์ move_uploaded_file( $_FILES [ 'pro_image' ] [ 'tmp_name' ], $path_copy ); $sql = "update product SET pro_image='$nawe' where pro_id='$pro_id'" ; $mysqli ->query( $sql ); // หรือจะใส่เงื่อนไขอีกก็ได้ /* if(move_uploaded_file($_FILES['pro_image'] ['tmp_name'],$path_copy)){ // อัพโหลดไฟล์เรียบร้อย $sql = "update product SET pro_image='$nawe' where pro_id='$pro_id'"; $mysqli->query($sql); }*/ } // ต่อด้วขอัพเดทส่วนอื่นๆ $sql = "update product SET pro_name= '$pro_name' , pro_price= '$pro_price' , pro_count= '$pro_count' where pro_id= '$pro_id' "; //$result = $mysqli->query($sql) or die($mysqli->error.__LINE__); $mysqli ->query( $sql ); ?> |
อัพโหลดรวม
การอัพเดทรูปรวมกับข้อมูลอื่น เราต้องมั่นใจว่า ต้องมีข้อมูลทุกฟิลด์ ส่งมา
อย่างกรณีมีไฟล์รูปเดิมอยู่แล้ว เราต้องส่งค่า input hidden ชื่อรูปเดิมที่ใช้อยู่มาด้วย
1 | <input type= "hidden" name= "h_pro_image" value= "ชื่อไฟล์รูปเดิม" /> |
ไว้ใช้กรณี ที่ไม่มีการอัพโหลดรูป หรืออัพโหลดรูปไม่ผ่าน แนวทางตามด้านล่าง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?php // มีการส่งไฟล์มา if ( $_FILES [ 'pro_image' ][ 'name' ]!= "" ){ // มีอัพโหลดไฟล์ //โฟลเดอร์ที่เก็บไฟล์ $path = "product/" ; //ตัวขื่อกับนามสกุลภาพออกจากกัน $arrType = explode ( "." , $_FILES [ 'pro_image' ][ 'name' ]); // แยกชื่อไฟล์ด้วย . เป็น array $type = array_pop ( $arrType ); // เอา array ตัวสุดท้ายมาเป็น นามสกุลไฟล์ $numrand = "ชื่อไฟล์ใหม่" ; // กำหนดชื่อรูปแบบไฟล์ใหม่ที่ต้องการ $nawe = $numrand . "." . $type ; // สร้่างรูปแบบชื่อไฟล์ใหม่ โดยต่อเข้ากับนามสกุล $path_copy = $path . $nawe ; // กำหนด path ไฟล์ที่จะจัดเก็บ //คัดลอกไฟล์ไปยังโฟลเดอร์ // หรือจะใส่เงื่อนไขอีกก็ได้ if (!move_uploaded_file( $_FILES [ 'pro_image' ] [ 'tmp_name' ], $path_copy )){ // อัพโหลดไม่สำเร็จ $nawe = $_POST [ 'h_pro_image' ]; // ใช้ชื่อเดิม จาก input hidden ที่ส่งมา } else { // อัพโหลดรูปผ่าน // อาจทำคำสัี่งลบรูปเดิม @unlink( $path . $_POST [ 'h_pro_image' ]); } } else { // ไม่มีการอัพโหลดไฟล์ $nawe = $_POST [ 'h_pro_image' ]; // ใช้ชื่อเดิม จาก input hidden ที่ส่งมา } // ต่อด้วขอัพเดทส่วนอื่นๆ $sql = "update product SET pro_name= '$pro_name' , pro_image= '$nawe' , pro_price= '$pro_price' , pro_count= '$pro_count' where pro_id= '$pro_id' "; //$result = $mysqli->query($sql) or die($mysqli->error.__LINE__); $mysqli ->query( $sql ); ?> |
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
สร้างฟังก์ชันสำหรับอัพโหลดรูป แบบกำหนดเงื่อนไข อย่างง่าย | อ่าน 22,301 |

ขอบคุณทุกการสนับสนุน
![]()