• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Поиск через выпадающие меню

  • Автор темы edren_baton
  • Дата начала
Статус
Закрыто для дальнейших ответов.
E

edren_baton

Ситуация: есть список выставок с доп параметрами: дата, страна, город.Нужно: 3 выпадающих меню (дата, страна, город). После выбора в каждом меню (напр октябрь, Англия, Лондон) и тыканья на поиск выводились выставки, отвечающие этим параметрам. Пример: вот вверху слева.
 
A

Artexoid

Там помоиму просто всё сделано...

Код:
<form action="result.php" methot="POST">
<select name="data">
<option value="1">Дата 1</option>
<option value="2">Дата 2</option>
<option value="3">Дата ...</option>
</select>
<select name="strana">
<option value="1">Страна 1</option>
<option value="2">Страна 2</option>
<option value="3">Страна ...</option>
</select>
<select name="gorod">
<option value="1">Город 1</option>
<option value="2">Город 2</option>
<option value="3">Город ...</option>
</select>
<input type="submit" value="Найти" />
</form>

А в result.php на основе присланных данных делаешь выборку из базы.. Вот и всё
 
E

edren_baton

А можно мне это немного поподробнее разжевать? Ибо я пхп знаю на уровне установки модов (copy-past)
Юзаю движок DLE, вот к нему мод ищу с подобной функцией.
 
A

Artexoid

<!--QuoteBegin-edren_baton @ 04.03.07 21:19+-->
<span class="vbquote">(edren_baton @ 04.03.07 21:19)</span><!--QuoteEBegin-->А можно мне это немного поподробнее разжевать? Ибо я пхп знаю на уровне установки модов (copy-past)
Юзаю движок DLE, вот к нему мод ищу с подобной функцией.[/quote]

Вот более полный пример, так понятней? (Это всё в файл *.php) :
Код:
<form action="<?=$_SERVER['PHP_SELF']?>" methot="POST"> <? /*Акшин на самого себя*/ ?>
<select name="data">
<option value="1"<? if(@$_POST['data']==1){?> selected="selected"<? }?>>Дата 1</option>
<option value="2"<? if(@$_POST['data']==2){?> selected="selected"<? }?>>Дата 2</option>
<option value="3"<? if(@$_POST['data']==3){?> selected="selected"<? }?>>Дата ...</option>
</select><br />
<select name="strana">
<option value="1"<? if(@$_POST['strana']==1){?> selected="selected"<? }?>>Страна 1</option>
<option value="2"<? if(@$_POST['strana']==2){?> selected="selected"<? }?>>Страна 2</option>
<option value="3"<? if(@$_POST['strana']==3){?> selected="selected"<? }?>>Страна ...</option>
</select><br />
<select name="gorod">
<option value="1"<? if(@$_POST['gorod']==1){?> selected="selected"<? }?>>Город 1</option>
<option value="2"<? if(@$_POST['gorod']==2){?> selected="selected"<? }?>>Город 2</option>
<option value="3"<? if(@$_POST['gorod']==3){?> selected="selected"<? }?>>Город ...</option>
</select><br />
<input name="serch" type="submit" value="Найти" />
</form><br />
<?
if (isset($_POST['serch']))
{
$query = "SELECT * FROM `DATATABLE` WHERE (`DATA`='".$_POST['data']."' AND `STRANA`='".$_POST['strana']."' AND `GOROD`='".$_POST['gorod']."')";
$result = mysql_query($query, $connection) or die (mysql_error());
if (mysql_num_rows($result)>0)
{
?>
<hr />
Найдено <?=mysql_num_rows($result)?> совпадений:
<table border="0" cellpadding="0" cellspacing="0">
<?
while ($result_array=mysql_fetch_object($result))
{
?>
<tr>
<td><?=$result_array->pole1?></td>
<td><?=$result_array->pole2?></td>
<td><?=$result_array->pole3?></td>
</tr>
<?
}
?>
</table>
<hr />
<?
}
else
{
?>
<hr />
По вашему запросу ничего не найдено:
<?
}
}
?>
Значит есть форма которая ссылается на этот же файл. Под формой стоит обработчик, задействуется если была нажата кнопка "Найти" на форме.
Если по запросу ничего не найдено так и пишет, если найдено, пишет сколько совпадений и ниже выводит все эти совпадения.

`DATATABLE` = Имя вашей таблицы в которой вы ищите
`DATA`__= }
`STRANA`= } Поля таблицы `DATATABLE` соответственно
`GOROD` = }

Если нужно использовать метод GET тогда в форме " methot="GET" " и все $_POST["..."] на $_GET["..."] заменить.
 
G

GOsha

НАРОД!
НИКОГДА НЕ ПОЛЬЗУЙТЕСЬ УКОРОЧЕННЫМ ОТКРЫВАЮЩИМ ТЕГОМ "<?" и "<?=" он работает не на всех серверах!
Вместо этого используйте "<?php".
Для: Artexoid
А на самом деле код полностью удовлетворяет вопросу именно так бы и сам делал.
 
A

Artexoid

Для: GOsha

<!--QuoteBegin-GOsha @ 05.03.07 14:56+-->
<span class="vbquote">(GOsha @ 05.03.07 14:56)</span><!--QuoteEBegin-->А на самом деле код полностью удовлетворяет вопросу именно так бы и сам делал.[/quote]
Ну что спросили то и ответил B).
Общую концепцию я изложил, но если edren_baton и это не поймёт, то ему не на форум тогда :).

Кстати всегда использую "<? ?>", "<?= ?>", хостился на 3-х разных хостингах и конфликта не было никакого. Особенно "<?= ?>" очень удобно по моему для вывода переменных..
 
E

edren_baton

Спасиб большое, принцип запроса мне понятен был и без пхп, вот тока с ним проблемы =)
Пошурую код =) Еще раз спасибо.
 
A

Artexoid

Для: edren_baton

B) Незачто. Удачно пошарудить!!! :)
 
G

GOsha

[quot]
Кстати всегда использую "<? ?>", "<?= ?>", хостился на 3-х разных хостингах и конфликта не было никакого. Особенно "<?= ?>" очень удобно по моему для вывода переменных..
[/quot]
Ага, я тоже использовал, пока не нарвался на клиентов, у которых хост был с настройками php.ini:
Код:
short_open_tag = Off
Пришлось полностью лопатить код и заменять
"<?" на "<?php" и "<?=" на "<?php echo"
Вот такие вот пирожки.
 
A

Artexoid

Для: GOsha

Моё мнение такое:

Ага, я тоже использовал, пока не нарвался на клиентов, у которых хост был с настройками php.ini:
Кривой Хостинг B). Обычно эта опция включена.
Думаю можно учесть что данная опция будет отключена при создании готового решения на продажу. Мало ли. Кто-то постарается и найдёт такой Хостинг и продукт не будет работать.

Пришлось полностью лопатить код и заменять
"<?" на "<?php" и "<?=" на "<?php echo"
Вот такие вот пирожки.
Я обычно никогда ничего вручную не лопачу в подобных случаях :). Это ведь нудно очень. Я советую делать следующее: Открываешь например C++ Builder. Пишешь маленькую прогу (а для этого случая прога очень маленькая была бы) которая просто по указанному каталогу пробежалась бы (с учётом подкаталогов) открывая все файлы *.php и переправляя '<?' на '<?php', '<?=' на '<?php echo'. Может быть было бы даже быстрей простой заменой обойтись в PHP редакторе или там в блокноте (кто на чём пишет), но всё равно рутина :), я вот терпеть не могу такое!!

А вообще я когда пишу какую-нибудь прогу, я если нужно напишу еще одну или 2 в помощь для написания этой!! Если есть какие-нибудь однообразные действия, например что-то большое разобрать нужно, или 100 строк и в каждой одно или более значений меняется, или что-то во что-то конвертировать, миллион подобных случаев бывает :)
 
G

GOsha

Для: Artexoid
Ясно, что не вручную. А прогу, которая валит по файлам и все меняет.
А я и говорю, что все решения на продажу, поэтому пользуюсь "<?php".
И с клиентами лучше не спорить, а то начнут сомневаться в профессионализме.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!