การแก้ไขข้อความโดยที่ไม่ทำการ upload มาใหม่ให้ใช้ไฟล์เดิมค่ะ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา การแก้ไขข้อความโดยที่ไม่ทำการ upload มาใหม่ให้ใช้ไฟล์เดิมค่ะ

การแก้ไขข้อความโดยที่ไม่ทำการ upload มาใหม่ให้ใช้ไฟล์เดิมค่ะ
ก่อนการอัพเดทจะมีรูปภาพ เมื่อแก้ไขข้อความแล้วกดอัพเดท ค่าของรูปภาพเดิมไม่ส่งมาค่ะ
รหัสสินค้าที่ 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");
         
?>


BookloveEarth 29-05-2019 20:33:07

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 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
ninenik 30-05-2019






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ