помогите разобрать код!
есть скрипт загрузки изображения
при добавлении изображения в базу данных надо добавить два параметра с переменными $login $idUserAdv из файла add_adv.php так вот ссылка на сам файл http://localhost/angren/index.php?view=add_adv через view можно и login и idUserAdv вытащить. но вот проблема в том что есть отдельный файл upload.php и в него я никак не могу передать эти две переменные. 1 страница это наш add_adv.php для наглядного примера
<?php
if(chekUser($_SESSION["login"], $_SESSION["password"]))
{
$getUserData = getValidRegLogin($_SESSION["login"]);
for($i = 0; $i < count($getUserData); $i++)
{
$id = $getUserData[$i]["id"];
$tel = $getUserData[$i]["tel"];
$email = $getUserData[$i]["email"];
$username = $getUserData[$i]["username"];
}
if(!empty($_POST["add_advert"]))
{
$date = date('YmdHis');
$login = $_SESSION["login"];
$title = htmlspecialchars($_POST["title"]);
$price = htmlspecialchars($_POST["price"]);
$description = htmlspecialchars($_POST["description"]);
$list = htmlspecialchars($_POST["list"]);
$sub_cat = htmlspecialchars($_POST["sub_cat"]);
$valuta = htmlspecialchars($_POST["valuta"]);
$success = addAdvert($date, $apend, $login, $title, $price, $description, $list, $sub_cat, $valuta);
$getUserAdvert = getUserAdvert($login, $date, $price, $title);
$idUserAdv = $getUserAdvert['id'];
?>
<script>
document.location.href = 'index.php?view=advert&id=<?=$idUserAdv?>';
</script>
}
?>
?>
<form type="add_adv" class="submit" enctype="multipart/form-data" action="" method="post"> <div class="add_adv "> <div class="p">Полное описание</div><textarea name="description" cols="40" rows="5"></textarea> <div class="p">Добавить изображения</div> <div id="drop-files" ondragover="return false"> <p>Перетащите изображение сюда</p>макс 6 изображений<br /> <form id="frm"> <input type="file" id="uploadbtn" multiple /> </form> </div> <!-- Область предпросмотра --> <div id="uploaded-holder"> <div id="dropped-files"> <!-- Кнопки загрузить и удалить, а также количество файлов --> <div id="upload-button"> <center> <div class="clear"></div> <a href="#" class="upload">Загрузить</a> -эта кнопка не нужна. нужно чтобы при отправке формы добавлялись картинки <a href="" class="delete">Удалить все</a> <span>0</span> <!-- Прогресс бар загрузки --> <div id="loading"> <div id="loading-bar"> <div class="loading-color"></div> </div> <div id="loading-content"></div> </div> </center> </div> </div> </div> <!-- Список загруженных файлов --> <div id="file-name-holder"> <ul id="uploaded-files"> <h1>Загруженные файлы</h1> </ul> </div> <input type="submit" name="add_advert" class="add_button" value="Опубликовать объявление"> вот кнопка отправки формы </div> </form> вот сам js код
var $ = jQuery.noConflict();
$(document).ready(function() {
jQuery.event.props.push('dataTransfer');
var maxFiles = 6;
var errMessage = 0;
var defaultUploadBtn = $('#uploadbtn');
var dataArray = [];
$('#uploaded-files').hide();
$('#drop-files').on('drop', function(e) {
var files = e.dataTransfer.files;
if (files.length <= maxFiles) {
loadInView(files);
} else {
alert('Вы не можете загружать больше '+maxFiles+' изображений!');
files.length = 0; return;
}
});
defaultUploadBtn.on('change', function() {
var files = $(this)[0].files;
if (files.length <= maxFiles) {
loadInView(files);
$('#frm').each(function(){
this.reset();
});
} else {
alert('Вы не можете загружать больше '+maxFiles+' изображений!');
files.length = 0;
}
});
function loadInView(files) {
// Показываем обасть предпросмотра
$('#uploaded-holder').show();
// Для каждого файла
$.each(files, function(index, file) {
if (!files[index].type.match('image.*')) {
if(errMessage == 0) {
$('#drop-files p').html('Эй! только изображения!');
++errMessage
}
else if(errMessage == 1) {
$('#drop-files p').html('Стоп! Загружаются только изображения!');
++errMessage
}
else if(errMessage == 2) {
$('#drop-files p').html("Не умеешь читать? Только изображения!");
++errMessage
}
else if(errMessage == 3) {
$('#drop-files p').html("Хорошо! Продолжай в том же духе");
errMessage = 0;
}
return false;
}
if((dataArray.length+files.length) <= maxFiles) {
$('#upload-button').css({'display' : 'block'});
}
else { alert('Вы не можете загружать больше '+maxFiles+' изображений!'); return; }
var fileReader = new FileReader();
fileReader.onload = (function(file) {
return function(e) {
dataArray.push({name : file.name, value : this.result});
addImage((dataArray.length-1));
};
})(files[index]);
fileReader.readAsDataURL(file);
});
return false;
}
function addImage(ind) {
if (ind < 0 ) {
start = 0; end = dataArray.length;
} else {
start = ind; end = ind+1; }
if(dataArray.length == 0) {
$('#upload-button').hide();
$('#uploaded-holder').hide();
} else if (dataArray.length == 1) {
$('#upload-button span').html("Был выбран 1 файл");
} else {
$('#upload-button span').html(dataArray.length+" файлов были выбраны");
}
for (i = start; i < end; i++) {
if($('#dropped-files > .image').length <= maxFiles) {
$('#dropped-files').append('<div id="img-'+i+'" class="image" style="background: url('+dataArray[i].value+'); background-size: cover;"> <a href="#" id="drop-'+i+'" class="drop-button">Удалить изображение</a></div>');
}
}
return false;
}
function restartFiles() {
$('#loading-bar .loading-color').css({'width' : '0%'});
$('#loading').css({'display' : 'none'});
$('#loading-content').html(' ');
$('#upload-button').hide();
$('#dropped-files > .image').remove();
$('#uploaded-holder').hide();
dataArray.length = 0;
return false;
}
$("#dropped-files").on("click","a[id^='drop']", function() {
var elid = $(this).attr('id');
var temp = new Array();
temp = elid.split('-');
dataArray.splice(temp[1],1);
$('#dropped-files > .image').remove();
addImage(-1);
});
$('#dropped-files #upload-button .delete').click(restartFiles);
// Загрузка изображений на сервер - эта функция отправляет переменные и загружает картинки. я ее не могу разобрать
//надо чтобы из add_adv.php отправлялись еще две переменных $login $id. так вот не могу это реализовать
$('#upload-button.upload').click(function() {
$("#loading").show();
var totalPercent = 100 / dataArray.length;
var x = 0;
$('#loading-content').html('Загружен '+dataArray[0].name);
$.each(dataArray, function(index, file) {
// загружаем страницу и передаем значения, используя HTTP POST запрос
$.post('templates/default/pages/upload.php', dataArray[index], function(data) {
var fileName = dataArray[index].name;
++x;
$('#loading-bar .loading-color').css({'width' : totalPercent*(x)+'%'});
if(totalPercent*(x) == 100) {
$('#loading-content').html('Загрузка завершена!');
setTimeout(restartFiles, 1000);
} else if(totalPercent*(x) < 100) {
$('#loading-content').html('Загружается '+fileName);
}
var dataSplit = data.split(':');
if(dataSplit[1] == 'загружен успешно') {
$('#uploaded-files').append('<li><a href="images/'+dataSplit[0]+'">'+fileName+'</a> загружен успешно</li>');
} else {
$('#uploaded-files').append('<li><a href="images/'+data+'. Имя файла: '+dataArray[index].name+'</li>');
}
});
});
$('#uploaded-files').show();
return false;
});
$('#drop-files').on('dragenter', function() {
$(this).css({'box-shadow' : 'inset 0px 0px 20px rgba(0, 0, 0, 0.1)', 'border' : '4px dashed #bb2b2b'});
return false;
});
$('#drop-files').on('drop', function() {
$(this).css({'box-shadow' : 'none', 'border' : '4px dashed rgba(0,0,0,0.2)'});
return false;
});
});
а вот сам файл upload.php в который я не могу передать две эти переменные
<?php
// Создаем подключение к серверу
$db = mysql_connect ("localhost","root","");
// Выбираем БД
mysql_select_db ("ads",$db);
// Все загруженные файлы помещаются в эту папку
$uploaddir = 'userFiles/';
// Вытаскиваем необходимые данные
// вот тут выходят два параметра. и так надо еще две переменные сюда а потом в базу данных
$file = $_POST['value'];
$name = $_POST['name'];
// Получаем расширение файла
$getMime = explode('.', $name);
$mime = end($getMime);
// Выделим данные
$data = explode(',', $file);
// Декодируем данные, закодированные алгоритмом MIME base64
$encodedData = str_replace(' ','+',$data[1]);
$decodedData = base64_decode($encodedData);
// Вы можете использовать данное имя файла, или создать произвольное имя.
// Мы будем создавать произвольное имя!
$randomName = substr_replace(sha1(microtime(true)), '', 12).'.'.$mime;
// Создаем изображение на сервере
if(file_put_contents($uploaddir.$randomName, $decodedData)) {
// Записываем данные изображения в БД
mysql_query ("INSERT INTO images (date,catalog,filename) VALUES (NOW(),'$uploaddir','$randomName')");
echo $randomName.":загружен успешно";
}
else {
// Показать сообщение об ошибке, если что-то пойдет не так.
echo "Что-то пошло не так. Убедитесь, что файл не поврежден!";
}
?>
конечно замудрил я не много. но постарался подробно объяснить всю суть вопроса! второй день уже мучаюсь помогите! пробовал много разных способов, и везде свои проблемы тоже не смог решить. :help: :help: :help: |
Грузить изображения на сервер как base64, это круто, только зачем?
Проверять тип файла, а тем более изображения, да еще когда он уже как строка имеется, это смелое решение, но необдуманное. Всегда можно передать что-то куда-то. Не надо было столько кода вываливать, а просто пояснить каким образом файл add_adv.php связан с файлом upload.php при загрузки изображений - подключается, к первому, перенаправляется на него, другое...? |
так я в js не особо разбираюсь
этот скрипт я скачал. и хочу просто добавить его себе на сайт. просто я много чего перебрал. сейчас тоже нашел один путь но пока не получается.
этот скрипт очень удобный. сразу показывает все открытые изображения и нормально загружает и картинки и записи в базу. только надо добавить туда сам Id объявления чтобы при открытии объявления открывались по Id его картинки. я больше разбираюсь в php чем в js но по ходу дела всегда ковыряю скрипты. иногда получается иногда нет. так что вы мне посоветуете? |
Цитата:
Сразу просмотреть при загрузке, это не проблема. А пояснения так понимаю не будет, если скрипты чужие, а вы даже не понимаете как их связать. |
тогда посоветуйте мне нормальный скрипт загрузки изображений? как вы говорите не кривыми руками написанный) чтобы сразу показывал эскизы и мог загружать до 6 изображений, и корректную запись в базу данных!
заранее спасибо! |
Цитата:
Найти конкретный скрипт который бы выполнял на все 100% необходимые для вас действия на сервере не обязательно возможно. А вот добавить таковые операции скрипту готовому, это можно. |
| Часовой пояс GMT +3, время: 22:41. |