Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Добавлени записи в БД (PHP+MYSQL)
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
Доброго вечера форумчанам!!!
Написала скрипт добавления записи в БД, сделала формочку добавления записи
Но при добавлении инфы в таблице отображаются пустые строки. В чем проблема? Объясните пожалуйста
p.s. если что не ругайтесь сильно, только начала постигать таинства сайтостроительсва )
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Pingvinenok_Lolo, а на ошибки вы как вобще внимания не обращаете? Строчку error_reporting (E_ALL); я вижу, значит на экране их должна быть куча.
1. $date_dec = date("Y-m-d") ошибка
2. не вижу ниодной проверки на отправку формы
Это я еще молчу про некорректный код и потенциальные дыры в БД
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
lamozavrik
Отправлено: 06 Января, 2012 - 09:30:50
Частый гость
Покинул форум
Сообщений всего: 161
Дата рег-ции: Дек. 2011
Помог: 4 раз(а)
Да с таким кодом вашу бд снесёт любой малолетний хацкер, хоть немного понимающий в SQL =)
----- Ударим крепким сном по мукам совести!
Pingvinenok_Lolo
Отправлено: 06 Января, 2012 - 11:23:06
Новичок
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
Саныч пишет:
а на ошибки вы как вобще внимания не обращаете? Строчку error_reporting (E_ALL); я вижу, значит на экране их должна быть куча.
1. $date_dec = date("Y-m-d") ошибка
2. не вижу ниодной проверки на отправку формы
Это я еще молчу про некорректный код и потенциальные дыры в БД
В том то и дело, что никаких ошибок не выводит,
lamozavrik пишет:
Да с таким кодом вашу бд снесёт любой малолетний хацкер, хоть немного понимающий в SQL =)
По поводу кода и БД, уж извините, я не волшебница чтобы после написания двух скриптов стать супер-пупер навороченным программистом
И сюда пришла чтобы объяснили или подсказали почему не работает, но как вижу здесь только любят мораль читають...
Bio man
Отправлено: 06 Января, 2012 - 11:38:57
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
хм. приступим.
если не хотите гемороя с форматами дат, их вычислением итд то лучше ипользуйте метку времени в секундах (timestamp). для этого придется изменить не много структуру БД.
ВСЕ данные, которые приходят от пользователя нужно фильтровать.
как сделаете эти изменения, будем дальше думать. конечно это проблемы не исправит но в конечном итоге получится работающий скрипт. если вы действительно хотите научится кодить то запаситесь терпением.
Саныч
Отправлено: 06 Января, 2012 - 13:47:21
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Pingvinenok_Lolo пишет:
И сюда пришла чтобы объяснили или подсказали почему не работает, но как вижу здесь только любят мораль читають...
Морали вам никто не читает, а как раз и объясняют по теме. Но, а что в такой немного резкой форме... Ну с этим ничего не поделаешь, такие уж мы
Конкретно по коду я уже писал. У вас ошибка в 11 строке, которая привидет к Parse error. Это самое первое.
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Pingvinenok_Lolo
Отправлено: 06 Января, 2012 - 14:15:04
Новичок
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
Bio man
Данные отфильтровала
Вот с TIMESTAMP не разобралась
TIMESTAMP представляет собой тип столбца, который можно использовать для автоматической отметки текущей даты и времени при выполнении операций UPDATE или INSERT
А если мне надо только дата? И чем так плоха функция date() ?
Вот нашла две функции которые очищают данные от всякой бяки, если есть другие предложения по очистке данных с радостью выслушаю Саныч
Да, точки с запятой нет, в самом коде есть, когда в собщение копировала чего-то где-то зацепила) , уже исправила
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
Pingvinenok_Lolo, почему не все данные отфильтрованы? ведь они заносятся в БД и в следствии возникает большая вероятность sql иньекции.
mysql_real_escape_string() поможет. в общем все, что идет в БД, в том числе запросы выборки и обновления (UPDATE), нужно пропускать через эту ф-цию.
Pingvinenok_Lolo пишет:
TIMESTAMP представляет собой тип столбца
тип столбца используйте int и формируйте timestamp используя средства PHP, например, time(), или функцию mysql NOW(). выводить дату/время через date(), например, так
$ts=time();// переменная хранящия метку. в вашем случае будет не time() а ячейка из БД
echodate("Y-m-d H:i:s",(int)$ts);// "Y-m-d H:i:s" - формат даты; (int)$ts - преобразование типа на лету. для того что бы избежать ошибки, ведь из БД метка придет не как число а как строка
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Столько хороших и добрых советов -- автор темы должен быть доволен(а). Маленькое замечание по синтаксису SQL INSERT INTO `...` (.....) VALUE (.....) INSERT INTO `...` (.....)VALUES(.....)
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
evgenijj пишет:
Столько хороших и добрых советов -- автор темы должен быть доволен(а). Маленькое замечание по синтаксису SQL
Автор не просто довольна, автор счастлива, что нашла столько хорошоих и добрых людей, которые уму-разуму учат Спасибо за замечание, исправила Bio man
Как не все данные отфильтрованы? 5 переменных, 3 - строковые, отфильтровала (и уже пропустила через mysql_real_escape_string()), дату вводит не пользователь а определяется скриптом и пер-я $pay - принудительно привела к int.
С датой в Вашем примере разобралась, но это вроде как для того случая, когда пользователь вводит дату, а если не пользователь вводит, а скрипт определяет какая дата и заносит БД, тоже использовать timestamp? Или лучше его всегда использовать?
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Девушка, зачем вам это программирование, лучше сходите на улицу с парнем погулять
Pingvinenok_Lolo
Отправлено: 09 Января, 2012 - 15:07:25
Новичок
Покинул форум
Сообщений всего: 26
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
armancho7777777 пишет:
Удалите это mysql_error() из этой строки mysql_query ($query_j) or die (mysql_error());
Удалила. Разве это ошибка? Зачем тогда в учебниках такую бяку пишут
Okula пишет:
Девушка, зачем вам это программирование
Как зачем??? А что бы на хлебушек с маслом было!
armancho7777777
Отправлено: 09 Января, 2012 - 15:11:07
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011 Откуда: Москва
Помог: 221 раз(а)
Pingvinenok_Lolo пишет:
Удалила. Разве это ошибка?
Нет. Аспекты безопасности. mysql_error() выводит ошибки на экран. А в ошибках может быть информация связанная с БД и её структурой. Злоумышленник может специально сгенерировать ошибку. В ней может оказаться "много полезного"
Вывод ошибок лучше вообще отключить по завершению проекта. А сами ошибки записывать в логи. (Добавление)
Скачайте, посмотрите:
"Специалист" | "PHP. Уровень 1, 2, 3 и 4" [2010]
http://nnm-club.ru/forum/viewtopic.php?t=290401
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.