Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Создание поисковика.

Ответить
Настройки темы
Создание поисковика.

Аватара для stalingrad432006

Враг народа


Сообщения: 399
Благодарности: 53

Профиль | Отправить PM | Цитировать


Хочу сразу извиниться за неправильную терминологию ( я с ней не совсем знаком ) и, возможно, неправильное размещение темы ( может быть, ее надо разместить в другом разделе ). Суть вопроса: как создать поисковик, который при выборе одного из двух объектов предоставляет выбор еще из семи объектов, далее, при выборе последнего можно выбрать еще из 50 объектов и жмем "Поиск". После чего загружается страница с объетами из базы данных ( которую, чуть позже, так же предстоит написать ). На каком языке пишется все это безобразие ? По возможности, укажите ссылки, где подробно расписано создание поисковика и баз данных и их взаимодействие( аки для чайника ). Спасибо.

-------
Своя граната ближе к телу...


Отправлено: 19:17, 04-11-2008

 

Аватара для stalingrad432006

Враг народа


Сообщения: 399
Благодарности: 53

Профиль | Отправить PM | Цитировать


Сверстал РНР-страничку с тремя формами и одной кнопкой. В первой форме 2 объекта ( пронумерованы 1.1, 1.2 ), во второй 8 ( пронумерованы 2.1, 2.2, 2.3,...,2.8 ), в третьей 52 ( пронумерованы 3.1, 3.2, 3.3,...,3.52 ) и одна кнопка "Поиск". Примерно следующим образом выглядит:

Код набросал такой:

PHP код: Выделить весь код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
<title></title> 
</head> 
<body>
 <?php
   $db 
mysql_connect("localhost");
   
mysql_select_db("firstbd",$db);

   
$result mysql_query("SELECT *  FROM objects",$bd);   
   
$myrow mysql_fetch_array($result);    

   do   
   {   
   echo 
"Объект №"$myrow['такой-то']."<br/>";   
   echo 
$myrow['вот это']."<br/>";   
   echo 
$myrow['вот то']."<br/>";   
   echo 
$myrow['не это']."<br/>";   
   echo 
$myrow['не то']."<br/>";   
   echo 
$myrow['и т.д.']."<br/>";   
   }   
   while (
$myrow mysql_fetch_array($result)); 
 
?>           
<div style="text-align:center"/>             
<p>Для того, чтобы выбрать интересующий объект, выполните четыре следующих шага:             
</p><br/><br/>
         <p>1.<select size="8" cols="15" style="width: 150px; vertical-align:text-top"/>
                    <option value="1.1"/>1.1</option>
                    <option value="1.2"/>1.2</option>
                  </select>
                2.<select size="8" cols="15" style="width: 190px; vertical-align:text-top"/>
                    <option value="2.1"/>2.1</option>
                    <option value="2.2"/>2.2</option>
                    <option value="2.3"/>2.3</option>
                    <option value="2.4"/>2.4</option>
                    <option value="2.5"/>2.5</option>
                    <option value="2.6"/>2.6</option>
                    <option value="2.7"/>2.7</option>
                    <option value="2.8"/>2.8</option>
                  </select>
                3.<select size="8" cols="15" style="width: 150px; vertical-align:text-top"/>
                    <option value="3.1"/>3.1</option>
                    <option value="3.2"/>3.2</option>
                    <option value="3.3"/>3.3</option>
                    <option value="3.4"/>3.4</option>
                    <option value="3.5"/>3.5</option>
                    <option value="3.6"/>3.6</option>
                    <option value="3.7"/>3.7</option>
                    <option value="3.8"/>3.8</option>
                    <option value="3.9"/>3.9</option>
                    <option value="3.10"/>3.10</option>
                    <option value="3.11"/>3.11</option>
                    <option value="3.12"/>3.12</option>
                    <option value="3.13"/>3.13</option>
                    <option value="3.14"/>3.14</option>
                    <option value="3.15"/>3.15</option>
                    <option value="3.16"/>3.16</option>
                    <option value="3.17"/>3.17</option>
                    <option value="3.18"/>3.18</option>
                    <option value="3.19"/>3.19</option>
                    <option value="3.20"/>3.20</option>
                    <option value="3.21"/>3.21</option>
                    <option value="3.22"/>3.22</option>
                    <option value="3.23"/>3.23</option>
                    <option value="3.24"/>3.24</option>
                    <option value="3.25"/>3.25</option>
                    <option value="3.26"/>3.26</option>
                    <option value="3.27"/>3.27</option>
                    <option value="3.28"/>3.28</option>
                    <option value="3.29"/>3.29</option>
                    <option value="3.30"/>3.30</option>
                    <option value="3.31"/>3.31</option>
                    <option value="3.32"/>3.32</option>
                    <option value="3.33"/>3.33</option>
                    <option value="3.34"/>3.34</option>
                    <option value="3.35"/>3.35</option>
                    <option value="3.36"/>3.36</option>
                    <option value="3.37"/>3.37</option>
                    <option value="3.38"/>3.38</option>
                    <option value="3.39"/>3.39</option>
                    <option value="3.40"/>3.40</option>
                    <option value="3.41"/>3.41</option>
                    <option value="3.42"/>3.42</option>
                    <option value="3.43"/>3.44</option>
                    <option value="3.44"/>3.44</option>
                    <option value="3.45"/>3.45</option>
                    <option value="3.46"/>3.46</option>
                    <option value="3.47"/>3.47</option>
                    <option value="3.48"/>3.48</option>
                    <option value="3.49"/>3.49</option>
                    <option value="3.50"/>3.50</option>
                    <option value="3.51"/>3.51</option>
                    <option value="3.52"/>3.52</option>
                  </select>
             </p><br/><br/>
             <p>4.<input type="button" value="Поиск" onclick="Get_Logon()"  style="height: 25px; width: 190px; text-align:center"/>
             </p><br/><br/>
            </div>
          </body>
 </html>

И сам вопрос: Как сделать, что бы при выборе позиций в формах и при нажатии кнопки "Поиск" код РНР обращался к серверу и т.д. Другими словами, какой код написать и на каком языке для того, что бы оживить формы и кнопку "Поиск"? Спасибо. Если что-либо некорректно назвал или не достаточно ясно произвел постановку вопроса, просьба поправить.

-------
Своя граната ближе к телу...


Отправлено: 22:51, 19-11-2008 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


stalingrad432006, так формы-то и нет! Это весь код? Потому что я смотрю - Get_Logon() вызывается, но нигде не описыватеся.
Пишите так:
HTML код: Выделить весь код
<form action='script.php' method='post'> <select name='var1nya'>...</select> <select name='var2nya'>...</select> <input type='text' name='nyaText' value='Для примера' /> <input type='submit' value='Поиск' /> </form>

При нажатии на кнопку submit отсылаются данные на скрипт script.php методом post.
В самом скрипте получить доступ к переменным - $_POST['var1nya'], $_POST['var2nya'], $_POST['nyaText'].

Если хотите обработать правильность заполнения формы перед отправкой, то можно добавить JavaScript'а:
HTML код: Выделить весь код
<form name='formSearch' action='script.php' method='post' onsubmit='check_data()'> <select name='var1nya'>...</select> <select name='var2nya'>...</select> <input type='text' name='nyaText' value='Для примера' /> <input type='submit' value='Поиск' onclick='return false;' /> </form>

В функции check_data() нужно проверить данные и выполнить что-то вроде document.getElementById('formSearch').submit();
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:06, 20-11-2008 | #22


Аватара для stalingrad432006

Враг народа


Сообщения: 399
Благодарности: 53

Профиль | Отправить PM | Цитировать


Цитата Coutty:
так формы-то и нет! »
может я неправильно выразился. Я подразумевал под термином "форма" окошко со строчками, одну из которых надо обязательно выбрать ( в HTML, насколько я помню, это безобразие заключается в теги <form></form> ). Но, пока редактировал страничку сайта до минимума, который можно было бы выставить на форуме в качестве исходной, по собственной невнимательности, эти теги удалил вместе с остальным.
Смотрится комично, когда участник форума выставляет свое творенье на показ искушенной публике, декларирует наличие форм и их не указывает в коде.
Цитата Coutty:
Это весь код? »
постарался выложить минимум, который будет смотреться в браузере и не отвлекать внимание на скрипты, к вопросу неотносящиеся:
Цитата:
$db = mysql_connect("localhost");
mysql_select_db("firstbd",$db);
если я не ошибаюсь, это подключение к MySQL-серверу и базе данных.
.................................................................
Цитата:
$result = mysql_query("SELECT * FROM objects",$db);
$myrow = mysql_fetch_array($result);
это выбор объекта из таблицы и вывод как массив.
.................................................................
Цитата:
do
{
echo "Объект №"$myrow['такой-то']."<br/>";
echo $myrow['вот это']."<br/>";
echo $myrow['вот то']."<br/>";
echo $myrow['не это']."<br/>";
echo $myrow['не то']."<br/>";
echo $myrow['и т.д.']."<br/>";
}
while ($myrow = mysql_fetch_array($result));
это вывод объектов в цикле.
...............................................................
На понимание остального содержимого Вашего поста мне необходимо время. Дело в том, что отродясь не программировал и сразу взялся за базы данных и РНР. Тяжеловато на первых порах приходится. Но, что-то мне подсказывает, что не все потеряно в этой области для меня . Спасибо.

-------
Своя граната ближе к телу...


Отправлено: 04:57, 20-11-2008 | #23


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


stalingrad432006, простите, вы комментируете свой код для меня? Я-то понял Кстати, утром, когда я писал, кода было меньше. Да и сопровождающего текста тоже. Но нед надписи "последний раз редактировалось". У меня провал?))

Цитата:
$myrow = mysql_fetch_array($result);

do
{
echo "Объект №"$myrow['такой-то']."<br/>";
echo $myrow['вот это']."<br/>";
echo $myrow['вот то']."<br/>";
echo $myrow['не это']."<br/>";
echo $myrow['не то']."<br/>";
echo $myrow['и т.д.']."<br/>";
}
while ($myrow = mysql_fetch_array($result));
Зачем такая странная конструкция? Можно проще:
Цитата:
while ($myrow = mysql_fetch_array($result))
{
echo "Объект №"$myrow['такой-то']."<br/>";
echo $myrow['вот это']."<br/>";
echo $myrow['вот то']."<br/>";
echo $myrow['не это']."<br/>";
echo $myrow['не то']."<br/>";
echo $myrow['и т.д.']."<br/>";
}
И впереди не придётся инициализировать $myrow.
Вместо mysql_fetch_array() я предпочитаю использовать mysql_fetch_assoc(). Всё равно ведь только ассоциативными элементами массива пользуетесь, так зачем и нумерованный и ассоциативный вместе делать?

Цитата:
<div style="text-align:center"/>
<option value="2.2"/>2.2</option>
Такие строки некорректны с точки зрения HTML (сначала почему-то тег закрывает сам себя />, а потом ещё и другим закрывается. Тот же div не может быть одиночным тегом - иначе зачем он вообще нужен?
Вообще, достаточно написать <option>2.2</option>, чтобы передавались соответствующие данные. Вот если вам надо показывать одно, а передавать другое, то используем <option value='2.2'>Мяу-мур</option>.

Далее, повторюсь: в элементах должен быть атрибут name. Т.е. <select name='var1'>... Если имя не указано, то и данные вы потом в скрипте не обработаете. После отправки формы методом post скрипт может получить значение выбранного элемента в select'e по запросу, например, echo $_POST['var1']; Т.е. если был выбран элемент 2.2, то echo выведет 2.2.


Ладно, для понимания приведу конкретный пример:
PHP код: Выделить весь код

<html><head><title>Заголовок</title></head>

<body>
<?php
if ($_POST['city']) // если передаётся запрос с формы, то входим в этот блок
  
{
  echo 
"Результаты поиска по городу " $_POST['city'];
  
$sql mysql_query("SELECT * FROM `table_name` WHERE `city`='" $_POST['city'] . "'"); // Обратите внимание на правильность расстановки кавычек.
 // можно использовать и такие запросы ... WHERE `city` LIKE '%" . $_POST['city'] . "%'". Тогда поиск осуществляться поиск не точного совпадения, а строк, содержащих значение. 
  // Но есть ограничение на минимальную длину строки в запросе LIKE. Какое именно - трудно сказать. 
  // Я писал поиск по прайсу, так там при запросе длиной 4 символа и меньше находилась всякая фигня. 
  //Даже на слово из трёх букв свой товар находился :) Хотя ничего такого в прайсе не было.
  
while ($result mysql_fetch_assoc($sql))
     {
     echo 
"Улица " $result['street'] . ", дом " $result['home'] . "<br />"// предполагается, что таблица имеет структуру [ id | city | street | home | и т.д. ]
     
}
  }
// а после вывода результатов показываем форму. Если не было запроса с формы, значит просто форма будет.
?>
  <form action="" method="post">
    <select name="city">
      <option checked="checked">Челябинск</option>
      <option>Москва</option>
      <option>Самара</option>
      <option value="Бобруйск">Замухрыжинск</option>
    </select>
    <br />
    <input type="submit" value="Отправить" />
  </form>
</body>
</html>

Теперь комментарии по html:
- В форме стоит action="" - отправка запроса на самого себя.
- <select name="city"> будет сохранять значение в переменную city ($_POST['city').
- По умолчанию в списке выбран Челябинск.
- Если в тэге <option> не указано значение value="nya", значит передаётся содержимое тэга. Т.е. для Челябинска, Москвы и Самары будет передаваться "Челябинск", "Москва" и "Самара" соответственно. При выборе "Замухрыжинск"а скрипт получит значение переменной $_POST['city'] == "Бобруйск" (указано значение value).
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:11, 20-11-2008 | #24



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Создание поисковика.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Microsoft начала внутреннее тестирование интернет-поисковика Kumo Игорь Анатольевич Новости и события Microsoft 6 04-03-2009 01:35
Создание сайта dima1981 Вебмастеру 6 29-05-2008 20:48
Печать - Создание Wi-fi сети ToR4ok Сетевые технологии 3 28-04-2008 17:36
ищу движок ftp поисковика Dj Dynamite Вебмастеру 4 30-07-2006 02:14
Доступ поисковика к закрытым страницам ScorpionXXX Хочу все знать 5 18-06-2006 02:20




 
Переход