Вопрос № 122010: Здравствуйте товарищи программисты. Я только пытаюсь изучить PHP и столкнулся вот с такой проблемкой:
существует база данных mysql с таблицей телефоны, в которой есть поля: фамилия, имя, телефон, адрес и т.п., у меня получаестся делать разны...Вопрос № 122071: Здравствуйте, пишу каталог предприятий. Сайт предприятия добавляется только при условии, что на сайте есть ссылка на мой каталог. Каким образом я могу проверить наличие ссылки на мой сайт, приведите пожалуйста пример скрипта, необходим ли на сервере ...
Вопрос № 122.010
Здравствуйте товарищи программисты. Я только пытаюсь изучить PHP и столкнулся вот с такой проблемкой:
существует база данных mysql с таблицей телефоны, в которой есть поля: фамилия, имя, телефон, адрес и т.п., у меня получаестся делать разные sql запросы к базе и получать результаты, но как сделать форму (форму поиска, что ли) точнее форму я понимаю как сделать в html, а вот обработчик этой формы на PHP не понимаю.;-(
подскажите пожалуйста.
Отвечает: Товарищ Бородин
Здравствуйте, Шкаляров Максим! На самом деле ничего сложного здесь нет. Вам надо в обработчике формы выполнять запрос следующего вида:
"SELECT `phone` FROM `Ваша таблица` WHERE `фамилия` = '".$_POST['last_name']."' OR `адрес` = '".$_POST['address']."' ORDER BY `phone` ASC";
Я переименовал Ваши поля для адреса и фамилии, как address и phone, соответственно. У Вас в Вашей форме два текстовых поля с одинаковыми именами. Понятное дело, что корректно Ваше приложение
работать не будет.
Остается вопрос, зачем нужны галочки. Если Вы таким образом хотите сказать, что скрипт должен искать точные совпадения фамилии и адреса, то галочки следует использовать таким образом (объясняю на метаязыке):
- при посыле формы скрипту строится запрос. В любом случае, независимо от того, будут отмечены галочки или нет, будет использоваться следующая конструкция:
"SELECT `phone` FROM `table` WHERE $last_name OR $address
";
- при проверке отмеченности галочек мы будем присваивать переменным $last_name и $address различные значения: если отмечена первая галочка, то $last_name = "`last_name` = '$_POST['last_name']'", в противном случае $last_name = "`last_name` RLIKE '%".$_POST['last_name']."%'"; если отмечена вторая галочка, то делаем таким же образом: $address = "`address` = '".$_POST['address']."'", в противном случае: $address = "`address` RLIKE
'%".$_POST['address']."%'".
В чем заключается основная мысль? В том, что при точном поиске мы ищем в таблице точное совпадение значения текстового поля с соответствующим полем таблицы, а при "неточном" поиске мы ищем все соответствующие поля, в которые входит подстрока - значение текстового поля, то есть, проверяем поля на соответствие регулярному выражению '%$_POST['address']%' или '%$_POST['last_name']%'.
После того, как
запрос сформирован, остается его выполнить. Как выполнять запрос, я думаю, Вы знаете.
Возможно, я объяснил очень сумбурно, но основная мысль в том, что нам надо сформировать запрос к базе данных на лету и сразу же его выполнить.
После того, как запрос выполнен, надо вытащить все записи на свет Божий(то есть, вывести в окно браузера). Думаю, Вы должны знать, как это делается, поэтому объяснять не буду.
Нет нужды напоминать, что есть внутренняя почта, куда Вы можете задать вопрос, если что-то
непонятно. Удачи! С уважением, Товарищ Бородин
Приложение:
--------- Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Товарищ Бородин (статус: Практикант)
Ответ отправлен: 07.02.2008, 08:17 Оценка за ответ: 5 Комментарий оценки: БОЛЬШОЕ СПАСИБО! ВСЁ ПРОСТО И ДОСТУПНО
Отвечает: Давыденко Андрей
Здравствуйте, Шкаляров Максим!
Хотелось бы добавить, что в строке
<form name="form_poisk" method="post" action="">
необходимо добавить страницу - обработчик, т.е. action="obrabotchik.php", где obrabotchik.php - Ваша страница, в которой будет выполняться код, описанный тов. Бородиным.
С наилучшими пожеланиями.
Ответ отправил: Давыденко Андрей (статус: 2-ой класс)
Ответ отправлен: 07.02.2008, 14:11
Вопрос № 122.071
Здравствуйте, пишу каталог предприятий. Сайт предприятия добавляется только при условии, что на сайте есть ссылка на мой каталог. Каким образом я могу проверить наличие ссылки на мой сайт, приведите пожалуйста пример скрипта, необходим ли на сервере cron чтобы скрипт проверял наличие ссылки с определенной периодичностью?
Заранее благодарю.
Отвечает: Товарищ Бородин
Здравствуйте, Акопов Сергей Сергеевич! Проверять наличие ссылки можно по регулярному выражению или с помощью функций PHP для работы с текстом. Как это можно сделать. Например, у Вас есть в каталоге страница для пользователей других сайтов, на которой они могут добавить свой сайт в Ваш каталог. Они вводят точный адрес сайта "www.theirsite.com", описание сайта, а затем посылают форму обработчику. Обработчик с помощью функций для работы с файлами получает HTML-код главной страницы сайта, проверяет
наличие в коде ссылки на Ваш сайт, и в зависимости от результата поиска либо добавляет сайт в каталог, либо говорит пользователю, что ему надо сначала добавить ссылку на свой сайт. При этом было бы хорошо, если HTML-код ссылки ему сразу и выдавался. Чтобы осталось только HTML-код скопировать и вставить, куда следует.
На что следует обратить внимание... Надо узнать, позволяют ли настройки PHP на Вашем сервере открывать URL. Директива, если мне память не изменяет,
allow_url_open должна быть в значении on(или 1), но не off, и не 0. Она, эта директива, в PHP.INI точно есть, так что если есть доступ к нему, посмотрите. Либо выведите на экран PHPINFO() и посмотрите там.
Далее... Простые строковые с бОльшим трудом, чем функции для работы с регулярными выражениями, позволяют учесть такой момент - пользователь может закомментировать ссылку на Ваш сайт. Таким образом, ссылка будет видна PHP-скрипту, но не будет видна пользователю(если, конечно, он не догадается посмотреть
HTML-код страницы, что для обычных пользователей - то еще "удовольствие"). Регулярные выражения позволяют учесть этот момент. Но выражение будет сильно осложняться.
Привожу возможное решение в приложении. Не поручусь за то, что работает регулярное выражение, его бы потестировать, а у меня такой возможности, к сожалению, нет сейчас. Но направление работы настоятельно рекомендую такое. С уважением, Товарищ Бородин --- -=ПРИЛОЖЕНИЕ=- ---
--------- Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Товарищ Бородин (статус: Практикант)
Ответ отправлен: 07.02.2008, 13:39 Оценка за ответ: 4