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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Upload нескольких файлов и вывод, Загрузка несколько файлов с добавлениямы 
:(
    Опции темы
ekodrive
  Дата 2.4.2012, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброе время суток, уже вот два дня ищу по сайтам ни чего подходящего не смог найти задача такая :
Нужна загрузить не определенную количеству картинок может и 6 шт может и 2 шт, и после загрузки добавить ссылку в базу данных  для далнейшего вывода массива с картинками. Вот сделал это с одним файлом а нужно сделать с не определенным количеством.

index.php
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<title>Upload</title>
</head>
<body>
  <form action="ok.php" method="post" name="formText" enctype="multipart/form-data">
<table width="505" height="89" border="1"><tr>
                        <td height="53"><p>Select file
                                <input type="file" name="filename" />
                                <br>
                            </p></td></tr><tr>
                        <td height="28"><input type="submit" name="button" id="button" value="Upload" />
                            <br /><label></label></td></tr>
                </table></form>

</body>
</html>


ok.php
Код

<?
$host='localhost';
$user = 'up';
$db = 'up';
$pass = '654321';
mysql_connect($host, $user, $pass)or die(mysql_error());
mysql_select_db($db);
if ($_FILES["filename"]["size"] > 1024 * 3 * 1024) {
    echo ("up 3 mb");
    exit;
}
// Проверяем загружен ли файл
if (is_uploaded_file($_FILES["filename"]["tmp_name"])) {
    // Если файл загружен успешно, перемещаем его
    // из временной директории в конечную
    move_uploaded_file($_FILES["filename"]["tmp_name"], "upload/" . $_FILES["filename"]["name"]);
    echo $_FILES["filename"]["name"];
    $do = mysql_selectdb(_DB_NAME_);
    $q = "INSERT INTO baza (Id,url) values('','upload/" . $_FILES['filename']['name'] . "')";
    mysql_query($q);   
   } else {
    echo("ok");
}
exit;
?>

 
все работает на ура с одним файлом а несколько файлов как ??

--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
ElGuapo
Дата 2.4.2012, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый
*


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

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



Ну проще всего с помощью JS по ссылке "Добавить еще один файл?" генерировать еще один элемент: 
Код

<input type="file" name="filename2" />

И далее filename3, filename4 и т.д.
 
А в файле ok.php добавить цикл для перебора, какой-нибудь такой:
Код

for ($i = 1; $i <= 10; $i++) {
     if (array_key_exists("filename".$i,$_POST)) {
   
     ...

     }
}

PM MAIL   Вверх
ekodrive
Дата 3.4.2012, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Мне нужна чтоб пользователь смог выбрать одновременно несколько файлов. Нашел вот одну загрузил для теста на свой хост
ссылка для теста, ссылка для загрузки скрипта. В этом скрипте все рабеотает как мне надо но не знаю каким образом вытащить имена файлов и добавит в мускул : ( уже сума схожу...
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
Sentox
Дата 3.4.2012, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

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



Блин ну опять же первый тыц  в гугле
http://www.simplecoding.org/zagruzka-fajlo...load-i-php.html
http://vremenno.net/js/swfupload-jquery-file-upload/

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

Это сообщение отредактировал(а) Sentox - 3.4.2012, 08:21
PM MAIL   Вверх
ekodrive
Дата 3.4.2012, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Прочитайте внимательно пожалуйста мне нужно, добавить имена файлов в базу данных. У меня есть этот скрипт который вы дали ссылку.
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
Sentox
Дата 3.4.2012, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

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



var_dump($_FILES); или логирование в файл массива.
И всё станет на свои места. 
Но судя по тому что я увидел в тестовой ссылке читать стоит не мне smile
Зарузка происходит не пакетом а по одиночно.

Добавлено @ 08:34
$_FILES['Filedata1']
$_FILES['Filedata2']
$_FILES['Filedata3']
Что то вроде этого должно быть в массиве после загрузки нескольких файлов. Если же нет ни одного! возвращаемся к моему первому посту и читаем про идентифиатор сессии передаваемый в ручную из js.

На сервере же принимаем 
Код

session_start((int) $_REQUEST['YOUR_VARIABLE_SID']);
, после этого будут доступны файлы в глобальном массиве $_FILES

Это сообщение отредактировал(а) Sentox - 3.4.2012, 08:49
PM MAIL   Вверх
Sentox
Дата 3.4.2012, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

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



Блок параметров для jquery загрузчика из http://vremenno.net/js/swfupload-jquery-file-upload/
Код

post_params: 
{
      "ASPSESSID": ASPSESSID
},


Это сообщение отредактировал(а) Sentox - 3.4.2012, 08:52
PM MAIL   Вверх
ekodrive
Дата 3.4.2012, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

<?php
$host='localhost';
$user = 'up';
$db = 'up';
$pass = '654321';
mysql_connect($host, $user, $pass)or die(mysql_error());
mysql_select_db($db);
$uploadDir = 'uploads/'; //папка для хранения файлов
$allowedExt = array('jpg', 'jpeg', 'png', 'gif');
$maxFileSize = 2 * 1024 * 1024; //1 MB

//если получен файл
if (isset($_FILES)) {
    //проверяем размер и тип файла
    $ext = end(explode('.', strtolower($_FILES['Filedata']['name'])));
    if (!in_array($ext, $allowedExt)) {
        return;
    }
    if ($maxFileSize < $_FILES['Filedata']['size']) {
        return;
    }
    if (is_uploaded_file($_FILES['Filedata']['tmp_name'])) {
        $fileName = $uploadDir.$_FILES['Filedata']['name'];
        move_uploaded_file($_FILES['Filedata']['tmp_name'], $fileName);
         $q = "INSERT INTO baza (Id,url) values('','".$fileName."')";
         mysql_query($q);
        echo 'ALL DONE';
    }
}?>



Добавил 
Код

     $q = "INSERT INTO baza (Id,url) values('','".$fileName."')";
         mysql_query($q);

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

Sentox, В массивах плоха  разбираюсь.
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
Sentox
Дата 3.4.2012, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

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



Цитата(ekodrive @ 3.4.2012,  08:52)
Знаю что так и должно быть , осталось только добавить все в одну строку.

Это как?  smile 
PM MAIL   Вверх
ekodrive
Дата 3.4.2012, 09:23 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



сделать так чтоб $filename был равен на имена файлов которые были загружены чтоб потом добавить в базу имена файлов а потом для вывода использовать explode и выводить картинки. Ну $filename=img1.jpg||img2.jpg||img3.jpg.
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
ekodrive
Дата 3.4.2012, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



вот нашел вариант который я сам хот понимаю что к чему.
form_to_upload.php

Код

<form name="our_form1" method="post" action="form_to_upload2.php">
  <p>Введите количество полей, которое Вам нужо. 9 максимум.</p>
  <p>
    <input name="upload_input" maxlength="1" id="upload_input" type="text">
  </p>
  <p>
    <input name="Submit" type="submit" value="Отправить">
  </p>
</form>


form_to_upload2.php

Код

<form name="our_form2" enctype="multipart/form-data" method="post" action="final_process.php">
  <p>
<?php
    $upload_input = $_POST['upload_input'];
    for($x=0;$x<$upload_input;$x++) {
    ?>
  <input name="to_upload_file"<? echo $x;?>" type="file" id="to_upload_file"<? echo $x;?>">
  </p>
<?php
    // конец массива
    }
    ?>
   <p>
   <input type="hidden" name="upload_input" value="<? echo $upload_input;?>">
   <input name="Submit" type="submit" value="Отправить">
   </p>
</form>


final_process.php

Код

$upload_input = $_POST['upload_input'];
// начало цикла
for($x=0;$x<$upload_input;$x++)
{
 $name_of_the_file = $_FILES['to_upload_file'. $x]['name'];
 $name_of_the_file = stripslashes($name_of_the_file);
 $name_of_the_file = str_replace("'","",$name_of_the_file);
 $copy = copy($_FILES['to_upload_file'. $x]['tmp_name'],$name_of_the_file);
 // проверим удачно ли
 if($copy){
 echo "$name_of_the_file | загружен удачно!"; }
 else {
 echo "$name_of_the_file | не может быть загружен!"; }
} // конец цикла


легко и проста но проблема остается актуальным присваивать имена файлов к $massiv_faylov и с помощи инсерт добавить в определенную полю таблицы.
--------------------
Смерть-Это только начало!!!
PM MAIL WWW ICQ   Вверх
Fortop
Дата 4.4.2012, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

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



Цитата(ekodrive @  3.4.2012,  09:23 Найти цитируемый пост)
сделать так чтоб $filename был равен на имена файлов которые были загружены

Это неправильно.
Храните имена картинок в отдельной таблице как и должно быть, а для связи используйте еще одну

1я таблица
ид_картинки, имя картинки

2я таблица
ид_записи_к_которой_хотите_привязать_картинку, ид_картинки

Дальше курить мануалы в сторону SQL и JOIN



--------------------
Мир это Я.
Живее всех живых.
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.

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


 




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


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

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