-2

I'm having problem trying to edit/update my product page which has multiple images using php prepared statement. if i have only one image in the image field it will update and unlink the oldimage successfully but since i have added 4(four) more images, updating this images is giving me tough time. Please can someone correct me where i'm wrong on this?

Below are the INSERT PAGE AND EDIT PAGE

Here is the code i used to insert product to database

<?php
    include 'admin_config.php';

    if (isset($_POST['view'])) {

      $id           = $_POST['id'];
      $title        = $_POST['title'];
      $make         = $_POST['make'];
      $model        = $_POST['model'];
      $price        = $_POST['price'];
      $loc          = $_POST['loc'];
      $yr           = $_POST['yr'];
      $condi        = $_POST['condi'];
      $trans        = $_POST['trans'];
      $mileage      = $_POST['mileage'];
      $isfeatured   = $_POST['isfeatured'];
      $wheel        = $_POST['wheel'];
      $details      = $_POST['details'];

      $photo=$_FILES['image']['name'];
      $upload="uploads/".$photo;

      $photo2=$_FILES['image2']['name'];
      $upload2="uploads/".$photo2;

      $photo3=$_FILES['image3']['name'];
      $upload3="uploads/".$photo3;

      $photo4=$_FILES['image4']['name'];
      $upload4="uploads/".$photo4;

      $photo5=$_FILES['image5']['name'];
      $upload5="uploads/".$photo5;

      // form validation: ensure that the form is correctly filled
      $sql = "INSERT INTO vehicle     (id,title,make,model,price,loc,yr,condi,trans,mileage,isfeatured,wheel,details,photo,photo2,photo3,photo4,photo5) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

    $stmt=$conn->prepare($sql);
    $stmt->bind_param("isssssisssisssssss",$id,$title,$make,$model,$price,$loc,$yr,$condi,$trans,
    $mileage,$isfeatured,$wheel,$details,$upload,$upload2,$upload3,$upload4,$upload5);       
    $stmt->execute();
    move_uploaded_file($_FILES['image']['tmp_name'], $upload);
    move_uploaded_file($_FILES['image2']['tmp_name'], $upload2);
    move_uploaded_file($_FILES['image3']['tmp_name'], $upload3);
    move_uploaded_file($_FILES['image4']['tmp_name'], $upload4);
    move_uploaded_file($_FILES['image5']['tmp_name'], $upload5);

    $_SESSION['message'] = "Vehicle Added Successfully!"; 
   }

   ?>

    <section class="section">
      <div class="row">

        <div class="col-lg-12">

          <?php include ('message.php'); ?>

            <div class="card">
              <div class="card-body">
                <a href="add_property.php" class="btn btn-primary m-3" width="200px" >Add New Vehicle</a>
                <hr>

                <!-- No Labels Form -->
                  <form action="./add_vehicle.php" method="POST" class="row g-3" enctype="multipart/form-data">

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

                    <div class="col-md-6">
                        <label for="title" class="form-label">Title</label>
                        <input type="text" name="title" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="make" class="form-label">Make</label>
                        <input type="text" name="make" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="model" class="form-label">Model</label>
                        <input type="text" name="model" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="price" class="form-label">Price</label>
                        <input type="text" name="price" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="loc" class="form-label">Location</label>
                        <input type="text" name="loc" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="yr" class="form-label">Year</label>
                        <input type="text" name="yr" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="condi" class="form-label">Condition</label>
                        <select id="inputState" name="condi" class="form-select">
                            <option selected disabled value="">Select Condition</option>
                            <option value="New">New</option>
                            <option value="Foreign Used">Foreign Used</option>
                            <option value="Nigeria Used">Nigeria Used</option>
                        </select>
                    </div>

                    <div class="col-md-6">
                        <label for="trans" class="form-label">Transmission</label>
                        <select id="inputState" name="trans" class="form-select">
                            <option selected disabled value="">Select Transmission</option>
                            <option value="Automatic">Automatic</option>
                            <option value="Manual">Manual</option>
                        </select>
                    </div>

                    <div class="col-md-6">
                        <label for="mileage" class="form-label">Mileage</label>
                        <input type="text" name="mileage" class="form-control">
                    </div>

                    <div class="col-md-6">
                        <label for="isfeatured" class="form-label">isFeatured</label>
                        <select id="inputState" name="isfeatured" class="form-select">
                            <option selected disabled value="">Select isFeature</option>
                            <option value="1">Yes</option>
                            <option value="0">No</option>
                        </select>
                    </div>

                    <div class="col-md-6">
                        <label for="wheel" class="form-label">Wheel</label>
                        <input type="text" name="wheel" class="form-control">
                    </div>

                    <div class="col-md-12">
                        <label for="details" class="form-label">Description</label>
                        <textarea id="default" class="form-control" rows="8" name="details"></textarea>
                    </div><br><br>

                    <div class="col-md-6 justify-content-center">
                        <label for="customFile" class="form-label">Photo</label>
                        <input type="file" name="image" class="custom-file">
                    </div><br><br>

                    <div class="col-md-6 justify-content-center">
                        <label for="customFile" class="form-label">Photo2</label>
                        <input type="file" name="image2" class="custom-file">
                    </div><br><br>

                    <div class="col-md-6 justify-content-center">
                        <label for="customFile" class="form-label">Photo3</label>
                        <input type="file" name="image3" class="custom-file">
                    </div><br><br>

                    <div class="col-md-6 justify-content-center">
                        <label for="customFile" class="form-label">Photo4</label>
                        <input type="file" name="image4" class="custom-file">
                    </div><br><br>

                    <div class="col-md-6 justify-content-center">
                        <label for="customFile" class="form-label">Photo5</label>
                        <input type="file" name="image5" class="custom-file">
                    </div><br><br>

                    <div class="text-center">
                        <input type="submit" name="view" class="btn btn-primary btn-block" value="Add Product">
                        <input type="reset" name="clear" class="btn btn-secondary btn-block" value="Reset Product">
                    </div>
                  </form>
                  <!-- End No Labels Form -->

              </div>
            </div>

        </div>

      </div>
    </section>

  </main><!-- End #main -->

AND HERE IS MY EDIT PAGE

<?php

include 'admin_config.php';

$update=false;
$id           = '';
$title        = '';
$make         = '';
$model        = '';
$price        = '';
$loc          = '';
$yr           = '';
$condi        = '';
$trans        = '';
$mileage      = '';
$isfeatured   = '';
$wheel        = '';
$details      = '';
$photo        = '';
$photo2        = '';
$photo3        = '';
$photo4        = '';
$photo5        = '';


if(isset($_GET['id'])) {
 $id=$_GET['id'];

$sql="SELECT * FROM vehicle WHERE id=?";
$stmt=$conn->prepare($sql);
$stmt->bind_param("i", $id);
$stmt->execute();
$result=$stmt->get_result();
$row=$result->fetch_assoc();

$id           = $row['id'];
$title        = $row['title'];
$make         = $row['make'];
$model        = $row['model'];
$price        = $row['price'];
$loc          = $row['loc'];
$yr           = $row['yr'];
$condi        = $row['condi'];
$trans        = $row['trans'];
$mileage      = $row['mileage'];
$isfeatured   = $row['isfeatured'];
$wheel        = $row['wheel'];
$details      = $row['details'];
$photo        = $row['photo'];  
$photo2        = $row['photo2']; 
$photo3        = $row['photo3']; 
$photo4        = $row['photo4']; 
$photo5        = $row['photo5'];  

}


if (isset($_POST['update'])) {

$id           = $_POST['id'];
$title        = $_POST['title'];
$make         = $_POST['make'];
$model        = $_POST['model'];
$price        = $_POST['price'];
$loc          = $_POST['loc'];
$yr           = $_POST['yr'];
$condi        = $_POST['condi'];
$trans        = $_POST['trans'];
$mileage      = $_POST['mileage'];
$isfeatured   = $_POST['isfeatured'];
$wheel        = $_POST['wheel'];
$details      = $_POST['details'];
$oldimage     = $_POST['oldimage'];
$oldimage2     = $_POST['oldimage2'];
$oldimage3     = $_POST['oldimage3'];
$oldimage4     = $_POST['oldimage4'];
$oldimage5     = $_POST['oldimage5'];

if(isset($_FILES['image']['name'])&&($_FILES['image']['name']!="")){
 $newimage="uploads/".$_FILES['image']['name'];
 unlink($oldimage);
 move_uploaded_file($_FILES['image']['tmp_name'], $newimage);
 } 
if(isset($_FILES['image2']['name2'])&&($_FILES['image2']['name2']!="")){
 $newimage2="uploads/".$_FILES['image2']['name2'];
 unlink($oldimage2);
 move_uploaded_file($_FILES['image2']['tmp_name2'], $newimage2);
 } 
if(isset($_FILES['image3']['name3'])&&($_FILES['image3']['name3']!="")){
 $newimage3="uploads/".$_FILES['image3']['name3'];
 unlink($oldimage3);
 move_uploaded_file($_FILES['image']['tmp_name'], $newimage3);
 } 
if(isset($_FILES['image4']['name4'])&&($_FILES['image4']['name4']!="")){
 $newimage4="uploads/".$_FILES['image4']['name4'];
 unlink($oldimage4);
 move_uploaded_file($_FILES['image4']['tmp_name4'], $newimage4);
 } 
if(isset($_FILES['image5']['name5'])&&($_FILES['image5']['name5']!="")){
 $newimage5="uploads/".$_FILES['image5']['name5'];
 unlink($oldimage);
 move_uploaded_file($_FILES['image5']['tmp_name5'], $newimage5);
 } 
 else{
   $newimage=$oldimage;
   $newimage2=$oldimage2;
   $newimage3=$oldimage3;
   $newimage4=$oldimage4;
   $newimage5=$oldimage5;
  }

 // form validation: ensure that the form is correctly filled
 $sql = "UPDATE vehicle SET title=?,make=?,model=?,price=?,loc=?,yr=?,condi=?,trans=?,mileage=?,isfeatured=?,
wheel=?,details=?,photo=?,photo2=?,photo3=?,photo4=?,photo5=? WHERE id=?";
  $stmt=$conn->prepare($sql);
  $stmt
>bind_param("sssssisssisssssssi",$title,$make,$model,$price,$loc,$yr,$condi,$trans,$mileage,$isfeatured,
$wheel,$details,$upload,$upload2,$upload3,$upload4,$upload5,$id);       
  $stmt->execute();

  $_SESSION['message'] = "Vehicle Updated Successfully!"; 

  }

 ?>


<section class="section">
  <div class="row">

    <div class="col-lg-12">

      <?php include ('message.php'); ?>

        <div class="card">
          <div class="card-body">
            <a href="edit_vehicle.php" class="btn btn-primary m-3" width="200px" >Add New Vehicle</a>
            <hr>

              <!-- No Labels Form -->
              <form action="./edit_vehicle.php" method="POST" class="row g-3" enctype="multipart/form-data">

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

                <div class="col-md-6">
                    <label for="title" class="form-label">Title</label>
                    <input type="text" name="title" class="form-control" value="<?=$title; ?>">
                </div>

                <div class="col-md-6">
                    <label for="make" class="form-label">Make</label>
                    <input type="text" name="make" class="form-control" value="<?=$make; ?>">
                </div>

                <div class="col-md-6">
                    <label for="model" class="form-label">Model</label>
                    <input type="text" name="model" class="form-control" value="<?=$model; ?>">
                </div>

                <div class="col-md-6">
                    <label for="price" class="form-label">Price</label>
                    <input type="text" name="price" class="form-control" value="<?=$price; ?>">
                </div>

                <div class="col-md-6">
                    <label for="loc" class="form-label">Location</label>
                    <input type="text" name="loc" class="form-control" value="<?=$loc; ?>">
                </div>

                <div class="col-md-6">
                    <label for="yr" class="form-label">Year</label>
                    <input type="text" name="yr" class="form-control" value="<?=$yr; ?>">
                </div>

                <div class="col-md-6">
                    <label for="condi" class="form-label">Condition</label>
                    <input type="text" name="condi" class="form-control" value="<?=$condi; ?>">
                </div>

                <div class="col-md-6">
                    <label for="trans" class="form-label">Transmission</label>
                    <input type="text" name="trans" class="form-control" value="<?=$trans; ?>">
                </div>

                <div class="col-md-6">
                    <label for="mileage" class="form-label">Mileage</label>
                    <input type="text" name="mileage" class="form-control" value="<?=$mileage; ?>">
                </div>

                <div class="col-md-6">
                    <label for="isfeatured" class="form-label">isFeatured</label>
                    <input type="text" name="isfeatured" class="form-control" value="<?=$isfeatured; ?>">
                </div>

                <div class="col-md-6">
                    <label for="wheel" class="form-label">Wheel</label>
                    <input type="text" name="wheel" class="form-control" value="<?=$wheel; ?>">
                </div>

                <div class="col-md-12">
                    <label for="details" class="form-label">Description</label>
                    <textarea id="default" class="form-control" rows="8"><?=$details; ?></textarea>
                </div><br><br>

                <div class="col-md-6 justify-content-center">
                    <input type="hidden" name="oldimage" value="<?= $photo; ?>">
                    <input type="file" name="image" class="custom-file">
                    <img src="<?= $photo; ?>" width="150" class="img-thumbnail">
                </div><br><br>

                <div class="col-md-6 justify-content-center">
                    <input type="hidden" name="oldimage2" value="<?= $photo2; ?>">
                    <input type="file" name="image2" class="custom-file">
                    <img src="<?= $photo2; ?>" width="150" class="img-thumbnail">
                </div><br><br>

                <div class="col-md-6 justify-content-center">
                    <input type="hidden" name="oldimage3" value="<?= $photo3; ?>">
                    <input type="file" name="image3" class="custom-file">
                    <img src="<?= $photo3; ?>" width="150" class="img-thumbnail">
                </div><br><br>

                <div class="col-md-6 justify-content-center">
                    <input type="hidden" name="oldimage4" value="<?= $photo4; ?>">
                    <input type="file" name="image4" class="custom-file">
                    <img src="<?= $photo4; ?>" width="150" class="img-thumbnail">
                </div><br><br>

                <div class="col-md-6 justify-content-center">
                    <input type="hidden" name="oldimage5" value="<?= $photo5; ?>">
                    <input type="file" name="image5" class="custom-file">
                    <img src="<?= $photo5; ?>" width="150" class="img-thumbnail">
                </div><br><br>

                <div class="text-center">
                    <input type="submit" name="update" class="btn btn-primary btn-block" value="Update Vehicle">
                    <input type="reset" name="clear" class="btn btn-secondary btn-block" value="Reset Vehicle">
                </div>
              </form>
              <!-- End No Labels Form -->
          </div>
        </div>

    </div>

  </div>
</section>
Barmar
  • 741,623
  • 53
  • 500
  • 612
Abuchi
  • 1
  • 3

1 Answers1

-1

The else block is only connected to the last if block for image5.

Each if statement for an image should have its own else to set the corresponding $newimageX to $oldimageX.

if(isset($_FILES['image']['name'])&&($_FILES['image']['name']!="")){
    $newimage="uploads/".$_FILES['image']['name'];
    unlink($oldimage);
    move_uploaded_file($_FILES['image']['tmp_name'], $newimage);
} else {
    $newimage = $oldimage;
}

if(isset($_FILES['image2']['name'])&&($_FILES['image2']['name']!="")){
    $newimage2="uploads/".$_FILES['image2']['name'];
    unlink($oldimage2);
    move_uploaded_file($_FILES['image2']['tmp_name'], $newimage2);
} else {
    $newimage2 = $oldimage2;
}

if(isset($_FILES['image3']['name'])&&($_FILES['image3']['name']!="")){
    $newimage3="uploads/".$_FILES['image3']['name'];
    unlink($oldimage3);
    move_uploaded_file($_FILES['image']['tmp_name'], $newimage3);
} else {
    $newimage3 = $oldimage3;
}

if(isset($_FILES['image4']['name'])&&($_FILES['image4']['name']!="")){
    $newimage4="uploads/".$_FILES['image4']['name'];
    unlink($oldimage4);
    move_uploaded_file($_FILES['image4']['tmp_name'], $newimage4);
} else {
    $newimage4 = $oldimage4;
}

if(isset($_FILES['image5']['name'])&&($_FILES['image5']['name']!="")){
    $newimage5="uploads/".$_FILES['image5']['name'];
    unlink($oldimage);
    move_uploaded_file($_FILES['image5']['tmp_name'], $newimage5);
} else {
    $newimage5 = $oldimage5;
}
Barmar
  • 741,623
  • 53
  • 500
  • 612
  • Thank alot but when i edited and submit, i can't find it in the database.....seems i made a mistake somewhere – Abuchi Jan 26 '23 at 22:21
  • There was too much code for me to wade through, this was the only part that seemed obviously wrong. – Barmar Jan 26 '23 at 22:23
  • Thanks so much Barmar, it's just that when i edit and submit it disappeared from the database but i really appreciate it that you'd identified my problem. i'm cross-checking to discover why it's not submitting to database after editing. – Abuchi Jan 26 '23 at 22:36
  • You should enable mysqli error reporting. See https://stackoverflow.com/questions/22662488/how-to-get-mysqli-error-in-different-environments – Barmar Jan 26 '23 at 23:49
  • Thanks so much but after adding the error reporting, it's displaying this error message (Warning: unlink(): Invalid argument in ......) across all the lines i used unlink(oldimage); Please do you have any idea what this error mean? Warning: unlink(): Invalid argument – Abuchi Jan 27 '23 at 09:14
  • Check all the `$oldimageX` variables, make sure they're not empty. You shouldn't try to unlink the old image if it isn't already set. – Barmar Jan 27 '23 at 16:28
  • I'd corrected the error, the error was from the line of bind_param. i changed the $uploadx to $newimagex and everything is now working fine. Thanks so much Barmar. – Abuchi Jan 27 '23 at 23:26