| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > в чем моя ошибка? |
| Автор: exe1389 20.7.2011, 10:44 | ||
| написал простейшее меню поиска по бд выводит все варианты в таблице что бы я не забил
|
| Автор: voral 20.7.2011, 10:52 | ||
| у вас два безымянных input неизвестного типа art. Переменных с именами art и factory не существует Добавлено через 56 секунд
|
| Автор: Gold Dragon 20.7.2011, 10:54 |
| а что у тебя POST возвращает? |
| Автор: CruorVult 20.7.2011, 10:54 |
Сильно! |
| Автор: exe1389 20.7.2011, 10:56 |
| тогда каким способом мне нужно сделать, что бы все это заработало? и искало по колонкам "art" и "factory" ? |
| Автор: CruorVult 20.7.2011, 11:03 | ||
способом изучения основ веба а именно HTML! |
| Автор: voral 20.7.2011, 11:04 |
| Я ж привел тебе html часть твоего файла. Копируй вместо своей и используй |
| Автор: exe1389 20.7.2011, 11:07 |
| voral, спасибо |
| Автор: voral 20.7.2011, 11:13 | ||
Совет. Используй для отладки
можешь много нового узнать |
| Автор: exe1389 21.7.2011, 14:52 |
| ещё один вопрос по этому коду: нужно ли устанавливать кодировку по умолчанию? |
| Автор: Gold Dragon 21.7.2011, 14:59 |
| это как? Ты в какой кодировке делаешь сайт? |
| Автор: exe1389 21.7.2011, 15:09 |
| это не сайт а просто страничка, http://bot.amd-studio.ru пока в браузер'е не поставишь кодировку не отображается нормально |
| Автор: Gold Dragon 21.7.2011, 15:26 |
| я лично всегда прописываю кодировку в .htaccess и потом проблем не возникает. |
| Автор: Gold Dragon 21.7.2011, 15:50 |
| К примеру, если сайт написан в кодировке UTF-8, то не на всех серверах помогает указание кодировки только в head |
| Автор: voral 21.7.2011, 16:39 | ||
А тут дело не в html или UTF. Тут дело в кривой настройке сервера. И это не отменяет хорошего правила - следовать стандартам. Я по крайней мере последних лет 7 же и не встречал таких хостингов. |
| Автор: Gold Dragon 21.7.2011, 19:00 | ||
| и в том и другом и в браузерах.. всего по чуть-чуть и будет проблема.. так что не только спецификации следовать, но ещё и не особо полагаться на сервер. В любом случае код изначально не верен, вернее очень и очень опасный. Мало того, что запрос не обрабатывается после получения, но он ещё и напрямую вставляется в запрос к базе. exe1389, я так понимаю ты только начинаешь экспериментировать с передачей данных на сервер. Запомни, всё что приходит от клиента всегда опасно(!) А значит всегда нужно проверять на соответствие и экранировать. И насколько я понял по коду, если в базе данных нет то ты напечатаешь
Добавлено через 7 минут и 51 секунду кстати, а почему mysql_pconnect? |
| Автор: exe1389 22.7.2011, 10:55 | ||||
| Да я только начинаю... т.е. мне нужно создать файл с "конфигом" для подключения к базе и использовать такую схему? config.php:
и основной код:
|
| Автор: voral 22.7.2011, 12:39 | ||
Это зависит от задачи. Если у вас всего один скрипт - то можно и не надо. Плохое место не здесь. Простейшее и безобидное. Что будет если посетитель введет символ % в оба поля? Или просто энтер нажмет (по сути у вас это и было в начале). Заметье это очень безобидное - все го лишь увидят все ваши записи. А ведь можно добавит ввести символ кавычки (т.е. закончить ваше выражение и доработать sql запрос до состояния когда он будет, например, показывать гораздо больше информации |
| Автор: Gold Dragon 22.7.2011, 16:30 | ||
| exe1389, если разобрать всё по пунктам (конечно всё зависит от проекта, но будем считать что он будет большим, то вот что нужно сделать, вернее что бы сделал я: 1. Разделил бы PHP и HTML. т.е. одна функция выводит форму, другая обрабатывает, третья выводит результат. Плюс сюда же нужно вставить обработчик "что делать если ничего не введено" и обработчик при ошибки введённых данных 2. Для работы с базой воспользовался бы самостоятельным классом. Если не можешь или не хочешь писать свой, то их достаточное количество готовых. И в будущем если что-то будет меняться, то тебе достаточно просто внести изменения в класс, а не искать всё по всему коду. Да и не придётся обрабатывать всякое такое while($row= mysql_fetch_assoc($res)), а просто отправить к примеру запрос и на выходе получить уже готовый массив 3. Однозначно ввёл проверку входящих данных. Хотя бы элементарное, удалить лишние провебы в начале и конце, удалить скрипты, удалить тэги, экранировать спецсимволы. А самый лучший вариант пользоваться регуляркой и оставлять нужное.. Например если это телефон то там не может быть букв, и наоборот, если это фамилия, то там только буквы.. 4. Всё присваивал переменной и только в самом конце выводил бы на экран. Так тебе проще избежать ошибок.. например:
5. Хранил бы данные для подключения к базе в отдельном файле, например с правами 644. Так безопаснее. Да и всегда знаешь где у тебя данные по настройке. |
| Автор: exe1389 26.7.2011, 10:39 |
| Gold Dragon, спасибо большое! |
| Автор: exe1389 19.8.2011, 08:23 | ||
В общем получилось как то вот так:
только пока не знаю как реализовать в этом чтобы искал не по одной таблице, а по 2-м поможете ? |