function AddPair ($table) {
$error= array ();
if(isset($_POST['add'])) {
if(!empty($_POST['fio'])) $fio = trim($_POST['fio']);
if(empty($fio)) {$error['fio'] = 'style="color: #DD0000;"';}
if(!empty($_POST['text'])) $text = trim($_POST['text']);
if(empty($text)) {$error['text'] = 'style="color: #DD0000;"';}
if (!empty($_FILES['image']['tmp_name']))
{
// Определяем расширение файла
$ext = strrchr($_FILES['image']['name'], ".");
// Формируем путь к файлу
$image = "../file/".date("YmdHis",time())."$ext";
$smallimage = "../file/".date("YmdHis",time())."_s$ext";
// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения
if (copy($_FILES['image']['tmp_name'], "".$image))
{
// Уничтожаем файл во временной директории
unlink($_FILES['image']['tmp_name']);
// Изменяем права доступа к файлу
chmod("".$image, 0644);
}
// Вызываем функцию resizeimg(), создающую уменьшенную копию
фотографии
// $image и помещающую её в файл $smallimage
if(!resizeimg($image, $smallimage, 180, 190))
links($_POST['id'], "Ошибка при создании уменьшенной
копии изображения с помощью библиотеки GDLib");
// Вызываем функцию resizeimg(), создающую уменьшенное изображение
из файла $image
// $image и помещающую её в файл $smallimage
if(!resizeimgbig($image, 340, 255))
links($_POST['id'], "Ошибка при создании уменьшенной копии изображения
с помощью библиотеки GDLib");
// Заменяем одинарные кавычки обратными
$_POST['name'] = str_replace("'", "`", $_POST['name']);
}
else
{
$image = '';
$smallimage = '';
}
if(count($error) == 0)
{
$result = mysql_query("INSERT INTO $table SET
`fio` = '".mysql_real_escape_string($fio)."',
`title` = '".mysql_real_escape_string($fio)."',
`link` = '".mysql_real_escape_string($_POST['link'])."',
`url` = '".mysql_real_escape_string($_POST['url'])."',
`text` = '".mysql_real_escape_string($_POST['text'])."',
`img_small` = '".mysql_real_escape_string($smallimage)."',
`img_big` = '".mysql_real_escape_string($image)."',
`number` = '".mysql_real_escape_string($_POST['number'])."',
`date` = '".mysql_real_escape_string($_POST['date'])."',
`time` = '".mysql_real_escape_string($_POST['time'])."',
`alt` = '".mysql_real_escape_string($fio)."',
`img_title` = '".mysql_real_escape_string($fio)."'
") or die ("Ошибка - ". mysql_error());
if ($result)
{
header("Location: ".M4A1_HOST_ADMIN."pair?ok");
}
else
{
header("Location: ".M4A1_HOST_ADMIN."pair?act=add&error");
}
exit();
}
}
return $result;
}
Спасибо всем кто подскажет.
Спустя 41 минута, 22 секунды (7.06.2011 - 13:21) ИНСИ написал(а):
m4a1fox если честно, то его ВЕСЬ надо переписывать. Вообще, делать функцию в данном задании не советую. Не надо пихать все в одно и делать мусор. Если хочешь в MVC стиле сделать, создавай класс.
Спустя 2 минуты, 13 секунд (7.06.2011 - 13:23) m4a1fox написал(а):
velbox
Понятно. Но класс - это ооп! А ооп - я не знаю еще
Понятно. Но класс - это ооп! А ооп - я не знаю еще
Спустя 14 минут, 6 секунд (7.06.2011 - 13:37) Renden написал(а):
m4a1fox
Я думаю тут покрайней мере 2 функции можно выделить, даже 3...
Заливка файла
Уменьшенную копия
Запрос к базе
Поэтому функции покрайней мере можно былоб разделить(и сделать пофункциональнее дабы использовать в других местах)
В данном случае класс был бы полезен, ктомуж можешь начать какраз изучение с этого примера, попробывать из него сделать класс))
Я думаю тут покрайней мере 2 функции можно выделить, даже 3...
Заливка файла
Уменьшенную копия
Запрос к базе
Поэтому функции покрайней мере можно былоб разделить(и сделать пофункциональнее дабы использовать в других местах)
В данном случае класс был бы полезен, ктомуж можешь начать какраз изучение с этого примера, попробывать из него сделать класс))
Спустя 2 минуты, 39 секунд (7.06.2011 - 13:40) neadekvat написал(а):
0. Класс - это класс, ООП лишь использует классы, но само их наличие ООП как таковым не является. Классы очень удобны для хранения ряда методов, объединенных одной мыслью.
1. Саму функцию лучше вызывать после проверки на существование в _POST необходимых параметров. Так уже одна проверка исчезает.
2. Вот этот (и подобные) кусок странный:
Во-первых, потому что вообще логика сомнительна (проверяется на пустоту, хотя неизвестно, существует ли вообще, затем обрезаются проеблы, заводится переменная, снова проверяется на пустоту..).
Во-вторых, непонятно, как ты с ошибками работаешь. Обычно просто добавляют ряд самих текстов ошибок и все. А что у тебя тут..
В общем, сходу, я бы примерно так сделал:
3.
Опять таки. Надо проверять на существования, а не на заполненность.
4. Для определения расширения используют pathinfo()
5.
А. Адреса лучше указывать полные. Заведи константу ROOT и используй ее.
Б. date("YmdHis",time()) - вот это вообще глупость. Второй аргумет не нужен в данном случаи.
6. Непонятно, почему в запрос подставляется переменная, которую даже не обрабатывали. За что взял - за то и отдаю?
7.
Сокращается до
8. С оформлением беда. Расставляй отступы нормально.
Так уже лучше, но лишние скобки я бы тоже поудалял:
1. Саму функцию лучше вызывать после проверки на существование в _POST необходимых параметров. Так уже одна проверка исчезает.
2. Вот этот (и подобные) кусок странный:
if(!empty($_POST['fio'])) $fio = trim($_POST['fio']);
if(empty($fio)) {$error['fio'] = 'style="color: #DD0000;"';}
Во-первых, потому что вообще логика сомнительна (проверяется на пустоту, хотя неизвестно, существует ли вообще, затем обрезаются проеблы, заводится переменная, снова проверяется на пустоту..).
Во-вторых, непонятно, как ты с ошибками работаешь. Обычно просто добавляют ряд самих текстов ошибок и все. А что у тебя тут..
В общем, сходу, я бы примерно так сделал:
$fio = isset($_POST['fio']) ? trim($_POST['fio']) : null;
if (empty($fio))
$error[] = 'ФИО не введено!';
3.
if (!empty($_FILES['image']['tmp_name']))
Опять таки. Надо проверять на существования, а не на заполненность.
4. Для определения расширения используют pathinfo()
$ext = pathinfo($doc_name, PATHINFO_EXTENSION);
5.
$image = "../file/".date("YmdHis",time())."$ext";
А. Адреса лучше указывать полные. Заведи константу ROOT и используй ее.
Б. date("YmdHis",time()) - вот это вообще глупость. Второй аргумет не нужен в данном случаи.
6. Непонятно, почему в запрос подставляется переменная, которую даже не обрабатывали. За что взял - за то и отдаю?
7.
if ($result)
{
header("Location: ".M4A1_HOST_ADMIN."pair?ok");
}
else
{
header("Location: ".M4A1_HOST_ADMIN."pair?act=add&error");
}
exit();
}
Сокращается до
if ($result)
header("Location: ".M4A1_HOST_ADMIN."pair?ok");
else
header("Location: ".M4A1_HOST_ADMIN."pair?act=add&error");
exit();
8. С оформлением беда. Расставляй отступы нормально.
Так уже лучше, но лишние скобки я бы тоже поудалял:
Свернутый текст
<?php
function AddPair($table)
{
$error = array(
);
if(isset($_POST['add']))
{
if(!empty($_POST['fio']))
{
$fio = trim($_POST['fio']);
}
if(empty($fio))
{
$error['fio'] = 'style="color: #DD0000;"';
}
if(!empty($_POST['text']))
{
$text = trim($_POST['text']);
}
if(empty($text))
{
$error['text'] = 'style="color: #DD0000;"';
}
if(!empty($_FILES['image']['tmp_name']))
{
// Определяем расширение файла
$ext = strrchr($_FILES['image']['name'], ".");
// Формируем путь к файлу
$image = "../file/". date("YmdHis", time()) ."$ext";
$smallimage = "../file/". date("YmdHis", time()) ."_s$ext";
// Перемещаем файл из временной директории сервера в
// директорию /files Web-приложения
if(copy($_FILES['image']['tmp_name'], "". $image))
{
// Уничтожаем файл во временной директории
unlink($_FILES['image']['tmp_name']);
// Изменяем права доступа к файлу
chmod("". $image, 0644);
}
// Вызываем функцию resizeimg(), создающую уменьшенную копию
фотографии
// $image и помещающую её в файл $smallimage
if(!resizeimg($image, $smallimage, 180, 190))
{
links($_POST['id'], "Ошибка при создании уменьшенной
копии изображения с помощью библиотеки GDLib");
}
// Вызываем функцию resizeimg(), создающую уменьшенное изображение
изфайла$image
// $image и помещающую её в файл $smallimage
if(!resizeimgbig($image, 340, 255))
{
links($_POST['id'], "Ошибка при создании уменьшенной копии изображения
с помощью библиотеки GDLib");
}
// Заменяем одинарные кавычки обратными
$_POST['name'] = str_replace("'", "`", $_POST['name']);
}
else
{
$image = '';
$smallimage = '';
}
if(count($error) == 0)
{
$result = mysql_query("INSERT INTO $table SET
`fio` = '". mysql_real_escape_string($fio) ."',
`title` = '". mysql_real_escape_string($fio) ."',
`link` = '". mysql_real_escape_string($_POST['link']) ."',
`url` = '". mysql_real_escape_string($_POST['url']) ."',
`text` = '". mysql_real_escape_string($_POST['text']) ."',
`img_small` = '". mysql_real_escape_string($smallimage) ."',
`img_big` = '". mysql_real_escape_string($image) ."',
`number` = '". mysql_real_escape_string($_POST['number']) ."',
`date` = '". mysql_real_escape_string($_POST['date']) ."',
`time` = '". mysql_real_escape_string($_POST['time']) ."',
`alt` = '". mysql_real_escape_string($fio) ."',
`img_title` = '". mysql_real_escape_string($fio) ."'
") or die("Ошибка - ". mysql_error());
if($result)
{
header("Location: ". M4A1_HOST_ADMIN ."pair?ok");
}
else
{
header("Location: ". M4A1_HOST_ADMIN ."pair?act=add&error");
}
exit();
}
}
return $result;
}
?>
Спустя 55 секунд (7.06.2011 - 13:41) m4a1fox написал(а):
Renden
Навряд это получится..... вот только если с вашей помощью... я способный, правда
Навряд это получится..... вот только если с вашей помощью... я способный, правда
Спустя 4 минуты, 43 секунды (7.06.2011 - 13:46) m4a1fox написал(а):
neadekvat
Спасибо. Я попытаюсь объяснить. Вот это
выделяет то что не заполнено. Например fio если пусто становится красным цветом...
Спасибо. Я попытаюсь объяснить. Вот это
if(!empty($_POST['fio'])) $fio = trim($_POST['fio']);
if(empty($fio)) {$error['fio'] = 'style="color: #DD0000;"';}
выделяет то что не заполнено. Например fio если пусто становится красным цветом...
Цитата |
Во-первых, потому что вообще логика сомнительна (проверяется на пустоту, хотя неизвестно, существует ли вообще, затем обрезаются проеблы, заводится переменная, снова проверяется на пустоту..). |
$ и так существует. Не вижу смысла это проверять...
Спустя 2 минуты, 9 секунд (7.06.2011 - 13:48) neadekvat написал(а):
Цитата (m4a1fox @ 7.06.2011 - 14:46) |
$ и так существует. Не вижу смысла это проверять... |
С чего бы это оно существует? Эти данные приходят от пользователя и они вполне могут не существовать.
Спустя 1 минута, 22 секунды (7.06.2011 - 13:49) m4a1fox написал(а):
neadekvat
Цитата |
А. Адреса лучше указывать полные. Заведи константу ROOT и используй ее. |
Есть такая! То есть путь будет вот такой?
$image = M4A1_ROOT."/file/".date("YmdHis",time())."$ext";
Спустя 39 секунд (7.06.2011 - 13:50) m4a1fox написал(а):
neadekvat
Они от админа приходят!
Они от админа приходят!
Спустя 2 минуты, 2 секунды (7.06.2011 - 13:52) neadekvat написал(а):
Цитата (m4a1fox @ 7.06.2011 - 14:49) |
Есть такая! То есть путь будет вот такой? |
Тебе виднее, какой будет путь Я же не знаю, что у тебя там в файловой системе.
Цитата (m4a1fox @ 7.06.2011 - 14:50) |
Они от админа приходят! |
Если делаешь для себя, своих и умных людей, то проверку можно осуществлять только на уровне клиента - для удобства.
Спустя 1 минута, 12 секунд (7.06.2011 - 13:53) Игорь_Vasinsky написал(а):
Цитата |
if(!empty($_POST['fio'])) $fio = trim($_POST['fio']); if(empty($fio)) {$error['fio'] = 'style="color: #DD0000;"';} |
$fio = !empty($_POST['fio']) ? trim($_POST['fio']) : null;
$error['fio'] = empty($_POST['fio']) ? 'style="color: #DD0000;"' : null;
Спустя 3 минуты, 21 секунда (7.06.2011 - 13:56) m4a1fox написал(а):
Игорь_Vasinsky
Спасибо! Так и сделаю! Но если Вам не сложно. Можете написать в чем преимущества вашего метода?
Спасибо! Так и сделаю! Но если Вам не сложно. Можете написать в чем преимущества вашего метода?
Спустя 52 секунды (7.06.2011 - 13:57) neadekvat написал(а):
Игорь_Vasinsky, нет, вот так не надо. Зачем в массиве error создавать лишние элементы? Быть может, ты подумал, что я дурак, и поэтому в одной строке тернарный оператор использовал, а во второй - нет?
Спустя 11 минут, 43 секунды (7.06.2011 - 14:09) Игорь_Vasinsky написал(а):
Цитата |
Быть может, ты подумал, что я дурак, |
я только о себе думаю ;)
там 2 строки тернарных операций.
Желание ТС - заполнить массив error строкой со стилем.
Я же заполнил бы булевым значением или просто единицей, а потом уже смотрел бы содержание массива и делал на основе этого вывод.
и навсяк случай бы вырезал пробелы
$error['fio'] = empty(trim($_POST['fio'])) ? 1 : null;
что то вроде этого, ну это сходу, так бы можно было более красиво сделать.
Спустя 1 минута, 19 секунд (7.06.2011 - 14:10) neadekvat написал(а):
А зачем? Не проще ли проверить, не пустой ли сам по себе массив?
Хотя, на мой взгляд, работа с ошибками у автора несколько извращена, так что..
Хотя, на мой взгляд, работа с ошибками у автора несколько извращена, так что..
Спустя 10 минут, 41 секунда (7.06.2011 - 14:21) Игорь_Vasinsky написал(а):
По сути если $_POST['fio'] не будет пустым - то массив error - будет пустым (null)
согласен, нужно грамотней организовать.
согласен, нужно грамотней организовать.
Спустя 3 минуты, 53 секунды (7.06.2011 - 14:25) neadekvat написал(а):
Цитата (Игорь_Vasinsky @ 7.06.2011 - 15:21) |
По сути если $_POST['fio'] не будет пустым - то массив error - будет пустым (null) |
Неверно.
Массив error будет иметь следующий вид:
array(1) { ["fio"]=> NULL }
Он не будет пустым. В нем будет элемент.
Спустя 7 минут, 22 секунды (7.06.2011 - 14:32) Игорь_Vasinsky написал(а):
Даже если в начале кода объявить
но его хоть как нужно объявить, т.к далее есть его вызов и будет нотис
или делать проверку
да, вот такая проверка пройдёт без нотисов, даже если не объявлять ранее этот массив.
Верно?
$error['fio'] = '';
но его хоть как нужно объявить, т.к далее есть его вызов и будет нотис
или делать проверку
if($error['fio'])
да, вот такая проверка пройдёт без нотисов, даже если не объявлять ранее этот массив.
Верно?
Спустя 1 минута, 30 секунд (7.06.2011 - 14:34) neadekvat написал(а):
А если таких элементов в массиве может быть хотя бы 10? Проверять каждый? Не проще ли добавлять элемент в массив только если для этого есть необходимость?
Спустя 3 минуты, 52 секунды (7.06.2011 - 14:38) Игорь_Vasinsky написал(а):
Всё верно, зачем проверять пустой он или нет, когда просто можно проверит есть ли он...
Цитата |
Не проще ли добавлять элемент в массив только если для этого есть необходимость? |
полностью согласен, хотя лет 5 бы назад этот массив в моём понимание должен был бы хранить либо "да" либо "нет", но слав богу учимся
Спустя 22 минуты, 25 секунд (7.06.2011 - 15:00) m4a1fox написал(а):
neadekvat
Игорь_Vasinsky
Что то я не пойму! Какой смысл проверять пустой он или нет, если это делается в проверки переменной! Это же логично! вот!
Игорь_Vasinsky
Что то я не пойму! Какой смысл проверять пустой он или нет, если это делается в проверки переменной! Это же логично! вот!
if(!empty($_POST['fio']))
$fio = trim($_POST['fio'])
else
$error['fio'] = 'style=color: red;';