Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как можно изменить код для загрузки на multiple. 
:(
    Опции темы
aivanov88
Дата 14.12.2014, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.12.2014

Репутация: нет
Всего: нет



Здравствуйте!
Как можно изменить код для загрузки  на multiple.  так чтобы выбирать и загружать сразу несколько файлов.Сейчас могу только по одному

Код

    <form  action="#" method="post" enctype="multipart/form-data">
    <div id="specifikacii">
     
     
    <?PHP
    echo '
     
    ?>
    </div>
    <div  id="div_za_izbor_na_failove" >
    <h3><img src="images/camera-icon.png" />Добави изображения </h3>
    <table  border="0" id="tabli4ka" ><tr><td>
    <input type="file" id="file_1"  name="file_name_1" onchange="validaciq_na_izobrajeniqta()" multiple  />
    </td></tr></table>
    </div>
    <input type="hidden" id="hidden_value" value="1"  name="number_of_images" />
    <input type="hidden" id="pone_edno_izobr" value="no"  name="at_least_one_pic" />
    <input type="hidden" id="povtarqshti_se_izobrajeniq" value="no"  name="povtarqshti_izobrajeniq" />
    <input type="button" onclick="choose_another_file()" id="add_image" /></br>
     
    <input type="submit" value="Добави!"  name="submitche"  id="dobavi_zapis" disabled="disabled">
     
    </form>
     
     
    <?PHP
    if(isset($_POST["submitche"]))
    {
           
           
            // vzimane na stoinostite ot tekstovite poleta
            $kategoriq = $_POST["kategorii"];
            $marka = $_POST["marka"];
            $model = $_POST["model"];
           
            $godina_na_proizvodstvo = $_POST["godina_na_proizvodstvo"];
            if($godina_na_proizvodstvo=="")
            {
                    $godina_na_proizvodstvo ="NULL";
            }
            else
            {
                    $godina_na_proizvodstvo ="'$godina_na_proizvodstvo'";
            }
           
            $dopulnitelna_informaciq = $_POST["tekstova_zona"];
            if(empty($dopulnitelna_informaciq))
            {
                    $dopulnitelna_informaciq = "NULL" ;
            }
            else
            {
                    $dopulnitelna_informaciq = "'$dopulnitelna_informaciq'" ;
            }
           
            $v_nalichnost = $_POST["available"];
           
            // konekciq kum bazata danni
            $db = new MYSQL_DB();
            $db->connect();
            $db->select_db();
            $db->set_names_utf_8();
            $db->query="select * from advanced";
            $db->run_query() ;
            $db->number_of_results_found_fn();
            $namereni_rezultati = $db->number_of_results_found ;
            $id ;
            if($namereni_rezultati == 0)
            {
                    $id = 1 ;
            }
            else
            {
                    $db->query="SELECT COUNT(*) as total FROM advanced";
                    $db->run_query();
                    $db->number_of_results_found_fn() ;
                    $rows = $db->number_of_results_found ;
                    $row = mysql_fetch_array($db->query_result) ;
                    $total_rows = $row[0];
                    $last_row_index = $total_rows - 1 ;
                    $db->query="select Zapis_ID from advanced limit $last_row_index , 1 ";
                    $db->run_query();
                    $row = mysql_fetch_array($db->query_result) ;
                    $last_id_value = $row[0] ;
                    $id = $last_id_value + 1 ;
                   
                    // da se testva
            }
            //echo "ID na posledniq red $id <br/>" ; // testov red
           
           
            $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();
            //echo $latin_name."<br/>"; // testov red
           
            $number_of_images = $_POST['number_of_images']; // integer
            $number_of_real_images = 0 ;
            $at_least_one_pic = false ;
            for($i = 1 ; $i <= $number_of_images ; $i++) // proverka dali izobshto ima edno izobrano izobrajenie
            {
                    $file_name = $_FILES["file_name_$i"]["name"];
                   
                    if($file_name == "")
                    {
                            continue ;
                    }
                    else
                    {
                            $at_least_one_pic = true ;
                            $number_of_real_images++ ;
                    }
                   
            }
           
            //echo " Nomer na poleta za kachvane na izobrajeniq : $number_of_images <br/>"; // testov red
            //echo "Nomer na realnite izobrajeniq $number_of_real_images <br/> ";
           
            $masiv = array(); // masiv sudurjash imenata na failove i tehnite razshireniq
            for($i = 1 ; $i <= $number_of_images ; $i++)
            {      
                    if($_FILES["file_name_$i"]["name"] == "")
                    {
                            continue ;
                    }
                    else
                    {
                            $masiv[] = $_FILES["file_name_$i"]["name"];
                    }
                           
            }
     
           
            for($i = 0 ; $i <  $number_of_real_images ; $i++)   // proverka da nqma povtarqshti se izobrajeniq
            {
                   
                    for($z = 0  ; $z < $number_of_real_images  ; $z++)
                    {      
                           
                            if($z == $i)
                            {
                                    continue ;
                            }
                            else
                            {
                                   
                                    if($masiv[$i]==$masiv[$z])
                                    {
                                            echo "Не можеш да качиш две повтарящи се изображения ! Име на повтарящото се изображение : ".$masiv[$i];
                                            exit ;
                                    }
                                   
                            }
                           
                    }
                   
                   
            }
           
            if($at_least_one_pic == false)
            {
                    echo "Не сте избрали изображение . Задължително е да изберете поне едно";
                    exit ;
            }
            else
            {
                    $original_images_string ="" ;
                    $small_images_string ="";
                    $start = 1 ;
                    $upload_folder_for_big_images="images/Big_images/";
                    $upload_folder_for_small_images="images/Small_images/";
                    // 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
                    // kum realnite izobrajeniq
                    for($i = 1 ; $i <= $number_of_images  ; $i++)
                    {
                            $file_name = $_FILES["file_name_$i"]["name"];
                            if($file_name == "")
                            {                      
                                    continue ;
                            }
                            $extention = substr($file_name, -4) ;
                            $path_plus_filename =$upload_folder_for_big_images.$latin_name."_pic_".$start.$extention ;
                            $try_to_upload =        move_uploaded_file($_FILES["file_name_$i"]["tmp_name"] , "../".$path_plus_filename);
                                    if($try_to_upload == false)
                                    {
                                            echo "problem pri uploada na source image !!!!";
                                            exit ;                         
                                    }
                            $original_images_string  .= $path_plus_filename ;
                            $original_images_string  .="|";
                           
                            resize_image("../".$path_plus_filename ,'210','180',$upload_folder_for_small_images.$latin_name."_pic_".$start.$extention  );
                            $small_images_string .= $upload_folder_for_small_images.$latin_name."_pic_".$start.$extention ;
                            $small_images_string .="|";
                            $start++;
                    }
            }
            $original_images_string =substr($original_images_string ,0 ,-1 ) ;
            $small_images_string =substr($small_images_string , 0 , -1 ) ;
           
            $data = date("Y-m-d");
            $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' );";
            //echo $db->query ;
            $db->run_query() ;
            $db->affected_rows();
            if($db->number_of_affected_rows==1)
            {
                    echo "Успешно добавихте запис за $marka_trimmed";
            }
            else
            {
                    echo "Проблем с добавянето на записа !";
            }
    }
     
    ?>
    </div>
    </body>
    </html>

PM MAIL   Вверх
Aliance
Дата 15.12.2014, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



 smile 
Код

$o_moi_bog // ya nastolko ofgel 4to poterial dar rechi

PM MAIL WWW ICQ Skype   Вверх
whatisnot
Дата 15.12.2014, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: 1
Всего: 2



Допустим, что onchange="validaciq_na_izobrajeniqta()" возвращает количество выбранных файлов с записью их в поле name="number_of_images". Но даже при таком раскладе, это бессмыслица для сервера. Можно на стороне клиента в сценарии validaciq_na_izobrajeniqta() получить количество выбранного для указания в прогрессе загрузки, просчитать размер выбранного и на основе настроеек сервера сразу дать понять можно ли загрузить и такое количество, и такой объем. А если еще требуется и изменение размеров, то указать хватит ли объема памяти выделенной на сервере для обработки того или иного изображения.

Это для клиента, но клиент не всегда "хороший парень", и что будет, если я впарю вам "левую" форму с input type="hidden" id="hidden_value" value="10000000000000"  name="number_of_images"?

Даже я "хороший парень", все равно это поле формы не имеет смысла для сервера, ибо можно выбрать 5 файлов, а на сервере получим только 3 из них, просто по причине ошибки загрузки. Следовательно for($i = 1 ; $i <= $number_of_images ; $i++)... это пустое занятие.

Загрузку файлов, вернее помещение их в каталог назначения и сохранение о них записей для их владельцев надо начинать не с if($_FILES["file_name_$i"]["name"]..., а с проверки ключа "error" массива $_FILES. Делать это в цикле не обязательно, можно array_map плюс пересечение массивов, итоговый массив полученный таким образом и даст количество загруженных реально файлов. Вот этот массив и нужно обходить в цикле выполняя необходимые операции над файлами.

$extention = substr($file_name, -4) - это не только зло, но и опасно. Во-первых не $file_name = $_FILES["file_name_$i"]["name"], а $file_name = basename($_FILES["file_name_$i"]["name"]), во-вторых если изображения, то хотябы getimagesize(), а не substr($file_name, -4) - как минимум под честным именем фото я могу вам загрузить много, много мусора, а как максимум можно и поплатиться доверчивостью.    

Это сообщение отредактировал(а) whatisnot - 15.12.2014, 20:01
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0889 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.