2014-11-03 1 views
0

Я добавляю форму и скрипт, который обрабатывает загрузку файла изображения. Я добавил текстовые поля, переключатель и дополнительную загрузку файлов.Что приводит к тому, что текстовые значения пустые при отправке на db

Загрузка изображения и дополнительная часть загрузки файла в скрипт работают нормально, также как и переключатель. Эти значения сохраняются в моем sql db правильно.

Однако все текстовые поля отправляют пустые значения в sql.

Вот сценарий до моего оператора SQL, который помнит, работает для URL-адреса изображения, документирует значение переключателя. Но все текстовые поля, такие как «title» и «address», пусты в базе данных.

HTML форма

 <div class="avatar-view" title="Change the avatar"> <img src="../0images/cropy.jpg" alt="Avatar"> </div> 

     <!-- Cropping modal --> 
     <div class="modal fade" id="avatar-modal" tabindex="-1" role="dialog" aria-labelledby="avatar-modal-label" aria-hidden="true"> 
     <div class="modal-dialog modal-lg"> 
      <div class="modal-content"> 
      <form class="avatar-form" method="post" action="crop-avatar.php" enctype="multipart/form-data"> 
       <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal">&times;</button> 
       <h1>Listing Upload</h1> 
       <h2 class="modal-title" style="margin-left:25px;" id="avatar-modal-label">Listing Main Image</h2> 
       </div> 
       <div class="modal-body"> 
       <div class="avatar-body"> 

        <!-- Upload image and data --> 
        <div class="avatar-upload"> 
        <input class="avatar-src" name="avatar_src" type="hidden"> 
        <input class="avatar-data" name="avatar_data" type="hidden"> 
        <label for="avatarInput">Local upload</label> 
        <input class="avatar-input" id="avatarInput" name="avatar_file" type="file"> 
        </div> 

        <!-- Crop and preview --> 
        <div class="row"> 
        <div class="col-md-9"> 
         <div class="avatar-wrapper"></div> 
        </div> 
        <div class="col-md-3"> 
         <div class="avatar-preview preview-lg"></div> 
         <div class="avatar-preview preview-md"></div> 
         <div class="avatar-preview preview-sm"></div> 
        </div> 
        </div> 
       </div> 
       </div> 
       <div class="content_add"> 

       <h2>Listing Data</h2> 
<input name="title" type="text" /><br /> 
<input name="address" type="text" /><br /> 
<input name="sale_price" type="text" /><br /> 
<input name="lease_price" type="text" /><br /> 
<input name="build_size" type="text" /><br /> 
<input name="lot_size" type="text" /><br /> 
<input name="zoning" type="text" /><br /> 
<input name="comment" type="text" /><br /> 
<input name="transaction" type="text" /><br /> 
<h2>Listing Flyer</h2> 
       <P class="h4" style="display:inline;">Flyer</P> 
       <h6 style="display: inline;">Required</h6> 
       <br /> 
       <input name="flyer" type="file" /> 
       <br> 
       <br /> 

       </div> 
       <div class="modal-footer"> 
       <button class="btn btn-default" type="button" data-dismiss="modal">Close</button> 
       <button class="btn btn-primary avatar-save" type="submit">Save and Post Listing</button> 
       </div> 
      </form> 
      </div> 
     </div> 
     </div> 

PHP скрипт

 $title = $_POST['title']; 
     $address = $_POST['address']; 
     $sale_price = $_POST['sale_price']; 
     $lease_price = $_POST['lease_price']; 
     $build_size = $_POST['build_size']; 
     $lot_size = $_POST['lot_size']; 
     $zoning = $_POST['zoning']; 
     $comment = $_POST['comment']; 
     $transaction = $_POST['transaction']; 
      class CropAvatar { 
       private $src; 
       private $data; 
       private $file; 
       private $dst; 
       private $type; 
       private $extension; 
       private $srcDir = '../0images/listimg/orig'; 
       private $dstDir = '../0images/listimg/mod'; 
       private $msg; 

       function __construct($src, $data, $file) { 
        $this -> setSrc($src); 
        $this -> setData($data); 
        $this -> setFile($file); 
        $this -> crop($this -> src, $this -> dst, $this -> data); 
       } 

       private function setSrc($src) { 
        if (!empty($src)) { 
         $type = exif_imagetype($src); 

         if ($type) { 
          $this -> src = $src; 
          $this -> type = $type; 
          $this -> extension = image_type_to_extension($type); 
          $this -> setDst(); 
         } 
        } 
       } 

       private function setData($data) { 
        if (!empty($data)) { 
         $this -> data = json_decode(stripslashes($data)); 
        } 
       } 

       private function setFile($file) { 
        $errorCode = $file['error']; 

        if ($errorCode === UPLOAD_ERR_OK) { 
         $type = exif_imagetype($file['tmp_name']); 

         if ($type) { 
          $dir = $this -> srcDir; 

          if (!file_exists($dir)) { 
           mkdir($dir, 0777); 
          } 
     $currdate=date('YmdHis'); 
          $extension = image_type_to_extension($type); 
          $src = $dir . '/' . $currdate . $extension; 

          if ($type == IMAGETYPE_GIF || $type == IMAGETYPE_JPEG || $type == IMAGETYPE_PNG) { 

           if (file_exists($src)) { 
            unlink($src); 
           } 

           $result = move_uploaded_file($file['tmp_name'], $src); 
     require('../dbcon.php'); 
     $listing_img="http://www.website.com/0images/listimg/mod/" . $currdate . $extension; 
     $allowedExtsf = array("pdf"); 
     $tempf = explode(".", $_FILES["flyer"]["name"]); 
     $extensionf = end($tempf); 

     if (($_FILES["flyer"]["type"] == "application/pdf") 
     && ($_FILES["flyer"]["type"] <2000000000) 
     && in_array($extensionf, $allowedExtsf)) 
     { 
      $flyername=$_FILES["flyer"]["name"]; 

      if ($_FILES["flyer"]["error"] > 0) 
      { 
      echo "Return Code: " . $_FILES["flyer"]["error"] . "<br>"; 
      } 
       else 
       { 
        if (file_exists("../flyers/" . $_FILES["flyer"]["name"])) 
        { 
        echo $_FILES["flyer"]["name"] . " already exists. "; 
        } 
         else 
         { 
         move_uploaded_file($_FILES["flyer"]["tmp_name"],"../flyers/" . $_FILES["flyer"]["name"]); 
         } 
       } 
       $ad_link="http://www.website.com/flyers/" . $_FILES["flyer"]["name"]; 
        // escape variables for security 

     echo '$title'; echo '$address'; echo '$lot_size'; echo '$ad_link'; 


     $sql="INSERT INTO listings (listing_img, title, address, lot_size, zoning, build_size, sale_price, lease_price, comment, ad_link, transaction, date_added) VALUES ('$listing_img', '$title', '$address', '$lot_size', '$zoning', '$build_size', '$sale_price', '$lease_price', '$comment', '$ad_link', '$transaction', now())"; 
     mysqli_query($con,$sql); 
     mysqli_close($con); 
     } 
if ($result) { 
         $this -> src = $src; 
         $this -> type = $type; 
         $this -> extension = $extension; 
         $this -> setDst(); 


        } else { 
         $this -> msg = 'Failed to save file'; 
        } 
       } else { 
        $this -> msg = 'Please upload image with the following types: JPG, PNG, GIF'; 
       } 
      } else { 
       $this -> msg = 'Please upload image file'; 
      } 
     } else { 
      $this -> msg = $this -> codeToMessage($errorCode); 
     } 
    } 

    private function setDst() { 
     $dir = $this -> dstDir; 

     if (!file_exists($dir)) { 
      mkdir($dir, 0777); 
     } 

     $this -> dst = $dir . '/' . date('YmdHis') . $this -> extension; 
    } 

    private function crop($src, $dst, $data) { 
     if (!empty($src) && !empty($dst) && !empty($data)) { 
      switch ($this -> type) { 
       case IMAGETYPE_GIF: 
        $src_img = imagecreatefromgif($src); 
        break; 

       case IMAGETYPE_JPEG: 
        $src_img = imagecreatefromjpeg($src); 
        break; 

       case IMAGETYPE_PNG: 
        $src_img = imagecreatefrompng($src); 
        break; 
      } 

      if (!$src_img) { 
       $this -> msg = "Failed to read the image file"; 
       return; 
      } 

      $dst_img = imagecreatetruecolor(220, 220); 
      $result = imagecopyresampled($dst_img, $src_img, 0, 0, $data -> x, $data -> y, 220, 220, $data -> width, $data -> height); 

      if ($result) { 
       switch ($this -> type) { 
        case IMAGETYPE_GIF: 
         $result = imagegif($dst_img, $dst); 
         break; 

        case IMAGETYPE_JPEG: 
         $result = imagejpeg($dst_img, $dst); 
         break; 

        case IMAGETYPE_PNG: 
         $result = imagepng($dst_img, $dst); 
         break; 
       } 

       if (!$result) { 
        $this -> msg = "Failed to save the cropped image file"; 
       } 
      } else { 
       $this -> msg = "Failed to crop the image file"; 
      } 


      imagedestroy($src_img); 
      imagedestroy($dst_img); 
     } 
    } 

    private function codeToMessage($code) { 
     switch ($code) { 
      case UPLOAD_ERR_INI_SIZE: 
       $message = 'The uploaded file exceeds the upload_max_filesize directive in php.ini'; 
       break; 

      case UPLOAD_ERR_FORM_SIZE: 
       $message = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'; 
       break; 

      case UPLOAD_ERR_PARTIAL: 
       $message = 'The uploaded file was only partially uploaded'; 
       break; 

      case UPLOAD_ERR_NO_FILE: 
       $message = 'No file was uploaded'; 
       break; 

      case UPLOAD_ERR_NO_TMP_DIR: 
       $message = 'Missing a temporary folder'; 
       break; 

      case UPLOAD_ERR_CANT_WRITE: 
       $message = 'Failed to write file to disk'; 
       break; 

      case UPLOAD_ERR_EXTENSION: 
       $message = 'File upload stopped by extension'; 
       break; 

      default: 
       $message = 'Unknown upload error'; 
     } 

     return $message; 
    } 

    public function getResult() { 
     return !empty($this -> data) ? $this -> dst : $this -> src; 
    } 

    public function getMsg() { 
     return $this -> msg; 
    } 
} 

$crop = new CropAvatar($_POST['avatar_src'], $_POST['avatar_data'], $_FILES['avatar_file']); 
$response = array(
    'state' => 200, 
    'message' => $crop -> getMsg(), 
    'result' => $crop -> getResult() 
); 

echo json_encode($response); 
+0

попробуйте 'echo' ваш запрос sql и сообщите результат ... – Ronser

+0

где? сразу после запроса ?: – rhill45

+0

- это ваш тип столбца в базе данных varchar? – arkyc

ответ

0

Если вы выполнения mysql_code внутри класса CropAvatar тогда ваши переменные из сферы класса. Кажется, вы не показываете весь ваш PHP-код (не хватает некоторых закрывающих тегов), поэтому я не могу быть уверен.

+0

У меня такое чувство, что это проблема, все еще проверяющая. Я добавил остальную часть скрипта, извините, что урезал его изначально. Мне нужны все эти текстовые поля для ввода в ту же строку sql, что и два URL-адреса файлов. Любые предложения о том, как передать идентификатор в класс CropAvatar? – rhill45

+0

Вы можете сохранить значения в массиве, а затем передать их как параметр CropAvatar, или вы можете создать сеттер, в котором хранятся ваши переменные. – Seunhaab

+0

Итак, ваш правый ответ, дающий вам ответ здесь. Я разделил его на два sql-оператора: один вне класса CropAvatar для текстовых полей, один внутри класса CropAvatar для файлов. Текстовые поля теперь работают, но файлы имеют значение null в sql. Но файлы все еще сохраняются на сервере. Я все еще пытаюсь обернуть голову вокруг php-классов. У вас не будет примера того, как передать массив в качестве параметра, не так ли? Спасибо @Seunhaab за все это, кстати. – rhill45

Смежные вопросы