Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Множественная загрузка

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]  [51-57] 

 
 автор: ols   (13.01.2010 в 19:42)   письмо автору
 
   для: Eduard   (13.01.2010 в 08:40)
 

move_uploaded_file() в случае, если временная дирректория находится на том же носителе что и каталог куда загружается файл, просто перемещает его, а не копирует.

  Ответить  
 
 автор: Eduard   (13.01.2010 в 19:03)   письмо автору
 
   для: neadekvat   (13.01.2010 в 18:17)
 

Всё сделал! Больше ошибок не возникает никаких. Работает как часы!

<script type="text/javascript"> 
function remove_more_upload(id) { 
document.getElementById("multiple").removeChild(document.getElementById('multiple' + id )); 
}
function add_more_upload() {
var id = document.getElementById('proxid').value ;
var div = document.getElementById('multiple');
var childdiv = document.createElement("div");
childdiv.setAttribute('id','multiple'+ id); 

var html = "<br /><input style='height:22px;' type='file' name='image[]' maxlength='' value='' class='smallname' />&nbsp;<input type='button' style='' name='files_" + id + "' value='-' style='width: 26px; height:26px;' onclick='remove_more_upload(" + id + ")' title='' />";

childdiv.innerHTML = html;
div.appendChild(childdiv) ;
document.getElementById('proxid').value++; 
}
</script>

...
...
...

<input style='height:22px;' type="file" name="image[]" class="smallname" />
<input type="button" name="files_" value="+" style="width: 26px; height:26px;" onclick="add_more_upload()" title="" /> 
<input type="hidden" name="proxid" id="proxid" value="1" />
<div id="multiple"></div><br />

...
...
...


Уважаемый neadekvat! Выражаю вам искреннюю благодарность за помощь в понимании задачи и нахождении пути для её решения!

П. С. Теперь пытаюсь решить проблему с куки и системой оценки записей в блоге. Пока без успешно. http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=70964

  Ответить  
 
 автор: Eduard   (13.01.2010 в 18:37)   письмо автору
 
   для: neadekvat   (13.01.2010 в 18:17)
 

Точно! Работает! Больше спасибо за Ваши подсказки! Я думал странно будет если в цикле будет выполнятся header("Location: ../../index.php?id=233&id_parent=".$_POST['id_catalog']);

Теперь осталась проблема с ошибкой при добавлении меньшего количества файлов чем присутствует полей. Сейчас пытаюсь это сделать с помощью кнопочки "+", при нажатии на которую будет просто появляться дополнитеьное поле file. То есть сколько нужно полей, столько и нажать раз кнопочку.

  Ответить  
 
 автор: neadekvat   (13.01.2010 в 18:17)   письмо автору
 
   для: Eduard   (13.01.2010 в 18:14)
 

$query = "INSERT INTO journal_photo VALUES (NULL, '$smallimage[$i]', '$image[$i]', '', ".$_POST['id_catalog'].")";
это только текст запроса
if(mysql_query($query)) а вот это сам запрос. и он находится ВНЕ цикла, а долженть быть в нем..

  Ответить  
 
 автор: Eduard   (13.01.2010 в 18:15)   письмо автору
 
   для: neadekvat   (13.01.2010 в 16:15)
 

Подскажите, пожалуйста, что я некорретно в коде написал?

  Ответить  
 
 автор: Eduard   (13.01.2010 в 18:14)   письмо автору
 
   для: neadekvat   (13.01.2010 в 16:15)
 

Итак, я сначала решил вообще без этго pos сделать. Я сделал там систему отображения по порядку с помощью этого pos. Но пока бы и так сделать. У меня пока что в принципе не выходит сделать две записи в БД, хотя query находится в цикле. Вот код:

<?php 
  Error_Reporting
(E_ALL & ~E_NOTICE); 
  require_once (
"../../../config.php"); 
  include 
"util.php";   

  
$count count($_FILES['image']['name']) - 1;
  for (
$i 0$i <= $count$i++) {  
  
sleep(1);

  if (!empty(
$_FILES['image']['tmp_name'][$i])) 
  { 
    
$ext strrchr($_FILES['image']['name'][$i], ".");  
    
$image[$i] = "../i/journal/".date("YmdHis")."$ext"
    
$smallimage[$i] = "../i/journal/".date("YmdHis")."_s$ext";   
    if (
copy($_FILES['image']['tmp_name'][$i], "../../".$image[$i])) 
    { 
      
unlink($_FILES['image']['tmp_name'][$i]); 
      
chmod("../../".$image[$i], 0644); 
    } 
  } else 
links($_POST['id_catalog'], "Изображение не передана на сервер"); 
  if(!
resizeimg($image[$i], $smallimage[$i], 133100)) 
  
links($_POST['id_catalog'], "Ошибка при создании уменьшенной копии изображения с помощью библиотеки GDLib"); 

  
$query "INSERT INTO journal_photo VALUES (NULL, '$smallimage[$i]', '$image[$i]', '', ".$_POST['id_catalog'].")"
  
 } 
  
  if(
mysql_query($query)) header("Location: ../../index.php?id=233&id_parent=".$_POST['id_catalog']); 
  else 
links($_POST['id_catalog'], "Ошибка при добавлении нового изображения"); 
  function 
links($id_catalog,$msg
  { 
    echo 
"<p>".$msg."</p>"
    echo 
"<p><a href=# onClick='history.back()'>Вернуться назад</a></p>"
    exit(); 
  } 
?> 


Если загружаю два файла, то скрипт без ошибок выполняется, создаются 4 файла (+ 2 миниатюры) там где нужно, но в БД добавляется одна строка вместо двух.

Таблица БД состоит из: id_photo (индекс), small, big, pos, id_catalog

При исполнении скрипта создаётся такая 1 строка (расположил в столбик для наглядности):

146
../i/journal/20100113160450_s.jpg
../i/journal/20100113160450.jpg
0
24

А должен ещё одину строку добавлять с именами других файлов. По сути должен изменится:
1. индекс.
2. путь к миниатюре
3. путь к большой фотографии
4. 0 - это pos, который пока не нужен
5. 24 - это значение каталога с фотографиями, передаётся верно, должен у обоих строк одинаковым.

  Ответить  
 
 автор: neadekvat   (13.01.2010 в 16:15)   письмо автору
 
   для: Eduard   (13.01.2010 в 16:13)
 

Распишите нормально логику, что за pos, откуда, как..
Начните с начала, закончите концом, максимально полно. Иначе вряд ли кто-то сможет помочь..

  Ответить  
 
 автор: Eduard   (13.01.2010 в 16:13)   письмо автору
 
   для: neadekvat   (13.01.2010 в 14:52)
 

Проблема в том, что pos находистя в другом файле

  Ответить  
 
 автор: neadekvat   (13.01.2010 в 14:52)   письмо автору
 
   для: Eduard   (13.01.2010 в 09:10)
 

Запрос (mysql_query) должен выполняться для кжадой картинки тоже в цикле
А ваш выполняется уже вне цикла, то есть только один. КОнечно только одна запись добавиться

  Ответить  
 
 автор: Eduard   (13.01.2010 в 09:10)   письмо автору
 
   для: neadekvat   (13.01.2010 в 01:48)
 

Доброе утроn neadekvat,

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

Проблема в добавлении одной ячейки. Ячейки pos, индексной. 1 строчка создаётся с одним файлом, а другая нет.

В файле с формой вот такой код установлен:



   if(!isset($pos))
  {
  $query = "SELECT MAX(pos) AS maxpos FROM journal_photo WHERE id_catalog=$id_catalog";

    $maxpos = mysql_query($query);
    if($maxpos)
    {
      if(mysql_num_rows($maxpos)>0) $pos = mysql_result($maxpos,0) + 1;
      else $pos = 1;
    } else $pos = 1;
  }    

...
...
...

   <input type="hidden" name="pos" value="<?php echo $pos?>">





и в имполняемом файле:


  if(empty($_POST['pos'])) links($_POST['id_catalog'], "Не введена позиция изображения");

...
...
...

  $query = "INSERT INTO journal_photo VALUES (NULL, '$smallimage[$i]', '$image[$i]', ".$_POST['pos'].", ".$_POST['id_catalog'].")";




То есть как-то надо загнать pos тоже в массив. Подскажите, пожалуйста.

  Ответить  

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]  [51-57] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования