Премини към съдържанието
Lenor

Добавяне на допълнителни снимки в обява

Препоръчан отговор


Здравейте. Искам да кача допълнителни снимки в обявите. Ако вече е качена, а съм забравил още една снимка неискам да изтривам цялата обява, а просто да си кача допълнителна снимки. Проблема идва, когато се качват снимките в базата данни, след всяка снимка е нужно да има |, за да се визуализират правилно, но явно в кода има някаква грешка качва снимките, но не изписва чертата. Това е кода на страницата:
 
 <body id="tqloto" onload="show_images()">
    
 
?>
             <!-- Begin Right Column -->
             <div id="rightcolumn">
 
<div class="up-body"></div>
<div class="center-body">
 
<form  action="" method="post" enctype="multipart/form-data"> 
<div id="specifikacii">
<?php
 
 
$db->query = "select * from rolmaco where Zapis_ID = $id";
$db->run_query();
$red = mysql_fetch_array($db->query_result);
$img_str = $red["Big_images"];
$img_array = explode('|',$img_str);
$numb_img = count($img_array);
echo '<input type="hidden" name="broi_izobrajeniq" value="'.$numb_img.'">';
$db->query = "select * from * where Zapis_ID = $id";
$db->run_query();
$db->number_of_results_found_fn();
if($db->number_of_results_found < 1)
{
      header("location:error-recording.php");
      exit;
 
}
while($row = mysql_fetch_array($db->query_result))
{
      $marka_old = $row["Marka"]; $model_old = $row["Model"];
      echo "<input type=\"hidden\"  name=\"marka_hidden\" value=\"$marka_old\"   >";
      echo "<input type=\"hidden\"  name=\"model_hidden\" value=\"$model_old\"   >";
 
      
      
      $small_images =  $row["Small_images"];
      $small_images_masiv = explode('|' , $small_images);
      $big_images = $row["Big_images"];
      $big_images_masiv = explode('|' , $big_images);
      $total_images = count($big_images_masiv);
      echo '<input type="hidden" name="obsht_broi_izobrajeniq" id="kolko_izobrajeniq_sa" value="'.$total_images.'">';
      if($v_nalichnost=="yes")
      {
            $select_available_or_not = '<td><select name="available" id="available_id" onchange="na_razpolojenie()"><option value="yes">Да</option><option value="no">Не</option></select></td>';
      }
      else
      {
            $select_available_or_not = '<td><select name="available" id="available_id" onchange="na_razpolojenie()"><option value="no">Не</option><option value="yes">Да</option></select></td>';
      }
      
 
?>
</div>
<br />
<input type="file" id="file_1"  name="images[]" onchange="validaciq_na_izobrajeniqta()" multiple="multiple" />
 
  
<div class="files">
  <input type="hidden" name="images[]" /><br/>
</div>
<button type="button" class="plus" style="margin-top:10px;">+</button>
    <script type="text/javascript">
        $(document).ready(function() {
  $(".plus").click(function() {
    $(".files").append("<input type='file' name='images[]'/><br/>");
  });
});
    </script>
 
 
<?php
for($i = 0, $k=1; $i < $total_images; $i++ , $k++)
{
      echo'<input type="hidden" value="'.$small_images_masiv[$i].'"  id="sml_img_'.$k.'" name="sml_imagees_'.$k.'">';
      echo'<input type="hidden" value="'.$big_images_masiv[$i].'"  id="bg_img_'.$k.'" name="bg_imagees_'.$k.'">';
}
?>
<div id="snimkite">
 
</div> <!--end div id="snimkite"-->
<div id="remove_rearrange_image" >
<h2>Изтрий/Премести изображение</h2>
<?php
for($i = 0, $one = 1;  $i < $total_images; $i++ , $one++)
{
      echo '<div align="center" class="up-down-pic">';
      echo '<div id="tiny_img_'.$one.'">';
      echo '<img src="../'.$small_images_masiv[$i].'">';
 
      
      if($i!=0 )
      {
            echo '<a href="" onclick="go_previous('.$one.');return false;"><img src="images/Actions-go-previous-icon.png"></a>';
      }      
      
      echo '<a href="" onclick="delete_image('.$one.');return false;"><img src="images/delete-icon.png"></a>';
      
      if($i !=($total_images - 1))
      {
            echo '<a href="" onclick="go_next('.$one.');return false;"><img src="images/Actions-go-next-icon.png"></a>';
      }
 
 
      echo '</div>';      
      echo '</div>';      
      
      
}
?>
<div class="clear"></div>
<br />
 
<input type="submit" value="Добави!"  name="submitche"  id="dobavi_zapis"  >
</div> <!--end div id="remove_rearrange_image-->
<!--<div id="add_images" onclick="add_more_images()">
    
</div>-->
 
 
</form>
<?php
if(isset($_POST["submitche"]))
{
      $new_small_images_massiv ="";
      $new_big_images_massiv ="";
      $numb_img = $_POST["broi_izobrajeniq"];
      for($i= 1; $i <= $numb_img; $i++)
      {
            $new_small_images_massiv .= $_POST["sml_imagees_".$i];
            $new_small_images_massiv.="|";
      }
      for($i= 1; $i <= $numb_img; $i++)
      {
            $new_big_images_massiv .= $_POST["bg_imagees_".$i];
            $new_big_images_massiv.="|";
      }
      $new_small_images_massiv=substr($new_small_images_massiv , 0 , -1);
      $new_small_images_massiv = explode('|', $new_small_images_massiv);
      $new_big_images_massiv=substr($new_big_images_massiv , 0 , -1);
      $new_big_images_massiv = explode('|', $new_big_images_massiv);
      $array_numbers=array();
      for($i= 0; $i < $numb_img; $i++) // vzimane na nomera na snimkata 
      {
            // rqzane na niza to tochkata / razshirenieto
 
            $to_dot = substr($new_big_images_massiv[$i] , 0 , $chislo );
            //namirane na poziciqta na '_pic'
 
            $nomer = substr($to_dot , $poslednata_dolna_cherta + 1 );
            $array_numbers[$i] = $nomer;
                        
      }
      $array_src_numbers = array();
      for($i= 0; $i < $numb_img; $i++) // vzimane na nomerata na snimkite predi prepodrejdaneto im . Podredbata na snimkite idva ot bazata danni
      {
            // rqzane na niza to tochkata / razshirenieto
 
            $to_dot = substr($small_images_masiv[$i] , 0 , $chislo );
            //namirane na poziciqta na '_pic'
 
            $nomer = substr($to_dot , $poslednata_dolna_cherta + 1 );
            $array_src_numbers[$i] = $nomer;
                        
      }
 
      // <changes>
      $big_images_array       = array();
      $small_images_array       = array();
      // </changes>      
     
  
      
      // Дефиниране на константи с пътища до картинките
      define("IMAGES_BIG_DIR",       "../images/Big_images/");
      define("IMAGES_SMALL_DIR",       "../images/Small_images/");
      
      // Дефиниране на константи с размер за малките картинки
      define("IMAGE_HEIGHT",       90);
      define("IMAGE_WIDTH",       120);      
      
      // Позволени типове файлове
      $allowed_type       = array(
            'image/jpeg',
            'image/jpg',
            'image/JPG',
            'image/JPEG',
            'image/pjpeg',
            'image/x-png',
            'image/png',
      );      
      
      $allowed_ext       = array('jpg', 'png', 'JPG', 'jpeg', 'JPEG');
      
      // Начало на обработката
      if ( !empty($_FILES) ) {
            // Имаме субмитнати файлове
            //echo "<pre>";
            //print_r($_POST);
            //print_r($_FILES);
            
            // Брой на субмитнатите картинки
            $number_of_images = isset($_FILES['images']['name']) ? count($_FILES['images']['name']) : 0;
            
            if ( $number_of_images > 0 ) {
                  // Извъртаме всички картинки
                  foreach ( $_FILES['images']['name'] as $nImagekey => $sImagaName ) {
                        // Файла е качен успешно, провеверки, местени и манипулации
                        if ( isset($_FILES['images']['error'][$nImagekey]) && $_FILES['images']['error'][$nImagekey] == UPLOAD_ERR_OK ) {
                              // Проверка за тип на файла
                              $extension = pathinfo($sImagaName, PATHINFO_EXTENSION);
 
                              if ( !in_array($_FILES['images']['type'][$nImagekey], $allowed_type) ) {
                                    echo "Невалиден файлов формат!";
                                    echo '</div>';
                                    echo '<div class="down-body"></div>';
                                    exit; 
                              } else if ( !in_array($extension, $allowed_ext) ) {
                                    echo "Невалиден файлов формат!";
                                    exit;
                              }
 
                              // Закачаме уникално име на файла, базирано на неговата хеш сума. 
                              // Ако бъдат качени два или повече еднкави файла, без значение от 
                              // техните имена, накрая ще има само едно налично копие от тях.
                              $fn                   = sprintf(sha1_file($_FILES['images']['tmp_name'][$nImagekey]).'.%s', $extension);
                              $file_name             = sprintf(IMAGES_BIG_DIR.'%s', $fn);
                              $file_name_sm       = sprintf(IMAGES_SMALL_DIR.'%s', $fn);
                              
                              // <changes>
                              $big_images_array[]       = $file_name;
                              $small_images_array[]             = $file_name_sm;
                              // </changes>
 
                              // Местим качения файл от временната директория в указаната
                              // Ако има роблеми с функцията move_uploaded_file(), може вместо нея да се използва функцията copy()
                              if ( !copy($_FILES['images']['tmp_name'][$nImagekey], $file_name) ) {
                                    echo "Файла не може да бъде обработен.";
                                    exit;
                              }
 
                              // Малки картинки
                              // Неизвестна реализация на функцията resize_image; Неизвестна променлива $latin_name;
                              //resize_image("../".$file_name,'210','180',IMAGES_SMALL_DIR.$latin_name."_pic_".$nImagekey.$extension);
                              
                              // Бърза реализация - ако не ти хареса, изтрий я.
                              if ( strtolower($extension) == "jpg" ) {
                                    $raw_img = imagecreatefromjpeg($file_name);
                              } else if ( strtolower($extension) == "png" ){
                                    $raw_img = imagecreatefrompng($file_name);
                              }
                              
                              if ( $raw_img ) {
                                    $raw_x = imageSX($raw_img);
                                    $raw_y = imageSY($raw_img);
                                    
                                    
                                    
                                          $thumb_w = IMAGE_WIDTH;
                                          $thumb_h = IMAGE_HEIGHT;
                                    
 
                                    $thumb = ImageCreateTrueColor($thumb_w, $thumb_h);
                                    imagecopyresampled($thumb, $raw_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $raw_x, $raw_y);            
 
                                    if ( strtolower($extension) == "jpg" ) {
                                          imagejpeg($thumb, $file_name_sm);
                                    } else if ( strtolower($extension) == "png" ){
                                          imagepng($thumb, $file_name_sm);
                                    }
 
                                    imagedestroy($thumb); 
                                    imagedestroy($raw_img);                                     
                              }
                        }
                  }
            }
            
      } else if ( !empty($_POST) ) {
            // Нямаме субмитнати картинки, но формата е субмитната
            echo "Не сте избрали изображение. Задължително е да изберете поне едно";
            exit;             
      }
 
 
      // <changes>
      $big_images_update = implode("|", $big_images_array);
      $small_images_update       = implode("|", $small_images_array);
      // </changes>
 
 
      if($marka_old != $marka or $model_old != $model)
      {
            // suzdavane na imena za izobrajeniqta
            $word = new Word_processing();
            $model_trimmed = trim($model);
            $marka_trimmed = trim($marka);
            $name = $marka_trimmed."_".$model_trimmed."_id_".$id;
            $word->name = $name;
            $latin_name = $word->kirilica_kum_latinica();
            
      }
      else
      {
            for($k = 0; $k< $numb_img; $k++)
            {
                  $small_images_update.= $new_small_images_massiv[$k];
                  $small_images_update.="|";
                  $big_images_update.= $new_big_images_massiv[$k];
                  $big_images_update.="|";
                  
            }
      }
      $small_images_update = substr($small_images_update,0, -1 );
      $big_images_update = substr($big_images_update,0, -1 );
      
 
      $data = date("Y-m-d");
      $db->query="UPDATE  `*`.`*`
 SET  `Kategoriq` =  '$kategoriq' , `Marka` = '$marka' , `Model` = '$model' , `Rabotna_Shirina` = $rabotna_shirina ,  `Rabotni_organi` = $rabotni_organi, `Godina_na_proizvodstvo` = $godina_na_proizvodstvo , `Cena` = $cena , `Dopulnitelna_informaciq` = '$dopulnitelna_informaciq', `Idva_ot` = '$idva_ot' , `V_nalichnost` = '$v_nalichnost' , `Big_images` = '$big_images_update' , `Small_images` = '$small_images_update' , `Posledna_Redakciq` = '$data' WHERE  `nikeatra_traktorite`.`*`.`Zapis_ID` = $id;";

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Много ли е сложно да сложиш снимките в отделна таблица?

Иначе аз се предавам пред такава каша от променливи и if-ове. :D

 

PS: Язък, че PHP е толкова мощен ООП език, след като съществуват подобни скриптове. :(

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Първо пусни една заявка, да провериш дали има съществуващи записи и ако има ги вкарай в масив и после добави новата снимка.

Ако си скаран с ООП, използвай поне някаква форма на MVC... макар, че не мога да си представя, как ще стане с процедурен код.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

"$new_big_images_massiv" стига де.... В една таблица слагаш обявите ти, в друга слагаш картинките/снимките и ги "връзваш" по id.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.