Имя пользователя:
Пароль:
 

Название темы: Создание поисковика.
Показать сообщение отдельно

Аватара для 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

Название темы: Создание поисковика.