|
|
|
| Всем привет! Имею массив. В нем допустим содержится такая информация и выводится в таком порядке:
* Заполните все поля.
* Неподходящий диапазон цены в поле До:.
* Произошел сбой в загрузке картинки. Повторите загрузку.
* Размер файла превышает 2 мегабайта.
* Тип файла запрещен к загрузке. Загружайте .jpg и .jpeg.
|
Записываю в массив так:
if (is_uploaded_file($_FILES['uploads']['tmp_name']) == false)
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Произошел сбой в загрузке картинки. Повторите загрузку.</div></td></tr>";
|
Обрабатываю так:
function error_info($array_error)
{
if(!empty($array_error) )
$error = implode("",$array_error);
return $error;
}
|
Вывожу так:
<?php echo error_info(@array_unique($array_error)) ?>
|
Как мне сортировать не по алфавиту, а как мне захочется? Пересмотрел ф-ции сортировок, не вышло :( Прошу помощи. | |
|
|
|
|
|
|
|
для: TetRiska
(12.10.2009 в 00:45)
| | Записывайте ошибки в строку таким образом:
$error .= '<li>Ошибка такая-то<li>';
А выводите таким:
echo '<ul>'.$error.'</ul>';
Тогда с массивами мучаться не надо будет.
А то, в каком порядке ошибки будут выводится - просто сам код обработки перемещайте вверх-вниз (не строку переносить, а местами код менять), тогда строка $error склеется в другой последовательности, нужной фам. | |
|
|
|
|
|
|
|
для: neadekvat
(12.10.2009 в 00:56)
| | нет нужно работать с массивом, если интересно могу рассказать почему, но это много текста :) | |
|
|
|
|
|
|
|
для: TetRiska
(12.10.2009 в 01:08)
| | Интересно, почему? Попробуйте вкратце :)
Да и с массивами то же самое можно сделать
Вместо
if...{
$array_errors[] = 'Ошибка один';
}
if...{
$array_errors[] = 'Ошибка два';
}
|
напишите
if...{
$array_errors[] = 'Ошибка два';
}
if...{
$array_errors[] = 'Ошибка один';
}
|
Если же так не сделать, а вам все-таки хочется сортировать вручную, то можно извратиться, например, так: ошибки вначале строки имеют букву латинского алфавита:
$array_errors[] = 'bОшибка два';
$array_errors[] = 'aОшибка один';
с помощью этих букв вы от a (англ) к z можете определить порядок, это нам привычно (писать типа а) лала. б) ляля )
Затем сортируете массив по алфавиту, а при выводе ошибки обрезаете первые буквы. | |
|
|
|
|
|
|
|
для: neadekvat
(12.10.2009 в 08:33)
| | сортировка по алфавиту тоже не подходит :) и кратко изложить тоже не выйдет :)
приложу форму http://i016.radikal.ru/0910/d8/3b8f5e4bb991.jpg и опишу всю суть происходящего
Как видно на форме есть чекбокс, который дает понимать программе как добавлять и загружать данные на сервер. Если чекбокс не включен, то добавляется изделие с 1-й фотографией, а если включен, нам предоставится право добавить поля и соответственно загрузить много фотографий. Прилагаю хтмл код этих 2-х полей загрузки файлов:
<tr>
<td><div style="margin:0 0 5px 3px">Фото:</div></td>
<td><div style="margin:0 0 5px 3px"><input name="uploads" type="file" size="30" /><input id="count" type="hidden" value="<?php echo count($_FILES["att"]["name"]) ?>" /></div></td>
</tr>
<tr>
<td><div style="margin:0 0 5px 3px">Доп. фото:</div></td>
<td><div style="margin:0 0 5px 3px"><input id="file" type="file" size="30" name="att[]" <?php if($_POST['checkbox'] != "on") echo "disabled"; ?> > <input id="minus" type="button" value=" - " onclick="dropFile(this);" <?php if($_POST['checkbox'] != "on" || !empty($_POST)) echo "disabled"; ?> > <input id="plus" type="button" value=" + " onclick="addFile(this);" <?php if($_POST['checkbox'] != "on") echo "disabled"; ?> ></div></td>
</tr>
|
Далее приложу обработчик:
1. если чекбокс активирован
<?php
if(!empty($_POST['checkbox']))
{
if (is_uploaded_file($_FILES['uploads']['tmp_name']) == false)
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Произошел сбой в загрузке картинки. Повторите загрузку.</div></td></tr>";
if($_FILES["uploads"]["error"] == 1)
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Размер файла превышает 2 мегабайта.</div></td></tr>";
if($_FILES["uploads"]["error"] == 4)
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Выберите картинку.</div></td></tr>";
if($_FILES["uploads"]["type"] != "" && $_FILES["uploads"]["type"] != "image/jpeg" && $_FILES["uploads"]["type"] != "image/pjpeg")
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Тип файла запрещен к загрузке. Загружайте <b>.jpg</b> и <b>.jpeg</b>.</div></td></tr>";
if($_POST["name_radio"] == "name1")
{
if($_POST["title"] == "" || $_POST["text"] == "" || $_POST["price"] == "")
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Заполните все поля.</div></td></tr>";
}
if($_POST["name_radio"] == "name2")
{
if($_POST["title"] == "" || $_POST["text"] == "" || $_POST["price1"] == "" && $_POST["price2"] == "")
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Заполните все поля.</div></td></tr>";
if($_POST["price1"] == "" && $_POST["price2"] != "")
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Неподходящий диапазон цены в поле <u><b>До:</b></u>.</div></td></tr>";
}
for($p = 0; $p < count($_FILES['att']['name']); $p++)
{
if (is_uploaded_file($_FILES['att']['tmp_name'][$p]) == false)
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Произошел сбой в загрузке картинки. Повторите загрузку.</div></td></tr>";
if($_FILES["att"]["error"][$p] == 1)
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Размер файла превышает 2 мегабайта.</div></td></tr>";
if($_FILES["att"]["error"][$p] == 4)
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Выберите картинку.</div></td></tr>";
if($_FILES["att"]["type"][$p] != "" && $_FILES["att"]["type"][$p] != "image/jpeg" && $_FILES["att"]["type"][$p] != "image/pjpeg")
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Тип файла запрещен к загрузке. Загружайте <b>.jpg</b> и <b>.jpeg</b>.</div></td></tr>";
}
if(count($array_error) != 0)
{
$table_h = "<table class='scriptcode' width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td align='center'><b>Внимание!!!</b></td></tr><tr><td>";
$table_f = "</td></tr></table>";
}
if(count($array_error) == 0)
{
include("dmn/modules/addcommodity/add_photo.php");
include("dmn/modules/addcommodity/add_dphoto.php");
header("location: ".DOMEN."/adminpanel/addcommodity");
}
}
?>
|
2. если чекбокс не активирован в принципе повтор первой части
<?php
else
{
if (is_uploaded_file($_FILES['uploads']['tmp_name']) == false)
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Произошел сбой в загрузке картинки. Повторите загрузку.</div></td></tr>";
if($_FILES["uploads"]["error"] == 1)
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Размер файла превышает 2 мегабайта.</div></td></tr>";
if($_FILES["uploads"]["error"] == 4)
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Выберите картинку.</div></td></tr>";
if($_FILES["uploads"]["type"] != "" && $_FILES["uploads"]["type"] != "image/jpeg" && $_FILES["uploads"]["type"] != "image/pjpeg")
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Тип файла запрещен к загрузке. Загружайте <b>.jpg</b> и <b>.jpeg</b>.</div></td></tr>";
if($_POST["name_radio"] == "name1")
{
if($_POST["title"] == "" || $_POST["text"] == "" || $_POST["price"] == "")
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Заполните все поля.</div></td></tr>";
}
if($_POST["name_radio"] == "name2")
{
if($_POST["title"] == "" || $_POST["text"] == "" || $_POST["price1"] == "" && $_POST["price2"] == "")
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Заполните все поля.</div></td></tr>";
if($_POST["price1"] == "" && $_POST["price2"] != "")
$array_error[] = "<tr><td colspan='2'><div style='margin-top:5px; font-size:15px; color:gray'><font color='red'>*</font> Неподходящий диапазон цены в поле <u><b>До:</b></u>.</div></td></tr>";
}
if(count($array_error) != 0)
{
$table_h = "<table class='scriptcode' width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td align='center'><b>Внимание!!!</b></td></tr><tr><td>";
$table_f = "</td></tr></table>";
}
if(count($array_error) == 0)
{
include("dmn/modules/addcommodity/add_photo.php");
header("location: ".DOMEN."/adminpanel/addcommodity");
}
}
?>
|
Если присмотрется к обработке ошибок при активированом чекбоксе, то увидим что ошибки повторяются, они то одинаковые, но для разных файловых инпутов, первая группа для одиночной загрузки, а вторая для массовой - поэтому и в цикле прокручиваются, и поэтому я применяю ф-цию сортировке на выводе, поэтому у меня не выйдет сортировать лишь поставив в нужном положении, поэтому нужно сортировать каким то изврщенным методом, но не по алфавиту...
Думаю объяснил подробно, прошу помощи. Прошу не пинать на столь не удобное оформление кода, просто так удобней просматривать. | |
|
|
|
|
|
|
|
для: TetRiska
(12.10.2009 в 13:37)
| | Многабукфакода..
Я не понимаю, зачем разделять код на две такие большие части?
Сделайте обработку так:
Категория
Фото
если чекбокс на доп фото нажат, то загружаем доп поля
название
описания
и тд
И назовите, какой порядок вы хотите вывода ошибок. | |
|
|
|
|
|
|
|
для: TetRiska
(12.10.2009 в 13:37)
| | Подход достаточно кривой, но выход из этого положения прост, как три копейки. Проставь ключи и не нужно будет сортировать ничего. Они просто перезапишутся. | |
|
|
|