0

タイトル、ニュースの日付、画像を含むデータをデータベースにアップロードしていますが、更新したいときに問題に直面しています。基本的にやりたいことは、画像以外のすべての行を更新すると更新されません。基本的に更新する必要があるときに必要なのは、タイトルのみを想定して更新する必要がありますが、他のすべてのデータは同じままである必要がありますが、更新時にPCから画像を再度選択する必要があるという問題があります。私のシナリオは、パス全体ではなくdbに名前を保存し、画像を表示する必要がある場所にパスをハードコーディングすることです

ここにhtmlがあります

 <div class="row">
                            <label>Image upload</label>
                            <div class="right"><input type="file" name="file" value="<?php echo $row['images'];?>" /></div>
                        </div>

ここにphpがあります

   if(($_GET['mod']=='edit') && (isset($_POST['hidden'])))
{




    echo $_FILES["file"]["name"];
        $allowedExts = array("jpg", "jpeg", "gif", "png");
        $extension = end(explode(".", $images));
        if ((($_FILES["file"]["type"] == "image/gif")
        || ($_FILES["file"]["type"]   == "image/jpeg")
        || ($_FILES["file"]["type"]   == "image/png")
        || ($_FILES["file"]["type"]   == "image/pjpeg"))

        && in_array($extension, $allowedExts))
          {
           if ($_FILES["file"]["error"] > 0)
            {

            echo $_FILES["file"]["error"] . "<br>";
            }
          else
            {
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload-images/" . $images);
            $update="UPDATE headline SET 
                                                headline_title  = '$title',   
                                                headline_des    = '$description',   
                                                month           = '$month_name', 
                                                day             = '$day_name', 
                                                year            = '$year_name', 
                                                featured        = '$featured',
                                                headline        = '$headline',
                                                images          = '$images' 
                                                where id        = ".$_GET['id']."";
             $result = mysql_query($update);    

              }
            }
4

2 に答える 2

1

フォームを再度送信すると、ファイル入力の新しい値が になるため、空かどうかを確認し、ステータスに従って処理する必要があります

例えば

if($_FILES['file']['name'] != "")
{
      //upload the image with what ever you want 
      //move_uploaded_file($_FILES['file']['tmp_name'],$target.$image );
      //the SQL query should contain the updating the image column 
         if(($_GET['mod']=='edit') && (isset($_POST['hidden'])))
         {




echo $_FILES["file"]["name"];
    $allowedExts = array("jpg", "jpeg", "gif", "png");
    $extension = end(explode(".", $images));
    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"]   == "image/jpeg")
    || ($_FILES["file"]["type"]   == "image/png")
    || ($_FILES["file"]["type"]   == "image/pjpeg"))

    && in_array($extension, $allowedExts))
      {
       if ($_FILES["file"]["error"] > 0)
        {

        echo $_FILES["file"]["error"] . "<br>";
        }
      else
        {
        move_uploaded_file($_FILES["file"]["tmp_name"], "upload-images/" . $images);
        $update="UPDATE headline SET 
                                            headline_title  = '$title',   
                                            headline_des    = '$description',   
                                            month           = '$month_name', 
                                            day             = '$day_name', 
                                            year            = '$year_name', 
                                            featured        = '$featured',
                                            headline        = '$headline',
                                            images          = '$images' 
                                            where id        = ".$_GET['id']."";
         $result = mysql_query($update);    

          }
        }
}
else
{
      //SQL update without image 
        $update="UPDATE headline SET 
                                            headline_title  = '$title',   
                                            headline_des    = '$description',   
                                            month           = '$month_name', 
                                            day             = '$day_name', 
                                            year            = '$year_name', 
                                            featured        = '$featured',
                                            headline        = '$headline'
                                            WHERE id        = ".$_GET['id']."";
         $result = mysql_query($update);    

}

画像を編集したくない場合は、単に更新から削除し、そのために使用されるフォームを削除するか、非表示の入力のパスです

これが役立つことを願っています

あなたのコメントによると、クエリは次のようになります

        $update="UPDATE headline SET 
                                            headline_title  = '$title',   
                                            headline_des    = '$description',   
                                            month           = '$month_name', 
                                            day             = '$day_name', 
                                            year            = '$year_name', 
                                            featured        = '$featured',
                                            headline        = '$headline'
                                            WHERE id        = ".$_GET['id']."";
         $result = mysql_query($update);    

将来、コードをより読みやすく、保守しやすくするために、良い意図を使用する必要があると思います:)

于 2013-01-23T12:42:36.897 に答える