|
|
|
|
|
для: Eduard
(13.01.2010 в 08:40)
| | move_uploaded_file() в случае, если временная дирректория находится на том же носителе что и каталог куда загружается файл, просто перемещает его, а не копирует. | |
|
|
|
|
|
|
|
для: 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' /> <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 | |
|
|
|
|
|
|
|
для: neadekvat
(13.01.2010 в 18:17)
| | Точно! Работает! Больше спасибо за Ваши подсказки! Я думал странно будет если в цикле будет выполнятся header("Location: ../../index.php?id=233&id_parent=".$_POST['id_catalog']);
Теперь осталась проблема с ошибкой при добавлении меньшего количества файлов чем присутствует полей. Сейчас пытаюсь это сделать с помощью кнопочки "+", при нажатии на которую будет просто появляться дополнитеьное поле file. То есть сколько нужно полей, столько и нажать раз кнопочку. | |
|
|
|
|
|
|
|
для: Eduard
(13.01.2010 в 18:14)
| | $query = "INSERT INTO journal_photo VALUES (NULL, '$smallimage[$i]', '$image[$i]', '', ".$_POST['id_catalog'].")";
это только текст запроса
if(mysql_query($query)) а вот это сам запрос. и он находится ВНЕ цикла, а долженть быть в нем.. | |
|
|
|
|
|
|
|
для: neadekvat
(13.01.2010 в 16:15)
| | Подскажите, пожалуйста, что я некорретно в коде написал? | |
|
|
|
|
|
|
|
для: 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], 133, 100))
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 - это значение каталога с фотографиями, передаётся верно, должен у обоих строк одинаковым. | |
|
|
|
|
|
|
|
для: Eduard
(13.01.2010 в 16:13)
| | Распишите нормально логику, что за pos, откуда, как..
Начните с начала, закончите концом, максимально полно. Иначе вряд ли кто-то сможет помочь.. | |
|
|
|
|
|
|
|
для: neadekvat
(13.01.2010 в 14:52)
| | Проблема в том, что pos находистя в другом файле | |
|
|
|
|
|
|
|
для: Eduard
(13.01.2010 в 09:10)
| | Запрос (mysql_query) должен выполняться для кжадой картинки тоже в цикле
А ваш выполняется уже вне цикла, то есть только один. КОнечно только одна запись добавиться | |
|
|
|
|
|
|
|
для: 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 тоже в массив. Подскажите, пожалуйста. | |
|
|
|
|