За последние 24 часа нас посетили 22266 программистов и 1025 роботов. Сейчас ищут 674 программиста ...

Этим кодом для добавления фотографий

Тема в разделе "PHP для новичков", создана пользователем aivanov, 11 дек 2014.

  1. aivanov

    aivanov Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте.
    Я пользуюсь этим кодом для добавления фотографий, но сейчас мне нужно добавлять и удалять конкретные фотографии.
    Как надо изменить этот код? На основании этого кода мне нужен другой код для удаления конкретных фотографии.
    Например если у меня есть 100 фотографий и я хочу удалить только 51-ую и 94-ую фотографию, а все остальные чтобы остались

    Код (Text):
    1.  
    2.  
    3. define("IMAGES_BIG_DIR",     "../images/Big_images/");
    4.     define("IMAGES_SMALL_DIR",     "../images/Small_images/");
    5.      
    6.  
    7.     define("IMAGE_HEIGHT",     180);
    8.     define("IMAGE_WIDTH",     210);    
    9.      
    10.  
    11.     $allowed_type     = array(
    12.         'image/jpeg',
    13.         'image/jpg',
    14.         'image/JPG',
    15.         'image/JPEG',
    16.         'image/pjpeg',
    17.         'image/x-png',
    18.         'image/png',
    19.     );    
    20.      
    21.     $allowed_ext     = array('jpg', 'png', 'JPG', 'jpeg', 'JPEG');
    22.      
    23.  
    24.     if ( !empty($_FILES) ) {
    25.      
    26.         //echo "<pre>";
    27.         //print_r($_POST);
    28.         //print_r($_FILES);
    29.          
    30.      
    31.         $number_of_images = isset($_FILES['images']['name']) ? count($_FILES['images']['name']) : 0;
    32.          
    33.         if ( $number_of_images > 0 ) {
    34.          
    35.             foreach ( $_FILES['images']['name'] as $nImagekey => $sImagaName ) {
    36.              
    37.                 if ( isset($_FILES['images']['error'][$nImagekey]) && $_FILES['images']['error'][$nImagekey] == UPLOAD_ERR_OK ) {
    38.              
    39.                     $extension = pathinfo($sImagaName, PATHINFO_EXTENSION);
    40.  
    41.                     if ( !in_array($_FILES['images']['type'][$nImagekey], $allowed_type) ) {
    42.                         echo "Невалиден файлов формат!";
    43.                         exit;  
    44.                     } else if ( !in_array($extension, $allowed_ext) ) {
    45.                         echo "Невалиден файлов формат!";
    46.                         exit;
    47.                     }
    48.  
    49.                  
    50.                     $fn             = sprintf(sha1_file($_FILES['images']['tmp_name'][$nImagekey]).'.%s', $extension);
    51.                     $file_name         = sprintf(IMAGES_BIG_DIR.'%s', $fn);
    52.                     $file_name_sm     = sprintf(IMAGES_SMALL_DIR.'%s', $fn);
    53.                      
    54.                  
    55.                     $original_images_array[]     = $file_name;
    56.                     $small_images_array[]         = $file_name_sm;
    57.                  
    58.  
    59.                  
    60.                     if ( !copy($_FILES['images']['tmp_name'][$nImagekey], $file_name) ) {
    61.                         echo "Файла не може да бъде обработен.";
    62.                         exit;
    63.                     }
    64.  
    65.                  
    66.                      
    67.              
    68.                     if ( strtolower($extension) == "jpg" ) {
    69.                         $raw_img = imagecreatefromjpeg($file_name);
    70.                     } else if ( strtolower($extension) == "png" ){
    71.                         $raw_img = imagecreatefrompng($file_name);
    72.                     }
    73.                      
    74.                     if ( $raw_img ) {
    75.                         $raw_x = imageSX($raw_img);
    76.                         $raw_y = imageSY($raw_img);
    77.                          
    78.                         if ($raw_x > $raw_y) {
    79.                             $thumb_w = IMAGE_WIDTH;
    80.                             $thumb_h = $raw_y * (IMAGE_HEIGHT / $raw_x);
    81.                         } else if ($raw_x < $raw_y) {
    82.                             $thumb_w = $raw_x * (IMAGE_HEIGHT / $raw_y);
    83.                             $thumb_h = IMAGE_HEIGHT;
    84.                         } else if ($raw_x == $raw_y) {
    85.                             $thumb_w = IMAGE_WIDTH;
    86.                             $thumb_h = IMAGE_HEIGHT;
    87.                         }
    88.  
    89.                         $thumb = ImageCreateTrueColor($thumb_w, $thumb_h);
    90.                         imagecopyresampled($thumb, $raw_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $raw_x, $raw_y);        
    91.  
    92.                         if ( strtolower($extension) == "jpg" ) {
    93.                             imagejpeg($thumb, $file_name_sm);
    94.                         } else if ( strtolower($extension) == "png" ){
    95.                             imagepng($thumb, $file_name_sm);
    96.                         }
    97.  
    98.                         imagedestroy($thumb);  
    99.                         imagedestroy($raw_img);                          
    100.                     }
    101.                 }
    102.             }
    103.         }
    104.          
    105.     } else if ( !empty($_POST) ) {
    106.      
    107.         echo "Не сте избрали изображение. Задължително е да изберете поне едно";
    108.         exit;          
    109.     }
    110.  
    111.  
    112.     $original_images_string = implode("|", $original_images_array);
    113.     $small_images_string     = implode("|", $small_images_array);
    114.  
    115.  
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    я вот тут вижу немного кривой но вроде как рабочий код по приему отправленных файлов, генерации превьюшек и больше ничего не вижу. ни добавления. ни уж тем более откуда удалять 51 и 94 фотки. из входного массива?

    1. опиши более детально.
    2. не проверяй фотки по расширению.
    3. проверяй по миметайпам
    4. в описании миметайпа всегда идет нижний регистр. вообще весь интернет для хостов, имен пользователей и тому подобное использует только нижний регистр. в твоем коде 'image/jpeg', и 'image/JPEG', имеют равное значение по сути.
    5. уж если ты упоролся и пытаешься работать с расширением файла - один раз его приведи в нижний регистр. не надо делать это триста раз перед каждым использованием.
    6. кстати тогда не придется перечислять возможные варианты jpeg jpeG jpEg jpEG jPeg jPeG jPEg jPEG Jpeg JpeG JpEg JpEG JPeg JPeG JPEg JPEG - дебильно смотрится, не правда ли?)))) jpeg будет достаточно на все 16 вариантов.
    7. пользователь долго-долго рожал отбирая фотки, отправил форму и она... умерла от первого недопустимого изображения. не выходи из программы exit-ом а переходи на следующую итерицию цикла. continue-ом
    8. не используй выбранный тобой метод генерации имени изображения. слишком большое кол-во коллизий будет. а коллизии будут тупо переписывать старые файлы новыми.
     
  3. aivanov

    aivanov Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    5
    Симпатии:
    0
    Вот это мой старый код, с которым я загружал фотографии но только по одной. Как его изменить, так чтобы загружать сразу несколько фотографий? /multiple/

    Код (Text):
    1. <?php
    2. echo '
    3.  
    4. ?>
    5. </div>
    6. <div  id="div_za_izbor_na_failove" >
    7. <h3><img src="http://www.cyberforum.ru/images/camera-icon.png" />Добави изображения </h3>
    8. <table  border="0" id="tabli4ka" ><tr><td>
    9. <input type="file" id="file_1"  name="file_name_1" onchange="validaciq_na_izobrajeniqta()" multiple  />
    10. </td></tr></table>
    11. </div>
    12. <input type="hidden" id="hidden_value" value="1"  name="number_of_images" />
    13. <input type="hidden" id="pone_edno_izobr" value="no"  name="at_least_one_pic" />
    14. <input type="hidden" id="povtarqshti_se_izobrajeniq" value="no"  name="povtarqshti_izobrajeniq" />
    15. <input type="button" onclick="choose_another_file()" id="add_image" /></br>
    16.  
    17. <input type="submit" value="Добави!"  name="submitche"  id="dobavi_zapis" disabled="disabled">
    18.  
    19. </form>
    20.  
    21.  
    22. <?php
    23. if(isset($_POST["submitche"]))
    24. {
    25.    
    26.    
    27.     // vzimane na stoinostite ot tekstovite poleta
    28.     $kategoriq = $_POST["kategorii"];
    29.     $marka = $_POST["marka"];
    30.     $model = $_POST["model"];
    31.    
    32.     $godina_na_proizvodstvo = $_POST["godina_na_proizvodstvo"];
    33.     if($godina_na_proizvodstvo=="")
    34.     {
    35.         $godina_na_proizvodstvo ="NULL";
    36.     }
    37.     else
    38.     {
    39.         $godina_na_proizvodstvo ="'$godina_na_proizvodstvo'";
    40.     }
    41.    
    42.     $dopulnitelna_informaciq = $_POST["tekstova_zona"];
    43.     if(empty($dopulnitelna_informaciq))
    44.     {
    45.         $dopulnitelna_informaciq = "NULL" ;
    46.     }
    47.     else
    48.     {
    49.         $dopulnitelna_informaciq = "'$dopulnitelna_informaciq'" ;
    50.     }
    51.    
    52.     $v_nalichnost = $_POST["available"];
    53.    
    54.     // konekciq kum bazata danni
    55.     $db = new MYSQL_DB();
    56.     $db->connect();
    57.     $db->select_db();
    58.     $db->set_names_utf_8();
    59.     $db->query="select * from advanced";
    60.     $db->run_query() ;
    61.     $db->number_of_results_found_fn();
    62.     $namereni_rezultati = $db->number_of_results_found ;
    63.     $id ;
    64.     if($namereni_rezultati == 0)
    65.     {
    66.         $id = 1 ;
    67.     }
    68.     else
    69.     {
    70.         $db->query="SELECT COUNT(*) as total FROM advanced";
    71.         $db->run_query();
    72.         $db->number_of_results_found_fn() ;
    73.         $rows = $db->number_of_results_found ;
    74.         $row = mysql_fetch_array($db->query_result) ;
    75.         $total_rows = $row[0];
    76.         $last_row_index = $total_rows - 1 ;
    77.         $db->query="select Zapis_ID from advanced limit $last_row_index , 1 ";
    78.         $db->run_query();
    79.         $row = mysql_fetch_array($db->query_result) ;
    80.         $last_id_value = $row[0] ;
    81.         $id = $last_id_value + 1 ;
    82.        
    83.         // da se testva
    84.     }
    85.     //echo "ID na posledniq red $id <br/>" ; // testov red
    86.    
    87.    
    88.     $word = new Word_processing();
    89.     $model_trimmed = trim($model);
    90.     $marka_trimmed = trim($marka);
    91.     $name = $marka_trimmed."_".$model_trimmed."_id_".$id ;
    92.     $word->name = $name ;
    93.     $latin_name = $word->kirilica_kum_latinica();
    94.     //echo $latin_name."<br/>"; // testov red
    95.    
    96.     $number_of_images = $_POST['number_of_images']; // integer
    97.     $number_of_real_images = 0 ;
    98.     $at_least_one_pic = false ;
    99.     for($i = 1 ; $i <= $number_of_images ; $i++) // proverka dali izobshto ima edno izobrano izobrajenie
    100.     {
    101.         $file_name = $_FILES["file_name_$i"]["name"];
    102.        
    103.         if($file_name == "")
    104.         {
    105.             continue ;
    106.         }
    107.         else
    108.         {
    109.             $at_least_one_pic = true ;
    110.             $number_of_real_images++ ;
    111.         }
    112.        
    113.     }
    114.    
    115.     //echo " Nomer na poleta za kachvane na izobrajeniq : $number_of_images <br/>"; // testov red
    116.     //echo "Nomer na realnite izobrajeniq $number_of_real_images <br/> ";
    117.    
    118.     $masiv = array(); // masiv sudurjash imenata na failove i tehnite razshireniq
    119.     for($i = 1 ; $i <= $number_of_images ; $i++)
    120.     {  
    121.         if($_FILES["file_name_$i"]["name"] == "")
    122.         {
    123.             continue ;
    124.         }
    125.         else
    126.         {
    127.             $masiv[] = $_FILES["file_name_$i"]["name"];
    128.         }
    129.            
    130.     }
    131.  
    132.    
    133.     for($i = 0 ; $i <  $number_of_real_images ; $i++)   // proverka da nqma povtarqshti se izobrajeniq
    134.     {
    135.        
    136.         for($z = 0  ; $z < $number_of_real_images  ; $z++)
    137.         {  
    138.            
    139.             if($z == $i)
    140.             {
    141.                 continue ;
    142.             }
    143.             else
    144.             {
    145.                
    146.                 if($masiv[$i]==$masiv[$z])
    147.                 {
    148.                     echo "Не можеш да качиш две повтарящи се изображения ! Име на повтарящото се изображение : ".$masiv[$i];
    149.                     exit ;
    150.                 }
    151.                
    152.             }
    153.            
    154.         }
    155.        
    156.        
    157.     }
    158.    
    159.     if($at_least_one_pic == false)
    160.     {
    161.         echo "Не сте избрали изображение . Задължително е да изберете поне едно";
    162.         exit ;
    163.     }
    164.     else
    165.     {
    166.         $original_images_string ="" ;
    167.         $small_images_string ="";
    168.         $start = 1 ;
    169.         $upload_folder_for_big_images="http://www.cyberforum.ru/images/Big_images/";
    170.         $upload_folder_for_small_images="http://www.cyberforum.ru/images/Small_images/";
    171.         // for cikul kopirash originalnoto izobrajenie i praveiki ot nego malko izobrajenie . Populva i gornite dva stringa i postavq sudurjanieto imm v baza danni kato referenciq
    172.         // kum realnite izobrajeniq
    173.         for($i = 1 ; $i <= $number_of_images  ; $i++)
    174.         {
    175.             $file_name = $_FILES["file_name_$i"]["name"];
    176.             if($file_name == "")
    177.             {          
    178.                 continue ;
    179.             }
    180.             $extention = substr($file_name, -4) ;
    181.             $path_plus_filename =$upload_folder_for_big_images.$latin_name."_pic_".$start.$extention ;
    182.             $try_to_upload =    move_uploaded_file($_FILES["file_name_$i"]["tmp_name"] , "../".$path_plus_filename);
    183.                 if($try_to_upload == false)
    184.                 {
    185.                     echo "problem pri uploada na source image !!!!";
    186.                     exit ;              
    187.                 }
    188.             $original_images_string  .= $path_plus_filename ;
    189.             $original_images_string  .="|";
    190.            
    191.             resize_image("../".$path_plus_filename ,'210','180',$upload_folder_for_small_images.$latin_name."_pic_".$start.$extention  );
    192.             $small_images_string .= $upload_folder_for_small_images.$latin_name."_pic_".$start.$extention ;
    193.             $small_images_string .="|";
    194.             $start++;
    195.         }
    196.     }
    197.     $original_images_string =substr($original_images_string ,0 ,-1 ) ;
    198.     $small_images_string =substr($small_images_string , 0 , -1 ) ;
    199.    
    200.     $data = date("Y-m-d");
    201.     $db->query="INSERT INTO `shoemake_album`.`advanced` (`Zapis_ID`, `Kategoriq`, `Marka`, `Model`, `Godina_na_proizvodstvo`, `Dopulnitelna_informaciq`, `V_nalichnost`, `Big_images`, `Small_images`, `Data_na_dobavqne` , `Posledna_Redakciq`) VALUES (NULL, '$kategoriq', '$marka_trimmed', '$model_trimmed', $godina_na_proizvodstvo, $dopulnitelna_informaciq, '$v_nalichnost', '$original_images_string', '$small_images_string', '$data' , '$data' );";
    202.     //echo $db->query ;
    203.     $db->run_query() ;
    204.     $db->affected_rows();
    205.     if($db->number_of_affected_rows==1)
    206.     {
    207.         echo "Успешно добавихте запис за $marka_trimmed";
    208.     }
    209.     else
    210.     {
    211.         echo "Проблем с добавянето на записа !";
    212.     }
    213. }
    214.  
    215. ?>
    216. </div>
    217. </body>
    218. </html>
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    что говорит мануал по поводу один-несколько файлов? меняется структура массива файлов, обработка ведется в цикле. а каждый индивидуальный файл все равно будет идентичным по логике кодом обработан.
     
  5. aivanov

    aivanov Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    5
    Симпатии:
    0
    Извините, но я не могу думать. Можете ли вы сказать мне, что именно мне нужно изменить?
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    В этом разделе помогают понимать и писать программы, для тех кто хочет чтобы за них сделали, спрашивают в разделе "сделайте за меня" или "free-lance"