0

データベースのレコードを更新しようとしています。このコードは、ユーザーが Web サイトのエントリを更新し、画像を編集するオプションを使用できるようにすることを目的としています。このコードを最初にテストしていたとき、問題なく動作しました。画像を選択すると画像が更新され、画像を選択しないと更新に含まれません。このコードを必要なページに移動すると、機能しなくなりました。ユーザーがアップロードする画像を選択していないかのように、常にそれを読んでいます。テスト コードとこのコードの間で変更された唯一の点は、データベース内の名前と、変数 $title および $description に対する mysql_real_escape_string() の追加です。

これが私にとってうまくいかないPHPコードです:

<?php
require_once ("connect.php");
if (isset($_POST['description'])) {
    $id = $_GET['id'];
    $title = $_POST['title'];
    $description = $_POST['description'];
    $title = mysql_real_escape_string($title);
    $description = mysql_real_escape_string($description);
    $target = "../images/contests/";
    $target = $target.basename( $_FILES['image']['name']);
    $ok=1;

    if($_FILES['image']['name'] == "") {
        $query = "UPDATE tbl_contests SET contests_title='$title', contests_description='$description' WHERE contests_id='$id'";
        $result = mysql_query ($query);
            if ($result) {
            header ("Location: contests.php?=noimage");
            exit ();
        } else {
            header ("Location: contests.php?=error");
            exit ();
        }
    } else {
        if ($ok==0){
            header("Location: contests.php?=error");
        } else {
            if(move_uploaded_file($_FILES['image']['tmp_name'], $target)){
                echo "<p>Your upload was sucessful.</p>";
                $query = "UPDATE tbl_contests SET contests_title='$title', contests_description='$description', contests_image='$target' WHERE contests_id='$id'";
                $result = mysql_query ($query);
                if ($result) {
                    header ("Location: contests.php?=image");
                    exit ();
                } else {
                    header ("Location: contests.php?=error");
                    exit ();
                }
            }
        }
    } 
}
?>

上記のコードに関連するフォームは次のとおりです。

<?php
    $postnum = $_GET['id'];
    $query = "SELECT * FROM tbl_contests WHERE contests_id=".$postnum;
    $result= mysql_query($query);
    $row = mysql_fetch_array($result);
    $path = "../images/contests/";
    ?>

    <form action="update-past.php?id=<?php print $row[contests_id]; ?>" method="post" id="updatepast">
    <br /><label>Title:</label> <p><input type="text" name="title" id="title" class="input" value="<?php print $row[contests_title]; ?>" /></p>
    <?php if ($row['contests_image'] == !null) { ?>
    <p><img src="<?php print $path.$row['contests_image']; ?>" width="425" height="500" /></p>
    <br /><label>Edit Image: (Optional)</label> <p><input name="image" type="file" id="image" class="file" size="50" /></p>
    <?php } else { ?>
    <br /><br /><br /><br /><label>Add Image: (Optional)</label> <p><input name="image" type="file" id="image" class="file" size="50" /></p>
    <?php } ?>
    <br /><br /><br /><br /><br /><label>Description:</label><p><textarea name="description" cols="85" id="description" class="contentinput" rows="10"><?php print $row[contests_description]; ?></textarea></p>
    <p><input type="submit" name="submit" id="button" value="Edit" /></p>
    </form>
4

1 に答える 1

1

これをフォームに追加してみてください:enctype="multipart/form-data"

フォームのコンテンツ タイプに関する読み物を以下に示します: http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2

于 2012-05-31T15:23:22.733 に答える