راکت

ویرایش تصویر در php

5 پاسخ

سلام دوستان برای ویرایش یه مشکلی دارم وقتی ویرایش انجام میدم به درستی انجام میشه اصلا مشکلی نیست ولی اگه موقع ویرایش عکس جدید انتخاب نکنم عکس قبلی دیگه خونده نمیشه
یعنی هر دفعه روی دکمه ویرایش میزنم حتما باید یه تصویر انتخاب کنم

کدهای من


<?php

if (isset($_GET['edit'])) {
    $id = $_GET['edit'];
    $query = mysqli_query($db, "SELECT * FROM  managecourses WHERE id= $id");

$courseInfo = mysqli_fetch_assoc($query);

?>

<div class="panel-body">
    <form method="post" action="managecourses.php" enctype="multipart/form-data">

        <input type="hidden" name="id" value="<?php echo $courseInfo['id']; ?>">

        <div class="form-group">
            <label for="exampleInputEmail1">نام دوره:</label>
            <input type="text" class="form-control" id="exampleInputEmail1" name='course' placeholder="نام دانشجو را وارد نمایید" value="<?php echo $courseInfo['course']; ?>">
        </div>
        <div class="form-group">
            <label for="exampleInputPassword1">نام استاد:</label>
            <input type="text" class="form-control" id="exampleInputPassword1" name='teachername' placeholder="رشته  را وارد نمایید" value="<?php echo $courseInfo['teacher']; ?>">
        </div>
        <div class="form-group">
            <label for="exampleInputEmail1">مدت دوره:</label>
            <input type="text" class="form-control" id="exampleInputEmail1" name='modatzaman' placeholder="نمره  را وارد نمایید" value="<?php echo $courseInfo['time']; ?>">
        </div>
        <div class="form-group">
            <label for="exampleInputEmail1">توضیحات:</label>
            <textarea name='comment' value="<?php echo $courseInfo['comment']; ?>" class="form-control"></textarea>
        </div>
        <div class="form-group">
            <label for="exampleInputFile">آپلود عکس:</label>
            <input type="file" name="new-image" id="exampleInputFile" class="form-control">
            <input type="hidden" name="upload" value="<?php echo $courseInfo['image']; ?>" class="form-control">
            <img src="../uploads/<?php echo $courseInfo['image']; ?>" width="150px" height="150px">

        </div>

        <button type="submit" name="edit_button" class="btn btn-info">ثبت اطلاعات جدید</button>
    </form>

</div>

<?php } ?>

    if (isset($_POST['edit_button'])) {
        $id = $_POST['id'];
        $course = $_POST['course'];
        $teacher = $_POST['teachername'];
        $time = $_POST['modatzaman'];
        $description = $_POST['comment'];

        if(!empty($_FILES['new-image']['name']))
        {
            $images = $_FILES['new-image']['name'];
            $tmp = $_FILES['new-image']['tmp_name'];
            move_uploaded_file($tmp , '../uploads/' .$images);
        }
        else
        {
            $images = $_FILES['upload'];
        }

    $updateCourse = mysqli_query($db, "UPDATE managecourses SET course = '$course' , teacher = '$teacher' , time = '$time' , comment = '$description'  , image = '$images' WHERE id = '$id' ");

    if($updateCourse){
        header("location:managecourses.php");
    }
    }
ثبت پرسش جدید

پاسخ‌ها

5
مهدی شاه عباسیان
مهدی شاه عباسیان
@shahabbasian

تخصص: برنامه نویس

برای ویرایش اگر عکس ارسال نشده بود دیگه از متغیر $_FILES استفاده نکنید
یعنی اگر عکس امده بود که خوب عکس رو قرار بدید توی $image و اگر عکس نیومده بود همون مقدار قبلی که در دیتابیس ذخیره شده رو بدید به متغیر $image
و یا اگر عکس نیومد کلا کوئری ویرایش رو بدون image انجام بدید

الف. شین.
الف. شین.
@alefsheen

تخصص: junior php developer

سلام
در اینجا:

if (!empty($_FILES['new-image']['name'])) {
    $images = $_FILES['new-image']['name'];
    $tmp = $_FILES['new-image']['tmp_name'];
    move_uploaded_file($tmp , '../uploads/' .$images);
}
else {
    $images = $_FILES['upload'];
}

اشتباه کردی! متغیر $image رو اینطور مقدار دهی کن:

$image = $_POST['upload'];

شاید پاسخ شما همین‌جا باشد

فرشید مرادی
فرشید مرادی
@eniack

تخصص: noob

سلام ، یک راه حل ساده !!
داخل فایل های html یک input با تایپ hidden تعریف کنید با نام last_img و مقدار فعلی عکس رو داخلش قرار بدید ، بعد از ارسال فرم کد زیر رو بنویسید آپدیت عکس یا مقدار دهی قبلی

$file_image = $_FILES['file_image']['name'];
    $temp = $_FILES['file_image']['tmp_name'];
    $size = $_FILES['file_image']['name'];

    if (isset($_POST['last_img'])) {
        $last_image = $_POST['last_img'];
    }

    if ($file_image != "") {
        move_uploaded_file($temp, "../uploads/" . $file_image);
    } else {
        $file_image = $last_image;
        move_uploaded_file($temp, ".../uploads/" . $file_image);
    }

این کد رو جایگزین کدی که واسه گرفتن و آپلود کردن عکس میکنید قرار بدید

paradox
paradox
@wxyz4367

@alefsheen
سلام اینکارو انجام دادم
مشکلی که پیش اومد دیگه تصویر جدید که میزارم اپدیت نمیشه

paradox
paradox
@wxyz4367

این الان مشکلش چیه که اصلا اپدیت نمیکنه؟

<?php

if(isset($_GET['edit']))
{
    $id = $_GET['edit'];
    $query = mysqli_query($db , "SELECT * FROM `mangecourses` WHERE id = $id");
    $courcseInfo = mysqli_fetch_assoc($query) 

?>

    <div class=" col-lg-12 content">
         <div class="col-lg-6  banner">
            <p>فرم ویرایش</p>
          </div>
          <div class=" col-lg-6  boxform">
               <form method="post" action="managecourses.php" enctype="multipart/form-data">
                <input type="hidden" value="<?php echo $courcseInfo['id'] ?>" name="id">
                 <div class="form-group">
                      <label>نام دوره:</label>
                      <input type="text" name="course" class="form-control" value="<?php echo $courcseInfo['course'] ?>">
                 </div>
                 <div class="form-group">
                  <label>نام استاد:</label>
                  <input type="text" name="teacher" class="form-control" value="<?php echo $courcseInfo['teacher'] ?>">
                  </div>

                 <div class="form-group">
                  <label>مدت دوره:</label>
                  <input type="text" name="time" class="form-control" value="<?php echo $courcseInfo['time'] ?>">
                  </div>

                       <div class="form-group">
                         <label for="exampleInputPassword1">توضیحات:</label>
                          <textarea class="form-control" name="description" value="<?php echo $courcseInfo['description'] ?>"></textarea>
                        </div>

                        <div class="form-group">

                             <label> عکس:</label>

                             <input type="file" name="new-image">

                             <input type="hidden" name="image" value="<?php echo $courcseInfo['image'] ?>">  

                         </div>

                 <div class="form-group">
                   <center><button class="btn btn-success" name="editCourse" type="submit">ویرایش</button></center> 
                 </div>
               </form>
          </div>
     </div>

<?php  } ?>

  </section>

<?php

//edit

if(isset($_POST['editCourse'])) {
    $id = $_POST['id'];
    $course = $_POST['course'];
    $teacher = $_POST['teacher'];
    $time = $_POST['time'];
    $descript = $_POST['description'];

        if(!empty($_FILES['new-image']['name']))
        {
            $images = $_FILES['new-image']['name'];
            $tmp = $_FILES['new-image']['tmp_name'];
            move_uploaded_file($tmp , '../upload/' .$images);
        }
        else
        {
            $images = $_POST['image'];
        }

    $update = mysqli_query($db, " UPDATE mangecourses SET course = '$course' , teacher = '$teacher' , time = '$time' , description = '$descript' , image = '$images WHERE id = $id ");

    if ($update) {
        header('location:managecourses.php');
    }
}

?>

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام