Вот как можно записать ваш скрипт в более компактном и правельном варианте.
Это не мой скрипт, я лишь подправил и убрал предупреждения.
И почему этот вариант правильнее будет? Красивее - да, не спорю. Получается что здесь
массив $data - результат array_keys() или чего-то подобного (или foreach). Да, хорошо, рутинная работа убралась, писать в два раза меньше кода. Тогда уж проще сразу так, зачем циклы
echo$result ? 'Ваши данные успешно добавлены':'Ваши данные не добавлены';
Еще красивее. Только три минуса (в обоих примерах кода):
1. Мы уже не можем назначить какое-либо имя для кнопки, и не должно быть никаких левых значений
2. Независимо от того, какой должен быть тип поля - все поля проэкранируются (хотя если какое-то поле должно быть числом - гораздо проще привести его к целому типу и все, не так ли?)
3. Мы полностью полагаемся на "доброту и щедрость" пользователя, забывая о том, что никто ему не мешает взять да изменить к примеру имя поля.
Догадаться что используется такой синтаксис - труда не составит, альтернативный синтаксис с использованием SET используется редко. В таком случае, я могу попробовать в первом же попавшемся поле прописать например author) VALUES (NULL) -- f и спокойно создастся пустая запись, причем никаких ошибок не возникнет.
Но нам же это не надо, верно? Значит нужно и их обработать от инъекций. Но кроме обычных символов также еще необходимо убрать из названий полей скобки и запятые - итого получается код уже должен выглядеть таким образом
echo$result ? 'Ваши данные успешно добавлены':'Ваши данные не добавлены';
От третьего пункта избавились, от первого можно избавиться если поставить условие на проверку ключа/значения в обоих функциях, ок. Второй пункт остался. Теперь, если посмотреть с другой стороны - а так ли уж нужна эта красота?
При 10 полях в таблице - 10 лишних вызовов trim, mysql_real_escape_string, str_replace + array_keys. Имхо, это лишнее, и лучше перечислить поля вручную. Но тут появляется еще одна проблема. Если юзер просто-напросто в консоли удалит какое-то поле - то у нас будет ошибка column count doesn't match values count.. или как она там. Следовательно, нам еще необходимо проверить число записей, чтобы оно соответствовало числу полей.
Итого, добавляется еще лишний if-else. И по прежнему остается невозможность приведения к целому типу при надобности (можно проверять is_numeric - но что толку если ввести заведомо не число?).
Имхо, в данном случае, красота кода не стоит того, чтобы ее использовать только потому, что она красивее..
P.S. поправьте если я в чем то ошибся, буду рад признать неправоту..
я не понимаю, в чем проблема. Вы что-то мутите для меня непонятное.. Естественно, если этого файла нет, то среда вам об этом радостно сообщит.. что не так? (Добавление)
раз вы хотите на каждый урл свой файл - то зачем тогда мучаться, сделайте так:
modbuild.php - а он есть в этой папке (Z:\home\site\www\console), точно? (Добавление)
Вы добавляли php.exe в переменную окружения?
там просто написано для nix, а не винды.. Попробуйте так
Notice: Undefined index: error in /var/www/serj12331/data/www/dome n.ru/engine/init.php on line 84
Цитата:
Предупреждение: неизвестный индекс error в файле ....init.php на 84 строке
З.Ы. и зачем столько цитировать..? (Добавление)
смотрим на эту строчку, видим там код приведенный мною выше, заменяем на код, приведенный опять же выше. И так далее, только заменяем на нужное