Modification d'un formulaire

medboy94 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour , j'ai un problème quand je veux modifié un produit il récupère le nom de l'image dans la quantité et il récupére pas l'image .

Merci

product_quantity= la quantité
product_image = l'image du produit



<?php
 include_once('includes/connect_database.php'); 
 include_once('functions.php'); 
?>
<div id="content" class="container col-md-12">
 <?php 
 
  if(isset($_GET['id'])){
   $ID = $_GET['id'];
  }else{
   $ID = "";
  }
  
  // create array variable to store category data
  $category_data = array();
   
  $sql_query = "SELECT cat_id, cat_title 
    FROM categories 
    ORDER BY cat_id ASC";
    
  $stmt_category = $connect->stmt_init();
  if($stmt_category->prepare($sql_query)) { 
   // Execute query
   $stmt_category->execute();
   // store result 
   $stmt_category->store_result();
   $stmt_category->bind_result($category_data['cat_id'], 
    $category_data['cat_title']
    );
    
  }
   
  $sql_query = "SELECT product_image FROM products WHERE product_id = ?";
  
  $stmt = $connect->stmt_init();
  if($stmt->prepare($sql_query)) { 
   // Bind your variables to replace the ?s
   $stmt->bind_param('s', $ID);
   // Execute query
   $stmt->execute();
   // store result 
   $stmt->store_result();
   $stmt->bind_result($previous_product_image);
   $stmt->fetch();
   $stmt->close();
  }
  
  
  // get currency symbol from setting table
  $sql_query = "SELECT Value 
    FROM tbl_setting 
    WHERE Variable = 'Currency'";
  
  
  $stmt = $connect->stmt_init();
  if($stmt->prepare($sql_query)) { 
   // Execute query
   $stmt->execute();
   // store result 
   $stmt->store_result();
   $stmt->bind_result($currency);
   $stmt->fetch();
   $stmt->close();
  } 
  
  
  if(isset($_POST['btnEdit'])){
   
   $product_title = $_POST['product_title'];
   $product_category_id = $_POST['$product_category_id'];
   $product_price = $_POST['product_price'];
   $serve_for = $_POST['serve_for'];
   $product_description = $_POST['product_description'];
   $product_quantity = $_POST['product_quantity'];
   
   // get image info
   $product_image = $_FILES['product_image']['name'];
   $image_error = $_FILES['product_image']['error'];
   $image_type = $_FILES['product_image']['type'];
    
   // create array variable to handle error
   $error = array();
   
   if(empty($product_title)){
    $error['product_title'] = " <span class='label label-danger'>Required!</span>";
   }
    
   if(empty($product_category_id)){
    $error['$product_category_id'] = " <span class='label label-danger'>Required!</span>";
   }    
    
   if(empty($product_price)){
    $error['product_price'] = " <span class='label label-danger'>Required!</span>";
   }else if(!is_numeric($product_price)){
    $error['product_price'] = " <span class='label label-danger'>product_price in number!</span>";
   }

   if(empty($product_quantity)){
    $error['product_quantity'] = " <span class='label label-danger'>Required!</span>";
   }else if(!is_numeric($product_quantity)){
    $error['product_quantity'] = " <span class='label label-danger'>product_quantity in number!</span>";
   }
    
   if(empty($serve_for)){
    $error['serve_for'] = " <span class='label label-danger'>Not choosen</span>";
   }   

   if(empty($product_description)){
    $error['product_description'] = " <span class='label label-danger'>Required!</span>";
   }
   
   // common image file extensions
   $allowedExts = array("gif", "jpeg", "jpg", "png");
   
   // get image file extension
   error_reporting(E_ERROR | E_PARSE);
   $extension = end(explode(".", $_FILES["product_image"]["name"]));
   
   if(!empty($product_image)){
    if(!(($image_type == "image/gif") || 
     ($image_type == "image/jpeg") || 
     ($image_type == "image/jpg") || 
     ($image_type == "image/x-png") ||
     ($image_type == "image/png") || 
     ($image_type == "image/pjpeg")) &&
     !(in_array($extension, $allowedExts))){
     
     $error['product_image'] = "*<span class='label label-danger'>Image type must jpg, jpeg, gif, or png!</span>";
    }
   }
   
     
   if(!empty($product_title) && !empty($product_category_id) && !empty($product_price) && is_numeric($product_price) &&
    !empty($serve_for) && !empty($product_description) && empty($error['product_image']) && !empty($product_quantity) && is_numeric($product_quantity)){
    
    if(!empty($product_image)){
     
     // create random image file name
     $string = '0123456789';
     $file = preg_replace("/\s+/", "_", $_FILES['product_image']['name']);
     $function = new functions;
     $product_image = $function->get_random_string($string, 4)."-".date("Y-m-d").".".$extension;
    
     // delete previous image
     $delete = unlink("$previous_product_image");
     
     // upload new image
     $upload = move_uploaded_file($_FILES['product_image']['tmp_name'], 'upload/images/'.product_image);
   
     // updating all data
     $sql_query = "UPDATE products 
       SET product_title = ? , product_category_id = ?, product_price = ?, Serve_for = ?, product_image = ?, product_description = ?, product_quantity = ? 
       WHERE product_id = ?";
     
     $upload_image = 'upload/images/'.product_image;
     $stmt = $connect->stmt_init();
     if($stmt->prepare($sql_query)) { 
      // Bind your variables to replace the ?s
      $stmt->bind_param('ssssssss', 
         $product_title, 
         $product_category_id, 
         $product_price, 
         $serve_for, 
         $upload_image,
         $product_description,
         $product_quantity,
         $ID);
      // Execute query
      $stmt->execute();
      // store result 
      $update_result = $stmt->store_result();
      $stmt->close();
     }
    }else{
     
     // updating all data except image file
     $sql_query = "UPDATE products 
       SET product_title = ? , product_category_id = ?, 
       product_price = ?, Serve_for = ?, product_description = ?, product_quantity = ? 
       WHERE product_id = ?";
       
     $stmt = $connect->stmt_init();
     if($stmt->prepare($sql_query)) { 
      // Bind your variables to replace the ?s
      $stmt->bind_param('sssssss', 
         $product_title, 
         $product_category_id, 
         $product_price, 
         $serve_for, 
         $product_description,
         $product_quantity,
         $ID);
      // Execute query
      $stmt->execute();
      // store result 
      $update_result = $stmt->store_result();
      $stmt->close();
     }
    }
     
    // check update result
    if($update_result){
     $error['update_data'] = " <span class='label label-primary'>Success update</span>";
    }else{
     $error['update_data'] = " <span class='label label-danger'>failed update</span>";
    }
   }
   
  }
  
  // create array variable to store previous data
  $data = array();
   
  $sql_query = "SELECT * FROM products WHERE product_id = ?";
   
  $stmt = $connect->stmt_init();
  if($stmt->prepare($sql_query)) { 
   // Bind your variables to replace the ?s
   $stmt->bind_param('s', $ID);
   // Execute query
   $stmt->execute();
   // store result 
   $stmt->store_result();
   $stmt->bind_result($data['product_id'], 
     $data['product_title'], 
     $data['product_category_id'], 
     $data['product_price'], 
     $data['Serve_for'], 
     $data['product_image'],
     $data['product_description'],
     $data['product_quantity']
     );
   $stmt->fetch();
   $stmt->close();
  }
  
   
 ?>
 <div class="col-md-12">
 <h1>Edit Menu <?php echo isset($error['update_data']) ? $error['update_data'] : '';?></h1>
 <hr />
 </div>
 
 <form method="post" enctype="multipart/form-data">
 <div class="col-md-9">
  <div class="col-md-12">
   <label>Menu Name :</label><?php echo isset($error['product_title']) ? $error['product_title'] : '';?>
   <input type="text" name="product_title" class="form-control" value="<?php echo $data['product_title']; ?>"/>
  </div>

  <div class="col-md-3">
     <br>
     <label>product_price (<?php echo $currency;?>) :</label><?php echo isset($error['product_price']) ? $error['product_price'] : '';?>
  <input type="text" name="product_price" class="form-control" value="<?php echo $data['product_price'];?>"/>
  <br/>

  <label>Stock :</label><?php echo isset($error['product_quantity']) ? $error['product_quantity'] : '';?>
  <input type="text" name="product_quantity" class="form-control" value="<?php echo $data['product_quantity'];?>"/>
  <br/>

     <label>Status :</label><?php echo isset($error['serve_for']) ? $error['serve_for'] : '';?>
  <select name="serve_for" class="form-control">
   <option>Available</option>
   <option>Sold Out</option>
  </select>
  <br/>
     <label>Category :</label><?php echo isset($error['product_category_id']) ? $error['product_category_id'] : '';?>
  <select name="product_category_id" class="form-control">
   <?php while($stmt_category->fetch()){ 
    if($category_data['cat_id'] == $data['cat_id']){?>
     <option value="<?php echo $category_data['cat_id']; ?>" selected="<?php echo $data['cat_id']; ?>" ><?php echo $category_data['cat_title']; ?></option>
    <?php }else{ ?>
     <option value="<?php echo $category_data['cat_id']; ?>" ><?php echo $category_data['cat_title']; ?></option>
    <?php }} ?>
  </select>
  
     <br/>
  <label>Image :</label><?php echo isset($error['product_image']) ? $error['product_image'] : '';?>
  <input type="file" name="product_image" id="product_image"/><br />
  <img src="<?php echo $data['product_image']; ?>" width="210" height="160"/>
  </div>

  <div class="col-md-9">
  <br>
  <label>product_description :</label><?php echo isset($error['product_description']) ? $error['product_description'] : '';?>
  <textarea name="product_description" id="product_description" class="form-control" rows="16"><?php echo $data['product_description']; ?></textarea>
  <script type="text/javascript" src="css/js/ckeditor/ckeditor.js"></script>
  <script type="text/javascript">                        
            CKEDITOR.replace( 'product_description' );
        </script>
  </div>
 </div>
  
 <div class="col-md-3">
 <br/>
  <div class="panel panel-default">
   <div class="panel-heading">Add</div>
    <div class="panel-body">
     <input type="submit" class="btn-primary btn" value="Update" name="btnEdit" />
    </div>
  </div>
 </div>
 </form>
 <div class="separator"> </div>
</div>

<?php 
 $stmt_category->close();
 include_once('includes/close_database.php'); ?>

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

A mon avis, avec l'indice suivant, tu devrais vite trouver le souci ....
indice : Que contient la variable $_FILES lorsque tu édites ??
=> Réponse : A moins que tu n'ailles choisir une image sur le DD (via le champ de type file...) ... il ne contient rien. (si tu souhaites conserver une image déjà présente....) tu ne dois insérer en BDD l'image que si un fichier est présent dans l'input file ... sinon et bien tu laisse l'ancienne.

Autrement dit ...

Tu updates les différentes données sans te préocuper de l'image :
// updating all data
     $sql = "UPDATE products 
       SET product_title = ? , product_category_id = ?, product_price = ?, Serve_for = ?, product_description = ?, product_quantity = ? 
       WHERE product_id = ?";


Puis, si une image est présente dans le $_file
tu update l'image uniquement
// updating all data
 $sql = "UPDATE products 
       SET  product_image = ?
       WHERE product_id = ?";



0