尝试在PHP中使用$ _FILE时出现“未定义的索引”错误

时间:2012-01-04 13:47:13

标签: php undefined-index

我可以轻松地将文件上传到数据库但是当我想编辑文件时,我收到了未定义的错误。这是代码:

product_update.php 这是我能够修改数据库中特定记录的所有现有信息的地方。

<?php
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="purchase_try"; // Database name 
$tbl_name="product_list"; // Table name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");


// get value of id that sent from address bar
//$id = $_GET['AutoID'];

if(isset($_GET['AutoID'])){
$id= $_GET['AutoID'];
}
// Retrieve data from database 
$sql="SELECT * FROM $tbl_name WHERE AutoID = ".$id;

$result=mysql_query($sql);

$rows=mysql_fetch_array($result, 1);

?>


            <form name="form1" method="post" action="update_post.php"/>
            <table width="600" border="0" cellspacing="1" cellpadding="0">

            <tr>
            <td>
            <table width="100%" height="87" border="1" cellpadding="3" cellspacing="0">
            <tr>
            <td colspan="3"><table width="100%" height="87" border="1" cellpadding="3" cellspacing="0">

            <tr>
            <td align="center"><strong>Title</strong></td>
            <td width="144" align="center"> : </td>
            <td > <input name="title_product" type="text" id="title_product" value="<?php echo $rows['title_product']; ?>" size="90" /></td>
            </tr>

            <tr>
            <td align="center"><p><strong>Description</strong></p></td>
            <td align="center"> : </td>
            <td><input name="description_product" type="text" id="description_product" value="<?php echo $rows['description_product']; ?>" />
            </td>
            </tr>

            <tr>
            <td width="169" align="center"><p><strong>Start Date</strong></p></td>
            <td align="center"> : </td>
            <td><input name="start_date" type="text" id="start_date" value="<?php echo $rows['start_date']; ?>" size="40" /> </td>
            </tr>

            <tr>
            <td width="169" align="center"><p><strong>End Date</strong></p></td>
            <td align="center"> : </td>
            <td><input name="end_date" type="text" id="end_date" value="<?php echo $rows['end_date']; ?>" size="40" /></td>
            </tr>

            <tr>
            <td width="169" align="center"><strong>Price Before</strong></td>
            <td align="center"> : </td>
            <td> <input name="price_before" type="text" id="price_before" value="<?php echo $rows['price_before']; ?>" size="40" /> </td>
            </tr>

            <tr>
            <td width="169" align="center"><strong>Price After </strong></td>
            <td align="center"> : </td>
            <td> <input name="price_after" type="text" id="price_after" value="<?php echo $rows['price_after']; ?>" size="40" /> </td>
            </tr>

            <tr>
            <td width="169" align="center"><strong>Percentage </strong></td>
            <td align="center"> : </td>
            <td><input name="percentage" type="text" id="percentage" value="<?php echo $rows['percentage']; ?>" size="40" /></td>
            </tr>

            <tr>
            <td width="169" align="center"><strong>Edit Uploaded Images?<!-- <a href="image_edit.php?AutoID=<?PHP //echo $rows['AutoID'];?>">Click here.</a> --></strong></td>
          < <td align="center"> : </td>
            <td><input name="ufile1" type="file" id="ufile1" size="50" /></td>
            </tr>

            <tr>
          <td width="169" align="center"><strong>Image 2 </strong></td>
            <td align="center"> : </td>
            <td><input name="ufile2" type="file" id="ufile2" size="50" /></td>
            </tr>

            <tr>
            <td width="169" align="center"><strong>Image 3 </strong></td>
            <td align="center"> : </td>
            <td><input name="ufile3" type="file" id="ufile3" size="50" /></td> 
            </tr>

            <tr>
            <td width="169" align="center"><strong>Date Created</strong></td>
            <td align="center"> : </td>
            <td><input name="date_created" type="text" id="date_created" value="<?php echo $rows['date_created']; ?>" /> </td>
            </tr>

            <tr>
            <td width="169" align="center"><strong>Time Created</strong></td>
            <td align="center"> : </td>
            <td><input name="time_created" type="text" id="time_created" value="<?php echo $rows['time_created']; ?>" /></td>
            </tr>

        <td colspan="3"><p align="right">
        <input name="AutoID" type="hidden" id="AutoID" value="<?php echo $rows['AutoID']; ?>" />
        <input type="submit" name="Submit" value="Submit" />
        </p></td>
        </tr>
        </table></td>
</tr>
</table>
</td>

</tr>
</td>
</form>

<?php

// close connection 
mysql_close();

?>

然后,Update_Post.php 此文件获取FORM的所有值并更新数据库。其他字段更新但文件上传不起作用。它给出了错误。

<?php
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="purchase_try"; // Database name 
$tbl_name="product_list"; // Table name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
// update data in mysql database

?> 
<?PHP
 if(isset($_POST['Submit'])) 
    {



    $title          = $_POST['title_product'];
    $description    = $_POST['description_product'];

    $start_date     = $_POST['start_date'];
    $end_date       = $_POST['end_date'];
    $price_before   = $_POST['price_before'];
    $price_after    = $_POST['price_after'];
    $percentage     = $_POST['percentage'];

    $image_1        = $_FILES['ufile1']['name'];
    $image_2        = $_FILES['ufile2']['name'];
    $image_3        = $_FILES['ufile3']['name'];

    $date_created   = $_POST['date_created'];
    $time_created   = $_POST['time_created'];

    $id                 = $_POST['AutoID'];

    $sql="UPDATE $tbl_name SET title_product='".$title."',
                                    description_product='".$description."',
                                    start_date='".$start_date."',
                                    end_date ='".$end_date."',
                                    price_before='".$price_before."',
                                    price_after='".$price_after."',
                                    percentage='".$percentage."',

                                    date_created='".$date_created."',
                                    time_created='".$time_created."' WHERE AutoID=".$id; 

    $result=mysql_query($sql);
//  image_1 = '$image_1',
    //                              image_2 = '$image_2',
    //                              image_3 = '$image_3',

    //$sql_insert = "INSERT INTO $tbl_name(image_1, image_2, image_3)VALUES ('$image_1', 'image_2', 'image_3') WHERE AutoID= ".$id;

    //$sql_result = mysql_query($sql_insert);
    // if successfully updated. 
    if($result){

                    $path1= "upload/".$_FILES['ufile1']['name'];
                    $path2= "upload/".$_FILES['ufile2']['name'];
                    $path3= "upload/".$_FILES['ufile3']['name'];

                    //copy file to where you want to store file
                    copy($_FILES['ufile1']['tmp_name'], $path1);
                    copy($_FILES['ufile2']['tmp_name'], $path2);
                    copy($_FILES['ufile3']['tmp_name'], $path3);
                    //$_FILES['ufile']['name'] = file name
                    //$_FILES['ufile']['size'] = file size
                    //$_FILES['ufile']['type'] = type of file

                    // Use this code to display the error or success.

                    $filesize1=$_FILES['ufile1']['size'];
                    $filesize2=$_FILES['ufile2']['size'];
                    $filesize3=$_FILES['ufile3']['size'];

                    //all 3 must be selected to upload.
                    if($filesize1 || $filesize2 || $filesize3 != 0) 
                    {
                    $sql_insert = "INSERT INTO $tbl_name(image_1, image_2, image_3)VALUES ('$image_1', 'image_2', 'image_3') WHERE AutoID= ".$id;

                    $sql_result = mysql_query($sql_insert);
                    echo "We have recieved your files";
                    }

                    else {
                    echo "ERROR.....";
                    }
                    echo "Successful";

                    //header("location:user_history2.php");
                    } 
    }

    else 
    {
    echo "Update Unsuccessful.";
    }

?>

The is Undefined index : ufile

2 个答案:

答案 0 :(得分:3)

您的表单需要enctype="multipart/form-data"属性才能上传文件。

更多信息here

答案 1 :(得分:2)

上传文件时,您必须为表单指定enctype="multipart/form-data"

<form name="form1" method="post" action="update_post.php" enctype="multipart/form-data"/>
...
</form>