не могу понять почему ошибка.
пытаюсь разобраться с загрузкой файлов на сервер. взял шаблон из учебника, если тестить его отдельно - все работает, если прикручиваю на свой сайт, то выдает непонятные ошибки..
из формы передаются данные методом пост, обрабатываются в контроллере, поэтому не пишу в форме action="upload.php"
<form method="post" enctype="multipart/form-data">
<input type="file" name="userfile" />
начинается обработка данных из формы и на строчку
$_FILES['userfile']
выдает
Notice: Undefined index: userfile in C:\work\new.ru\www\admin\editvar\read_controller.php on line 188
как его надо определять? расскажите кто знает, плиз)
Спустя 17 минут, 27 секунд (17.05.2012 - 17:00) DruKot написал(а):
А что находится на 188-й строчке и на пару строчек выше? Похоже на ошибку синтаксиса.
Спустя 11 минут, 15 секунд (17.05.2012 - 17:11) megadom написал(а):
там как раз и находится строчка с
во всех строках где есть обращение к
пишет
вот я и не могу понять почему...
весь синтаксис правильный, испытан и работает если его запускать как отдельный скрипт, а не работает только при внедрении в мой сайт..
логика подсказывает что надо как то описать глобальный массив $_FILES..
НО КАК это сделать и в этом ли проблема.. вроде он должен быть определен
автоматом... :blink:
$info[] = $_FILES['userfile'];
во всех строках где есть обращение к
$_FILES['userfile']
пишет
Undefined index: userfile
вот я и не могу понять почему...
весь синтаксис правильный, испытан и работает если его запускать как отдельный скрипт, а не работает только при внедрении в мой сайт..
логика подсказывает что надо как то описать глобальный массив $_FILES..
НО КАК это сделать и в этом ли проблема.. вроде он должен быть определен
автоматом... :blink:
Спустя 19 минут, 59 секунд (17.05.2012 - 17:31) DruKot написал(а):
попробуй в самом начале файла прописать:
if (isset($_FILES['userfile'])) {$files=$_FILES['userfile'];}
и далее пользоваться этой переменной. Так же можно на каждом шаге прописать проверки, например:
if (isset($_FILES['userfile'])) {$files=$_FILES['userfile'];}else"не сущесвует массива";
if($userfile==''){unset($userfile);}else"не удаляется пустая переменная";
и тд, тогда найти ошибку будет намного проще.
if (isset($_FILES['userfile'])) {$files=$_FILES['userfile'];}
и далее пользоваться этой переменной. Так же можно на каждом шаге прописать проверки, например:
if (isset($_FILES['userfile'])) {$files=$_FILES['userfile'];}else"не сущесвует массива";
if($userfile==''){unset($userfile);}else"не удаляется пустая переменная";
и тд, тогда найти ошибку будет намного проще.
Спустя 12 минут, 51 секунда (17.05.2012 - 17:44) johniek_comp написал(а):
error_reporting(E_ALL); стоит, нужно так
$info[] = isset($_FILES['userfile']) ? $_FILES['userfile'] : null;
Спустя 44 минуты, 10 секунд (17.05.2012 - 18:28) megadom написал(а):
отлично..))) ошибку он не пишет.. но файл все равно не переписывает..))
просто не выводит сообщение.. шутка?
просто не выводит сообщение.. шутка?
Спустя 1 час, 3 минуты, 13 секунд (17.05.2012 - 19:31) megadom написал(а):
чувствую, что ошибка какая-то глупая.. но не могу понять..что может влиять на глобальные массивы? в .htaccess написано следующее..
AddDefaultCharset UTF-8
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
php_flag register_globals оn
ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
Options -Indexes
# php_value error_reporting 2047
# php_value error_log "c:/work/test.ru/www/log/error.log"
# php_flag log_errors on
# php_flag display_errors off
RewriteEngine on
RewriteRule ^admin/(.*)$ admin/index.php?route=$1 [L,QSA]
RewriteCond %{REQUEST_URI} !^/admin
RewriteCond %{REQUEST_URI} !^/favicon.ico
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
Спустя 55 минут, 51 секунда (17.05.2012 - 20:27) Gabriel написал(а):
print_r($_FILES)?
перед обработчиком?
перед обработчиком?
Спустя 24 минуты, 27 секунд (17.05.2012 - 20:52) megadom написал(а):
обработка в контроллере после нажатия кнопки в форме..
в начале формы пишу вот это...
<?php echo implode('<br> ', $_FILES);?>
выводит - пустое место...
в начале формы пишу вот это...
<?php echo implode('<br> ', $_FILES);?>
выводит - пустое место...
Спустя 6 минут, 29 секунд (17.05.2012 - 20:58) megadom написал(а):
как буд-то нет этого массива.. и не передается в него файл..
Спустя 57 секунд (17.05.2012 - 20:59) Gabriel написал(а):
хз почему ощущение, что намудрил при обработке.
Спустя 7 минут, 49 секунд (17.05.2012 - 21:07) megadom написал(а):
контроллер..
форма ввода...
ошибки выводит такие...
function uploadHandle($max_file_size = 100, $valid_extensions = array(), $upload_dir = '.')
{
$error = null;
$info = null;
$max_file_size *= 50024;
if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK)
{
// проверяем расширение файла
$file_extension = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);
if (in_array($file_extension, $valid_extensions))
{
// проверяем размер файла
if ($_FILES['userfile']['size'] < $max_file_size)
{
$destination = $upload_dir .'/' . $_FILES['userfile']['name'];
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination))
$info = 'Файл успешно загружен';
else
$error = 'Не удалось загрузить файл';
}
else
$error = 'Размер файла больше допустимого';
}
else
$error = 'У файла недопустимое расширение';
}
else
{
// массив ошибок
$error_values = array(
UPLOAD_ERR_INI_SIZE => 'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',
UPLOAD_ERR_FORM_SIZE => 'Размер файла превышает указанное значение в MAX_FILE_SIZE',
UPLOAD_ERR_PARTIAL => 'Файл был загружен только частично',
UPLOAD_ERR_NO_FILE => 'Не был выбран файл для загрузки',
UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',
UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск'
);
$error_code = $_FILES['userfile']['error'];
if (!empty($error_values[$error_code]))
$error = $error_values[$error_code];
else
$error = 'Случилось что-то непонятное';
}
return array('info' => $info, 'error' => $error);
}
/**
* Внесение изменений в данные о варианте
*/
if($ok)
{
$getid= $GET['id'];
if ($POST['value7'])
{
mysqlQuery("DELETE FROM variant WHERE id=$getid");
} else
{
if ($POST['value1']) {$postaction=1; } else {$postaction=0;}
$posttype= $POST['value2'];
$postad= $POST['value3'];
$postts= $POST['value4'];
$postopis= $POST['value5'];
$date=getdate();
mysqlQuery("UPDATE variant
SET date='$date[mday].$date[mon].$date[year]',
type=$posttype,
ad='$postad',
ts='$postts',
opis='$postopis',
action=$postaction
WHERE id=$getid");
//$image = new SimpleImage();
//$image->load($_FILES['value6']['tmp_name']);
//$image->scaleresize(150,150);
//$image->save('../1111.jpg');
//copy($image);
$extensions = array('jpg', 'jpeg', 'png', 'gif' ,'JPG');
$upload_dir = 'variant1';
// Запускаем функцию
$info = uploadHandle(200, $extensions, $upload_dir);
// $info[]= $_FILES[$POST['value6']];
// $folder = 'variant1/';
// $uploadedFile = $folder.$_FILES['filename1']['name'];
// move_uploaded_file($_FILES['filename1']['tmp_name'],$uploadedFile);
}
// reDirect('page=basa');
}
форма ввода...
<!-- ./skins/tpl/admin/editvar/show.tpl begin -->
<div class="pro" id="content">
<?php echo implode('<br> ', $info);?>
<?php echo implode('<br> ', $_FILES);?>
<h3>Редактирование варианта №<?php print $GET['id'];?></h3>
<form method="post">
<table>
<tr>
<td>Активное объявление</td>
<td> <input type="checkbox" name="form[value1]" value="1"
<?php
$vr = $GET['id'];
$str = "SELECT * FROM variant WHERE id = '$vr'";
$res = mysqlQuery($str);
while($row=mysql_fetch_array($res)){
$vaction=$row['action'];
}
if ($vaction) print "checked='checked'";
?>/>
</td>
</tr>
<tr>
<td>Тип недвижимости</td>
<td>
<select name="form[value2]">
<?php
$vr = $GET['id'];
$str = "SELECT * FROM variant,type WHERE id = '$vr' AND variant.type=type.type_id";
$res = mysqlQuery($str);
while($row=mysql_fetch_array($res)){
if ($row['id'] == $vr) { $typevar=$row['type_id'];
printf('<option value="%s">%s</option>',$row['type_id'],htmlspecialchars($row['name']));}
}
$res = mysqlQuery("SELECT * FROM type");
while($row=mysql_fetch_array($res)){
if ($row['type_id'] <> $typevar) {
printf('<option value="%s">%s</option>',$row['type_id'],htmlspecialchars($row['name']));}
}
?>
</select>
</td>
</tr>
<tr>
<td>Адрес объекта</td>
<td>
<textarea name="form[value3]" cols="30" rows="4"><?php
$vr = $GET['id'];
$str = "SELECT * FROM variant,type WHERE id = '$vr' AND variant.type=type.type_id";
$res = mysqlQuery($str);
while($row=mysql_fetch_array($res)){
if ($row['id'] == $vr) {print $row['ad'];}
}
?></textarea>
</td>
</tr>
<tr>
<td>Цена объекта</td>
<td>
<textarea name="form[value4]" cols="30" rows="4"><?php
$vr = $GET['id'];
$str = "SELECT * FROM variant,type WHERE id = '$vr' AND variant.type=type.type_id";
$res = mysqlQuery($str);
while($row=mysql_fetch_array($res)){
if ($row['id'] == $vr) {print $row['ts'];}
}
?></textarea>
</td>
</tr>
<tr>
<td>Описание объекта</td>
<td>
<textarea name="form[value5]" size="400" cols="30" rows="7"><?php
$vr = $GET['id'];
$str = "SELECT * FROM variant,type WHERE id = '$vr' AND variant.type=type.type_id";
$res = mysqlQuery($str);
while($row=mysql_fetch_array($res)){
if ($row['id'] == $vr) {print $row['opis'];}
}
?></textarea>
</td>
</tr>
<tr>
<td>ФОТОГРАФИИ</td><td></td>
</tr>
<tr>
<td>Фото №1</td>
<td>
<?php
$vr = $GET['id'];
$str = "SELECT * FROM variant,type WHERE id = '$vr' AND variant.type=type.type_id";
$res = mysqlQuery($str);
while($row=mysql_fetch_array($res))
{
if ($row['id'] == $vr && $row['f1'])
{
print "<img src='../../variant1/" . $row['id'] . "/images/images/001_p.jpg' width='150' height='100' alt='' />";
}
}
?><br>
<form enctype="multipart/form-data" method="post">
<input type="file" name="userfile" />
</td>
</tr>
<tr>
<td>Фото №2</td>
<td>
<?php
$vr = $GET['id'];
$str = "SELECT * FROM variant,type WHERE id = '$vr' AND variant.type=type.type_id";
$res = mysqlQuery($str);
while($row=mysql_fetch_array($res))
{
if ($row['id'] == $vr && $row['f2'])
{
print "<img src='../../variant1/" . $row['id'] . "/images/images/002_p.jpg' width='150' height='100' alt='' />";
}
}
?><br>
<form enctype="multipart/form-data" method="post">
<input name="filename2" type="file"/>
</td>
</tr>
<tr>
<td>Фото №3</td>
<td>
<?php
$vr = $GET['id'];
$str = "SELECT * FROM variant,type WHERE id = '$vr' AND variant.type=type.type_id";
$res = mysqlQuery($str);
while($row=mysql_fetch_array($res))
{
if ($row['id'] == $vr && $row['f3'])
{
print "<img src='../../variant1/" . $row['id'] . "/images/images/001_p.jpg' width='150' height='100' alt='' />";
}
}
?><br>
<form enctype="multipart/form-data" method="post">
<input name="filename3" type="file"/>
</td>
</tr>
<tr>
<td>Фото №4</td>
<td>
<?php
$vr = $GET['id'];
$str = "SELECT * FROM variant,type WHERE id = '$vr' AND variant.type=type.type_id";
$res = mysqlQuery($str);
while($row=mysql_fetch_array($res))
{
if ($row['id'] == $vr && $row['f4'])
{
print "<img src='../../variant1/" . $row['id'] . "/images/images/001_p.jpg' width='150' height='100' alt='' />";
}
}
?><br>
<form enctype="multipart/form-data" method="post">
<input name="filename4" type="file"/>
</td>
</tr>
<tr>
<td>Фото №5</td>
<td>
<?php
$vr = $GET['id'];
$str = "SELECT * FROM variant,type WHERE id = '$vr' AND variant.type=type.type_id";
$res = mysqlQuery($str);
while($row=mysql_fetch_array($res))
{
if ($row['id'] == $vr && $row['f5'])
{
print "<img src='../../variant1/" . $row['id'] . "/images/images/001_p.jpg' width='150' height='100' alt='' />";
}
}
?><br>
<form enctype="multipart/form-data" method="post">
<input name="filename5" type="file"/>
</td>
</tr>
<tr>
<td>Виртуальный тур</td>
<td>
<?php
$res = mysqlQuery("SELECT * FROM variant WHERE id=" . $GET["id"]);
while($row = mysql_fetch_array($res))
{
if ($row['id'] == $vr && $row['p'])
{
print "<div id='flash_content'>";
print "<object id='swf1' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='150' height='100'>";
print "<param name='movie' value='../../variant1/" . $row['id'] . "/panorama.swf'/>";
print "<param name='bgcolor' value='9e9e9e' />";
print "<param name='allowFullScreen' value='true' />";
print "<param name='flashvars' value='xml=panorama.xml&scene=init_scene' />";
print "<!--[if !IE]>-->";
print "<object type='application/x-shockwave-flash' data='../../variant1/" . $row['id'] . "/panorama.swf' width='150' height='100'>";
print "<param name='bgcolor' value='9e9e9e' />";
print "<param name='allowFullScreen' value='true' />";
print "<param name='flashvars' value='xml=panorama.xml&scene=init_scene' />";
print "<!--<![endif]-->";
print "<div style='width:150px; hei ght:100px;'>У Вас не установлен Flash plugin.</div>";
print "<!--[if !IE]>-->";
print "</object>";
print "<!--<![endif]-->";
print "</object>";
print "</div>";
}
}
?>
<form enctype="multipart/form-data" method="post">
<input name="filenamep" type="file"/>
</td>
</tr>
<tr>
<td>Удалить объявление</td>
<td> <input type="checkbox" name="form[value7]" value="1"/></td>
</tr>
<tr>
<td><input name="ok" type=submit value="Внести изменения"/></td>
<td></td>
</tr>
</table>
</form>
</div>
<!-- ./skins/tpl/admin/editvar/show.tpl end -->
ошибки выводит такие...
Notice: Undefined index: userfile in C:\work\new.ru\www\admin\editvar\read_controller.php on line 106
Notice: Undefined index: userfile in C:\work\new.ru\www\admin\editvar\read_controller.php on line 142
Случилось что-то непонятное
Спустя 7 минут, 40 секунд (17.05.2012 - 21:15) megadom написал(а):
106 строка if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK)
142 строка $error_code = $_FILES['userfile']['error'];
в обеих строчках обращение к $_FILES['userfile'] где он и не понимает индекс userfile
142 строка $error_code = $_FILES['userfile']['error'];
в обеих строчках обращение к $_FILES['userfile'] где он и не понимает индекс userfile
Спустя 38 минут, 36 секунд (17.05.2012 - 21:53) walerus написал(а):
1) Может в форму добавить action="" ? Для понятия куда слать форму
2) Как вариант в функции написать global $_FILES;, хотя должно видеть вроде глобальные переменные...
<form action="" enctype="multipart/form-data" method="post">
2) Как вариант в функции написать global $_FILES;, хотя должно видеть вроде глобальные переменные...
Спустя 21 минута, 54 секунды (17.05.2012 - 22:15) megadom написал(а):
не помогает ни 1 ни 2..(
Спустя 27 минут, 26 секунд (17.05.2012 - 22:43) megadom написал(а):
нашел...
форма выбора файла находится внутри формы ввода всех данных.. и в первой главной форме не было прописано enctype="multipart/form-data"
но теперь пишет
строка 117
что за ерунда?)
форма выбора файла находится внутри формы ввода всех данных.. и в первой главной форме не было прописано enctype="multipart/form-data"
но теперь пишет
Warning: move_uploaded_file(admin/P2010108.JPG) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\work\new.ru\www\admin\editvar\read_controller.php on line 117
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\work\_\php_temp\php6D58.tmp' to 'admin/P2010108.JPG' in C:\work\new.ru\www\admin\editvar\read_controller.php on line 117
строка 117
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $destination))
$info = 'Файл успешно загружен';
что за ерунда?)
Спустя 9 минут, 20 секунд (17.05.2012 - 22:52) inpost написал(а):
No such file or directory
Спустя 3 минуты, 20 секунд (17.05.2012 - 22:55) megadom написал(а):
нашёл))))))) сколько мучений из-за такой ерунды...
Спустя 13 дней, 16 часов, 15 минут, 26 секунд (31.05.2012 - 15:11) Аня написал(а):
Всем привет. помогите пожалуйста. Есть код, он работает наполовину, переименовывает название документа, но почему-то не сохраняет.Спасибо
<?php
$referer = $_SERVER['HTTP_REFERER'];
$table = explode('/',$referer);
$table = $table[count($table)-1];
unset($arr);
switch($table){
case 'documents':{
// Инициализация данных документа и частичная очистка массива $_POST для последующей обработки
$docgroup = $_POST['docgroup']; unset($_POST['docgroup']);
$docname = $_POST['docname']; unset($_POST['docname']);
$description = $_POST['description']; unset($_POST['description']);
$period = $_POST['period']; unset($_POST['period']);
$address = $_POST['address']; unset($_POST['address']);
$calc = $_POST['calc']; unset($_POST['calc']);
// Обработка пришедшего файла
$file = $_FILES['file']; $filename = false; // Загрузка файла документа на сайт
if(!is_null($file) && $file['error']==0){ // проверка нормальной загрузки файла
$extension = explode('.',$file['name']);
$extension = $extension[count($extension)-1];
$filename = "./content/documents/example/ex".md5(time()).".$extension";
move_uploaded_file($file['tmp_name'],$filename);
}
// Занесение документа в xml файл
$xmlfile = "./content/documents/xml/docgroup".$docgroup.".xml"; // Необходимо сперва определить имя необходимого файла
$domxml = new DOMDocument('1.0','utf-8'); // потом создать новый XML элемент,
$domxml->formatOutput = true; // установить для него форматированное построение
$domxml->preserveWhiteSpace = false; // и расстановку пробельных символов.
if(file_exists($xmlfile)){ // При физическом наличии файла по требуемому пути
$domxml->load($xmlfile); // загружаем данные из него в наш XML элемент
$root = $domxml->documentElement; // и определяем корневой элемент.
}else{ // В случае отсутствия файла на диске
$root = $domxml->createElement("documents"); // требуется создать корневой элемент
$domxml->appendChild($root); // и привязать его к XML элементу.
}
$document = $domxml->createElement("document"); // Создание XML элемента для одного документа и
$root->appendChild($document); // прикрепление этого элемента к корневому.
$document->appendChild($domxml->createElement("docname",$docname)); // Создание и прикрепление элемента docname к документу
$document->appendChild($domxml->createElement("description",$description)); // Создание и прикрепление элемента description к документу
if($filename) $document->appendChild($domxml->createElement("file",$filename)); // Создание и прикрепление элемента file к документу
$needxml = $domxml->createElement("needdoc"); // Создание и
$document->appendChild($needxml); // прикрепление элемента needxml к документу
$document->appendChild($domxml->createElement("period",$period)); // Создание и прикрепление элемента period к документу
$document->appendChild($domxml->createElement("address",$address)); // Создание и прикрепление элемента address к документу
foreach($_POST as $key=>$on){ // Перебор пришедших данных для определения необходимых документов
$tmparr = explode('=',$key); // для различных категорий лиц и создание массива этих документов
$tmparr[0]=$tmparr[2]; unset($tmparr[2]);
$needdoc[] = $tmparr;
}
$i=1;
while(count($needdoc)>0){ // Перебор различных категорий лиц
foreach($needdoc as $key=>$xmlneed){ // Перебор полученного набора необходимых документов (выход при окончании документов)
if($xmlneed[0]==$i){ // При принадлежности документа к текущей категории
$tmpdoc = $domxml->createElement('nddoc',$xmlneed[1]); // создаётся элемент для текущего документа
$attribute = $domxml->createAttribute("person"); // и аттрибут для созданного элемента,
$attribute->value = $i; // аттрибуту присваиваем значение текущей категории лиц.
$tmpdoc->appendchild($attribute); // Присоединяем аттрибут к элементу
$needxml->appendChild($tmpdoc); // а этот элемент к документу (к элементу needdoc).
unset($needdoc[$key]); // Удаление текущего документа из набора из-за дальнейшей ненадобности
}else continue; // Пропуск итерации при отсутствии принадлежности документа к категории лиц
}
$i++; // Проверка для следующей категории
}
$domxml->save($xmlfile); // Сохранение данных в XML файл
// Запись ддокумента в БД
$arr = array(
'table' => 'f_documents',
'docgroup' => $docgroup,
'docname' => $docname,
'calc' => $calc);
insertbase($arr);
header("Location: $referer");
break;
}
case 'docgroups':{ // Добавление в БД информацию ждя таблицы s_doc_group
$arr = array(
'table' => 's_doc_groups',
'docgroup' => $_POST['docgroup']);
insertbase($arr);
header("Location: $referer");
break;
}
case 'typeperson':{ // Добавление в БД информацию ждя таблицы s_type_person
$arr = array(
'table' => 's_type_person',
'person' => $_POST['person']);
insertbase($arr);
header("Location: $referer");
break;
}
case 'needdoc':{ // Добавление в БД информацию ждя таблицы s_needdoc
unset($_POST['table']);
$docname = $_POST['docname']; unset($_POST['docname']); // Инициализация переменной для сохранения названия документа
foreach($_POST as $needdoc=>$on){ // Перебор категорий лиц, которым необходим данный документ
if($on=='on') $persons[] = str_replace("_"," ",$needdoc); // и преобразование названий этих категорий ('_' -меняется на-> ' ')
}
$sqlQ = "SELECT ID,person FROM s_type_person"; // Вывод из базы названия и порядковые номера всех категорий лиц
$q = sql_query($sqlQ);
$needstr = '';
foreach($q as $needdoc){ // Перебор ВСЕХ категорий, полученных из базы
for($i=0;$i<count($persons);$i++){ // и перебор лишь требуемых для конкретного документа
if($persons[$i]==$needdoc['person']) $needstr .= $needdoc['ID']."|"; // при совпадении названий, порядковый номер категории
} // записывается в сторку через разделитель, для удобства записи в базу
}
$needstr = substr($needstr,0,strlen($needstr)-1); // обрезание крайнего разделителя
$arr = array( // Формирование массива для записи в базу
'table' => 's_needdoc',
'docname' => $docname,
'persons' => $needstr);
insertbase($arr); // Запись
header("Location: $referer");
break;
}
case 'servicestage':{ // Добавление в БД информацию ждя таблицы s_service_stage
$arr = array(
'table' => 's_service_stage',
'stage' => $_POST['stage']);
insertbase($arr);
header("Location: $referer");
break;
}
}
?>
<?php
$referer = $_SERVER['HTTP_REFERER'];
$table = explode('/',$referer);
$table = $table[count($table)-1];
unset($arr);
switch($table){
case 'documents':{
// Инициализация данных документа и частичная очистка массива $_POST для последующей обработки
$docgroup = $_POST['docgroup']; unset($_POST['docgroup']);
$docname = $_POST['docname']; unset($_POST['docname']);
$description = $_POST['description']; unset($_POST['description']);
$period = $_POST['period']; unset($_POST['period']);
$address = $_POST['address']; unset($_POST['address']);
$calc = $_POST['calc']; unset($_POST['calc']);
// Обработка пришедшего файла
$file = $_FILES['file']; $filename = false; // Загрузка файла документа на сайт
if(!is_null($file) && $file['error']==0){ // проверка нормальной загрузки файла
$extension = explode('.',$file['name']);
$extension = $extension[count($extension)-1];
$filename = "./content/documents/example/ex".md5(time()).".$extension";
move_uploaded_file($file['tmp_name'],$filename);
}
// Занесение документа в xml файл
$xmlfile = "./content/documents/xml/docgroup".$docgroup.".xml"; // Необходимо сперва определить имя необходимого файла
$domxml = new DOMDocument('1.0','utf-8'); // потом создать новый XML элемент,
$domxml->formatOutput = true; // установить для него форматированное построение
$domxml->preserveWhiteSpace = false; // и расстановку пробельных символов.
if(file_exists($xmlfile)){ // При физическом наличии файла по требуемому пути
$domxml->load($xmlfile); // загружаем данные из него в наш XML элемент
$root = $domxml->documentElement; // и определяем корневой элемент.
}else{ // В случае отсутствия файла на диске
$root = $domxml->createElement("documents"); // требуется создать корневой элемент
$domxml->appendChild($root); // и привязать его к XML элементу.
}
$document = $domxml->createElement("document"); // Создание XML элемента для одного документа и
$root->appendChild($document); // прикрепление этого элемента к корневому.
$document->appendChild($domxml->createElement("docname",$docname)); // Создание и прикрепление элемента docname к документу
$document->appendChild($domxml->createElement("description",$description)); // Создание и прикрепление элемента description к документу
if($filename) $document->appendChild($domxml->createElement("file",$filename)); // Создание и прикрепление элемента file к документу
$needxml = $domxml->createElement("needdoc"); // Создание и
$document->appendChild($needxml); // прикрепление элемента needxml к документу
$document->appendChild($domxml->createElement("period",$period)); // Создание и прикрепление элемента period к документу
$document->appendChild($domxml->createElement("address",$address)); // Создание и прикрепление элемента address к документу
foreach($_POST as $key=>$on){ // Перебор пришедших данных для определения необходимых документов
$tmparr = explode('=',$key); // для различных категорий лиц и создание массива этих документов
$tmparr[0]=$tmparr[2]; unset($tmparr[2]);
$needdoc[] = $tmparr;
}
$i=1;
while(count($needdoc)>0){ // Перебор различных категорий лиц
foreach($needdoc as $key=>$xmlneed){ // Перебор полученного набора необходимых документов (выход при окончании документов)
if($xmlneed[0]==$i){ // При принадлежности документа к текущей категории
$tmpdoc = $domxml->createElement('nddoc',$xmlneed[1]); // создаётся элемент для текущего документа
$attribute = $domxml->createAttribute("person"); // и аттрибут для созданного элемента,
$attribute->value = $i; // аттрибуту присваиваем значение текущей категории лиц.
$tmpdoc->appendchild($attribute); // Присоединяем аттрибут к элементу
$needxml->appendChild($tmpdoc); // а этот элемент к документу (к элементу needdoc).
unset($needdoc[$key]); // Удаление текущего документа из набора из-за дальнейшей ненадобности
}else continue; // Пропуск итерации при отсутствии принадлежности документа к категории лиц
}
$i++; // Проверка для следующей категории
}
$domxml->save($xmlfile); // Сохранение данных в XML файл
// Запись ддокумента в БД
$arr = array(
'table' => 'f_documents',
'docgroup' => $docgroup,
'docname' => $docname,
'calc' => $calc);
insertbase($arr);
header("Location: $referer");
break;
}
case 'docgroups':{ // Добавление в БД информацию ждя таблицы s_doc_group
$arr = array(
'table' => 's_doc_groups',
'docgroup' => $_POST['docgroup']);
insertbase($arr);
header("Location: $referer");
break;
}
case 'typeperson':{ // Добавление в БД информацию ждя таблицы s_type_person
$arr = array(
'table' => 's_type_person',
'person' => $_POST['person']);
insertbase($arr);
header("Location: $referer");
break;
}
case 'needdoc':{ // Добавление в БД информацию ждя таблицы s_needdoc
unset($_POST['table']);
$docname = $_POST['docname']; unset($_POST['docname']); // Инициализация переменной для сохранения названия документа
foreach($_POST as $needdoc=>$on){ // Перебор категорий лиц, которым необходим данный документ
if($on=='on') $persons[] = str_replace("_"," ",$needdoc); // и преобразование названий этих категорий ('_' -меняется на-> ' ')
}
$sqlQ = "SELECT ID,person FROM s_type_person"; // Вывод из базы названия и порядковые номера всех категорий лиц
$q = sql_query($sqlQ);
$needstr = '';
foreach($q as $needdoc){ // Перебор ВСЕХ категорий, полученных из базы
for($i=0;$i<count($persons);$i++){ // и перебор лишь требуемых для конкретного документа
if($persons[$i]==$needdoc['person']) $needstr .= $needdoc['ID']."|"; // при совпадении названий, порядковый номер категории
} // записывается в сторку через разделитель, для удобства записи в базу
}
$needstr = substr($needstr,0,strlen($needstr)-1); // обрезание крайнего разделителя
$arr = array( // Формирование массива для записи в базу
'table' => 's_needdoc',
'docname' => $docname,
'persons' => $needstr);
insertbase($arr); // Запись
header("Location: $referer");
break;
}
case 'servicestage':{ // Добавление в БД информацию ждя таблицы s_service_stage
$arr = array(
'table' => 's_service_stage',
'stage' => $_POST['stage']);
insertbase($arr);
header("Location: $referer");
break;
}
}
?>