A-AA+then

อาจารย์ครับช่วยผมทีครับเกี่ยวกับการอัพเดทรูปภาพในฐานข้อมูลครับ

1,962
คือว่าผมสร้างระบบแก้ไขข้อมูลน่ะครับ แล้วทีนี้ผมอยากทำให้สามารถแก้ไขข้อมูลข้อมูลได้ทั้งหมดน่ะครับ แต่ติดที่เป็นรูปภาพอ่ะครับทำการอัพเดทแล้วไม่ได้ครับ คือผมจะเช็คว่า ถ้ารูปภาพไม่มีการอัพเดทข้อมูลมาก็ใมห้ใช้ค่าเก่าที่มีในฐานข้อมูลที่มีอยู่เดิม และถ้ารูปมีการอัพเดทเข้ามาก้ทับของเดิมไปเลย และก็ทับทีี่อยู่ในfoder ทเก็บรูปภาพด้วยเลยน่ะครับ ตอนนี้ผมทำได้คือ เรียกชื่อไฟล์รูปภาพมาจากฐานข้อมูลเพื่อที่จะแก้ไขแล้วส่งไปเช็คที่ไฟล์อัพเดท แต่กลายเป็นว่าถ้าไม่ได้เลือกรูปภาพเลย ก็จะกลายเป็นค่าว่างในฐานข้อมูลเลยครับ ผมจะแก้ยังไงครับ

#################ฟอร์มแก้ไขรูปภาพ ยกตัวอย่างเฉพาะฟิลด์รูปที่ยังติดปัญหาน่ะครับ###############

<input type="file" name="photo1" value="<? $photo1=$row[45];?>">
<input type="file" name="photo2" value="<? $photo1=$row[46];?>">
<input type="file" name="photo3" value="<? $photo1=$row[47];?>">
<input type="file" name="photo4" value="<? $photo1=$row[48];?>">
<input type="file" name="photo5" value="<? $photo1=$row[49];?>">
<input type="file" name="photo6" value="<? $photo1=$row[50];?>">
#################################################################

ส่งมาอัพเดทน่ะครับ
#################################################################
<?
$photo1=$_FILES['photo1']['tmp_name'];
$photo1_name=$_FILES['photo1']['name'];
$photo1_type=$_FILES['photo1']['type'];
$photo6_size=$_FILES['photo1']['size'];

$photo2=$_FILES['photo2']['tmp_name'];
$photo2_name=$_FILES['photo2']['name'];
$photo2_type=$_FILES['photo2']['type'];
$photo6_size=$_FILES['photo2']['size'];

$photo3=$_FILES['photo3']['tmp_name'];
$photo3_name=$_FILES['photo3']['name'];
$photo3_type=$_FILES['photo3']['type'];
$photo6_size=$_FILES['photo3']['size'];

$photo4=$_FILES['photo4']['tmp_name'];
$photo4_name=$_FILES['photo4']['name'];
$photo4_type=$_FILES['photo4']['type'];
$photo6_size=$_FILES['photo4']['size'];

$photo5=$_FILES['photo5']['tmp_name'];
$photo5_name=$_FILES['photo5']['name'];
$photo5_type=$_FILES['photo5']['type'];
$photo5_size=$_FILES['photo5']['size'];

$photo6=$_FILES['photo6']['tmp_name'];
$photo6_name=$_FILES['photo6']['name'];
$photo6_type=$_FILES['photo6']['type'];
$photo6_size=$_FILES['photo6']['size'];

include 'connect.php';
$photo1=$photo1_name;
$photo2=$photo2_name;
$photo3=$photo3_name;
$photo4=$photo4_name;
$photo5=$photo5_name;
$photo6=$photo6_name;

if(!empty($photo1))
                            {
                            $uppic1=$photo1;
                            }
                            else
                            {
                            $uppic1=$pic1;
                            }
                                if(!empty($photo2))
                                {
                                $uppic2=$photo2;
                                }
                                else
                                {
                                $uppic2=$pic2;
                                }
                                    if(!empty($photo3))
                                    {
                                    $uppic3=$photo3;
                                    }
                                    else
                                    {
                                    $uppic3=$pic3;
                                    }
                                        if(!empty($photo4))
                                        {
                                        $uppic4=$photo4;
                                        }
                                        else
                                        {
                                        $uppic4=$pic4;
                                        }
                                            if(!empty($photo5))
                                            {
                                            $uppic1=$photo6;
                                            }
                                            else
                                            {
                                            $uppic6=$pic6;
                                            }
                           
                           
        $array_last1=explode(".",$photo1_name);
    $c1=count($array_last1)-1;
    $lastname1=strtolower($array_last1[$c1]) ;
    if ($lastname1=="gif" or $lastname1=="jpg" or $lastname1=="jpeg"  or $lastname1=="png"  or $lastname1=="") {
        copy($_FILES['photo1']['tmp_name'],"pic_upload/".$photo1_name);
   
    $array_last2=explode(".",$photo2_name);
    $c2=count($array_last2)-1;
    $lastname2=strtolower($array_last2[$c2]) ;
    if ($lastname2=="gif" or $lastname2=="jpg" or $lastname2=="jpeg" or $lastname2=="png" or $lastname2=="") {
        copy($_FILES['photo2']['tmp_name'],"pic_upload/".$photo2_name);

    $array_last3=explode(".",$photo3_name);
    $c3=count($array_last3)-1;
    $lastname3=strtolower($array_last3[$c3]) ;
    if ($lastname3=="gif" or $lastname3=="jpg" or $lastname3=="jpeg" or $lastname3=="png" or $lastname3=="") {
        copy($_FILES['photo3']['tmp_name'],"pic_upload/".$photo3_name);
       
    $array_last4=explode(".",$photo4_name);
    $c4=count($array_last4)-1;
    $lastname4=strtolower($array_last4[$c4]) ;
    if ($lastname4=="gif" or $lastname4=="jpg" or $lastname4=="jpeg" or $lastname4=="png" or $lastname4=="") {
        copy($_FILES['photo4']['tmp_name'],"pic_upload/".$photo4_name);
       
    $array_last5=explode(".",$photo5_name);
    $c5=count($array_last5)-1;
    $lastname5=strtolower($array_last5[$c5]) ;
    if ($lastname5=="gif" or $lastname5=="jpg" or $lastname5=="jpeg" or $lastname5=="png" or $lastname5=="") {
    copy($_FILES['photo5']['tmp_name'],"pic_upload/".$photo5_name);
   
    $array_last6=explode(".",$photo6_name);
    $c6=count($array_last6)-1;
    $lastname6=strtolower($array_last6[$c6]) ;
    if ($lastname6=="gif" or $lastname6=="jpg" or $lastname6=="jpeg" or $lastname6=="png" or $lastname6=="") {
        copy($_FILES['photo6']['tmp_name'],"pic_upload/".$photo6_name);   

 print    $sql="UPDATE ads SET  `pic1`='$uppic1',
        `pic2`='$uppic2',
        `pic3`='$uppic3',
        `pic4`='$uppic4',
        `pic5`='$uppic5',
        `pic6`='$uppic6',

where `ads`.`id_ads`='$id_ads'";    
       
            $res=mysql_db_query($dbname,$sql);
            print "<a href=\"javascript:history.go(-1)\"><center>แก้ไขรายการเรียบร้อยแล้ว คลิกที่นีเพื่อกลับ</center></a>";
           //print "<meta http-equiv=\"refresh\" content=\"2;URL=chk_user_login.php\">";
    }
    }
    }
    }
    }
    }
    else
    {
       
    print "<h3>ERROR : เฉพาะรูปภาพนามสกุล *.gif , *.jpg , *.jpeg เท่านั้น<a href=\"javascript:history.go(-1)\"><input type=\"button\" value=\"Back\" onClick=\"history.go(-1)\"></a></h3>";
       
    }

    mysql_close();
   
?>

6 ความคิดเห็น

ถ้าเข้าใจไม่ผิด เราไม่สามารถกำหนดค่า value ให้กับ input type file ได้ (หรือว่าทำได้) <input type="file" name="photo1" value="<? $photo1=$row[45];?>">  อาจจะทำเป็น hidden field ไว้ครับ
1

 ตอน submit ก็ตรวจค่าที่ส่งไปสิครับ ถ้ามีส่งมา ก็ไปเขียนคำสั่ง update ในฟิลด์นั้นๆ ถ้าไม่มีก็ไม่ต้องอัปเดท

<?php
$sql = 'UPDATE table SET '
if ($fileupload[tmp_name] != '') {
  $sql.= "picture='$fileupload[name]' " ;// เขียนโค้ดสำหรับอัปเดท sql
  // upload file ถ้ามีส่งมา
}
// echo $sql; // เพื่อตรวจสอบผลลัพท์
my_sql_query($sql);
?>
2

ถ้าผมใช้การตรวจสอบแบบนี้ล่ะครับ $photo1-6 น่ะครับ
แล้วผมก้ใช้ $uppic1-6  เพื่อใช้ในการตรวจสอบ


if(!empty($photo1))
                            {
                            $uppic1=$photo1;// คือ ถ้าตัวแปรที่รับค่าเบรารูปใหม่ไม่ว่าง
                            }
                            else
                            {
                            $uppic1=$pic1; // $pic1-6คือ ตัวแปรที่เก้บค่าชื่อรูปที่ดึงมาจากฐานข้อมูล จะทำงานในกรณีที่ ไม่มีการเลือกรูปขึ้นมาใหม่
                            }
                                if(!empty($photo2))
                                {
                                $uppic2=$photo2;
                                }
                                else
                                {
                                $uppic2=$pic2;
                                }
                                    if(!empty($photo3))
                                    {
                                    $uppic3=$photo3;
                                    }
                                    else
                                    {
                                    $uppic3=$pic3;
                                    }
                                        if(!empty($photo4))
                                        {
                                        $uppic4=$photo4;
                                        }
                                        else
                                        {
                                        $uppic4=$pic4;
                                        }
                                            if(!empty($photo5))
                                            {
                                            $uppic1=$photo6;
                                            }
                                            else
                                            {
                                            $uppic6=$pic6;
                                            }


//แล้วอัพเดทให้เป็นแบบนี้เลยได้มั้ยครับ  -->แต่ผมก้ทำแบบนี้ที่เขาแนะมาน่ะครับแต่ก้ไม่ได้เป็นค่าว่างเลยถ้าไม่อัพรูปมาครับ

print    $sql="UPDATE ads SET `pic1`='$uppic1', `pic2`='$uppic2', `pic3`='$uppic3', `pic4`='$uppic4',`pic5`='$uppic5',        `pic6`='$uppic6' where `ads`.`id_ads`='$id_ads'";



3

ลองดูสิครับ
4

ไม่ได้ครับฟอร์มไม่ส่งค่าชื่อรูปภาพมาเลยครับท่าน  555+++ ทำยังไงดีครับอาจารย์ /*แต่ชื่อรูปภาพที่ดึงมาจากฐานข้อมูลได้น่ะครับแต่เวลาส่งไปเช็คเงื่อนไข เพื่อใช้ในการอัพเดท ไม่ยักกะมีชื่อรูปภาพไปด้วยเลยงงงง*/

<? $photo1=$row[45];?>
 <input type="file" name="photo1"><input name="photo1" type="hidden" value="<? echo "$photo1";?>" /></P>
<? echo "$photo1";?>

<? $photo2=$row[46];?>
<input type="file" name="photo2" ><input name="photo2" type="hidden" value="<? echo "$photo2";?>">
<? echo "$photo2";?>

<? $photo3=$row[47];?>
<input type="file" name="photo3" > <input name="photo4" type="hidden" value="<? echo "$photo3";?>">
<? echo "$photo3";?>

<? $photo4=$row[48];?>
<input type="file" name="photo4" > <input name="photo4" type="hidden" value="<? echo "$photo4";?>">
<? echo "$photo4";?>


<? $photo5=$row[49];?>
<input type="file" name="photo5" > <input name="photo5" type="hidden" value="<? echo "$photo5";?>">
<? echo "$photo5";?>

<? $photo6=$row[50]; ?>
<input type="file" name="photo6" > <input name="photo6" type="hidden" value="<? echo "$photo6";?>">
<? echo "$photo6";?>
5

ชือไฟล์ที่อัปโหลดมา ก็อยู่ที่

$_FILES[photo1][tmp_name] ไง

เวลาตรวจสอบให้ใช้

if ($_FILES[photo1][tmp_name] != '') {
  // มีไฟล์ส่งมา
}


ถ้ายากรู้ว่ามีอะไรส่งมาบ้างก็ใช้ print_r($_FILES); เพื่อดูว่ามีไฟล์ใดๆส่งมาบ้างหรือไม่

ศึกษาเพิ่มเติมเกี่ยวกับการอัปโหลด ได้บนเว็บครับ เสียเวลาอ่านแค่ไม่กี่นาทีหรอกครับ
6
^