0

コードに問題があります。イメージを更新できません。

ここに私の完全なコードがあります:

index.php

//this link will post my data to next page
<a href="updatepage.php?code=<?php echo $row['name']; ?>">update</a> 

updatepage.php

 //this page will get all data that want to update...
 <?php
 include("config.php");
 $name=$_GET['code'];
 $sql1  = "select * from imagename where name='$name'";
 $result = mysql_query($sql1) or die(mysql_error());
 $row=mysql_fetch_array($result);?>
<form name="form1" method="post" action="processupdatepage.php"  class="formposition" enctype="multipart/form-data" >
  <table>
   <tr><td>
    <input type="hidden" name="id" value="<?php echo $row['id']; ?>" /></td></tr>
   <tr><td width="98">Image</td><td width="288">
  //This is where I have problem, I can't get my image value but other data value work very well.....
    <input type="file" name="image" value="<?php echo $row['image'];?>" /></td></tr><br/> 
   <tr><td>nane</td><td><input type="text" name="name" value="<?php echo $row['name']; ?>"/></td></tr><br/>       
   <tr><td></td> <td colspan="2">
    <input type="submit" name="submit" value="Save" />  </td></tr>
  </table>
</form>

わかった。今、これは私のプロセスファイルです:

processupdatepage.php

<?php
include("config.php");
$id=$_POST['id'];
$image=$_FILES['image']['name'];
$name=$_POST['name'];
$target = "images/"; 
$target = $target . basename( $_FILES['image']['name']);
$query = "UPDATE imagename SET name='$name', image='$image' WHERE id='$id'";
$bb = mysql_query($query) or die(mysql_error());
if($bb)
{
//Writes the photo to the server 
    if(move_uploaded_file($_FILES['image']['tmp_name'], $target)) 
    {  
      $sql001="UPDATE imagename SET image='$image' WHERE image='$image'";
    mysql_query($sql001);
    } else { } 
    header("Location:index.php");
}
else
{
    echo "Could not be updated";
}
?>

更新できますが、画像を選択する必要があります。画像を選択していない場合、データベースの画像フィールドは空になりますが、他のデータの更新は問題ありません...

4

3 に答える 3

0

問題はここにあると思います:

<input type="file" name="image" value="<?php echo $row['image'];?>" />

参照ボタンをクリックすると、画像をアップロードできます。それで、あなたはそのように何をしようとしていますか?すでにアップロードされている画像を表示したい場合は、次を使用できます。

$img_path = 'get image path from database entry';
<img src= "<?php echo $img_path; ?>"/>
于 2012-12-18T14:06:37.077 に答える
0

イメージをアップロードする完全なコードは次のとおりです。これはテスト済みで動作しますが、「upload」というディレクトリが必要です (このコードではフォルダは作成されません)。

イメージ パスのみをデータベースに保存することをお勧めします。

<?php
if(isset($_POST['submit'])){
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/png")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 200000))
    {
        if ($_FILES["file"]["error"] > 0)
        {
            echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
        }
        else
        {
            if (file_exists("upload/" . $_FILES["file"]["name"])){
                echo $_FILES["file"]["name"] . " already exists. ";
            }
            else{
                move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
                echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
                    // HERE YOU CAN WRITE YOU INSERT INTO MYSQL CODE
                    //SOMETHING LIKE THIS:
                    $path = 'assets/article_images/'.$article_id.'/'.$_FILES["image_file"]["name"];
                    $statement1 = "INSERT INTO image_article (article_id, image_path) values ('$article_id', '$path') ";
                    $query_result = mysql_query($statement1) or die($statement1."mysql error<br/><br/>".mysql_error());
                    if($query_result==1){
                        echo 'Image uploaded';
                    }
            }
        }
    }
    else
    {
    echo "Invalid file";
    }
}

?>

<html>
<body>

<form action="index.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>
于 2012-12-18T14:07:20.823 に答える
0

の値を<input type="file">プログラムで変更することはできません。ファイル選択ダイアログをポップアップするデフォルトの動作をトリガーすることによってのみ。

コード例からわかることは、値をデータベースから取得したとおりに、ファイル フォーム コントロール要素に直接関連付けたいということです。では、なぜ同じバックを保存するのでしょうか。それでも、これを行いたい場合は、保存される値で非表示の要素を使用できます。ただし、ユーザーに変更させたくない場合は、フォームにレンダリングせず、更新クエリから除外して、変更されないままにします。

また、投稿を処理するときにいくつかのロジックを追加し、ファイルが選択されていない場合は更新クエリから「画像」フィールドを除外することもできます。

于 2012-12-18T13:54:33.737 に答える