PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
Tiger
Отправлено: 30 Июля, 2011 - 00:22:59
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Проблема такова я не знаю как лучше сделать чтобы шел поиск по индексу через case или по названию улицы, я частично решил задачу но пока что у меня идет поиск только по индексу, не знаю как грамотно сделать, либо по индексу, либо по улицу.
PHP:
скопировать код в буфер обмена
<form method='POST' action='<?= $_SERVER [ 'PHP_SELF' ] ?> '>
Введите улицу или индекс:
<input type='text' name='field'>
<input type='submit' name='button' value='OK'>
</form>
<?PHP
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' ) {
{
{
$flag = 0 ;
}
else
{
if ( preg_match ( "/^[0-9а-яА-Я-\)\(\s]{3}/" , $field ) ) {
$flag = 1 ;
}
else
{
{
$flag = 2 ;
}
else
{
$flag = 3 ;
}
}
}
}
else
{
$flag = 4 ;
}
}
}
switch ( $flag ) {
case 0:
echo ( "поиск по индексу" ) ;
break ;
case 1:
echo ( "поиск по названию" ) ;
break ;
case 2:
echo "Введите минимум 3 символа" ;
break ;
case 3:
echo "Введите корректные данные" ;
break ;
case 4:
echo "Введите данные" ;
break ;
}
include ( "dbopen.php" ) ;
function ShowTree( $ParentID , $lvl ) {
global $link ;
global $lvl ;
$lvl ++;
$sSQL = "SELECT id, title, zip, pid FROM mail_index WHERE pid = " . $ParentID . " AND zip = " . $_POST [ 'field' ] . " ORDER BY title" ;
echo ( "<UL>\n " ) ;
$ID1 = $row [ "id" ] ;
echo ( "<LI>\n " ) ;
echo ( "<A HREF=\" " . "?ID=" . $ID1 . "\" >" . $row [ "title" ] . "</A>" . " \n " ) ;
if ( $row [ "zip" ] != "0" ) {
echo ( $row [ "zip" ] ) ;
}
ShowTree( $ID1 , $lvl ) ;
$lvl --;
}
echo ( "</UL>\n " ) ;
}
}
ShowTree( 0, 0) ;
?>
OrmaJever
Отправлено: 30 Июля, 2011 - 10:10:35
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010
Откуда: Чернигов
Помог: 299 раз(а)
Tiger я не очень понял в чёи же проблема, вот немного оптимизировал ваш код, что же тут не так?
PHP:
скопировать код в буфер обмена
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' && $_POST && ! empty ( $field ) ) {
{
echo ( "поиск по индексу" ) ;
}
elseif ( preg_match ( "/^[0-9а-яА-Я-\)\(\s]{3}/" , $field ) ) {
echo ( "поиск по названию" ) ;
}
{
echo "Введите минимум 3 символа" ;
}
else
{
echo "Введите корректные данные" ;
}
}
else
{
echo "Введите данные" ;
}
include ( "dbopen.php" ) ;
function ShowTree( $ParentID , $lvl ) {
global $link ;
$sSQL = "SELECT id, title, zip, pid FROM mail_index WHERE pid = " . $ParentID . " AND zip = " . $_POST [ 'field' ] . " ORDER BY title" ;
echo "<UL>\n " ;
echo "<LI>\n " ;
echo "<A HREF=\" ?ID=" . $row [ "id" ] . "\" >" . $row [ "title" ] . "</A> \n " ;
if ( $row [ "zip" ] != "0" ) {
echo $row [ "zip" ] ;
}
ShowTree( $ID1 ) ;
}
echo "</UL>\n " ;
}
}
ShowTree( 0, 0) ;
-----Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Tiger
Отправлено: 30 Июля, 2011 - 10:21:03
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
в случае когда надо ввести поиск по индексу должно быть так
PHP:
скопировать код в буфер обмена
$sSQL = "SELECT id, title, zip, pid FROM mail_index WHERE pid = " . $ParentID . " AND zip = " . $_POST [ 'field' ] . " ORDER BY title" ;
а когда по улице
PHP:
скопировать код в буфер обмена
$sSQL = "SELECT id, title, zip, pid FROM mail_index WHERE pid = " . $ParentID . " AND title = " . $_POST [ 'field' ] . " ORDER BY title" ;
вот ума не хватает это реализовать грамотно
OrmaJever
Отправлено: 30 Июля, 2011 - 11:01:36
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010
Откуда: Чернигов
Помог: 299 раз(а)
2 параметром в функцию передаём строку либо
zip либо
title
PHP:
скопировать код в буфер обмена
function ShowTree( $ParentID , & $param ) {
global $link ;
$sSQL = "SELECT id, title, zip, pid FROM mail_index WHERE pid = " . $ParentID . " AND `" . $param . "` = " . $_POST [ 'field' ] . " ORDER BY title" ;
echo "<UL>\n " ;
echo "<LI>\n " ;
echo "<A HREF=\" ?ID=" . $row [ "id" ] . "\" >" . $row [ "title" ] . "</A> \n " ;
if ( $row [ "zip" ] != "0" ) {
echo $row [ "zip" ] ;
}
ShowTree( $ID1 , $param ) ;
}
echo "</UL>\n " ;
}
}
$p = 'zip' ; // эту переменую можно создавать в условии с разными значениями
ShowTree( 0, $p ) ;
-----Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Tiger
Отправлено: 31 Июля, 2011 - 10:21:39
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
OrmaJever огромное спасибо
Извините забыл 1 момент: title надо $_POST['field'] что то типо $_POST['field']% для удобного поиска по названию улицы потомучто целиком улицу не стоит писать вероятность ошибиться большая.
Кстати хочу спросить ещё - как лучше производить поиск по ключевому слову, в данном случае это название улицы?
(Отредактировано автором: 31 Июля, 2011 - 10:43:53)
Tiger
Отправлено: 31 Июля, 2011 - 12:21:41
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Спасибо сделал.
PHP:
скопировать код в буфер обмена
<form method='POST' action='<?= $_SERVER [ 'PHP_SELF' ] ?> '>
Введите улицу или индекс:
<input type='text' name='field'>
<input type='submit' name='button' value='OK'>
</form>
<?PHP
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' && $_POST && ! empty ( $field ) ) {
{
echo ( "поиск по индексу" ) ;
include ( "dbopen.php" ) ;
$p = "zip = '" . $field . "'" ;
ShowTree( 0, $p ) ;
}
elseif ( preg_match ( "/^[0-9а-яА-Я-\)\(\s]{3}/" , $field ) ) {
echo ( "поиск по названию" ) ;
include ( "dbopen.php" ) ;
$p = "title LIKE '" . $field . "%'" ;
ShowTree( 0, $p ) ;
}
{
echo "Введите минимум 3 символа" ;
}
else
{
echo "Введите корректные данные" ;
}
}
else
{
echo "Введите данные" ;
}
function ShowTree( $ParentID , & $param ) {
global $link ;
$sSQL = "SELECT id, title, zip, pid FROM mail_index WHERE pid = " . $ParentID . " AND " . $param . " ORDER BY title" ;
echo "<UL>\n " ;
echo "<LI>\n " ;
echo $row [ "title" ] ;
echo "\n " ;
if ( $row [ "zip" ] != "0" ) {
echo $row [ "zip" ] ;
}
ShowTree( $row [ "id" ] , $param ) ;
}
echo "</UL>\n " ;
}
}
?>
Я уверен, что этот код я набрал не грамотно, поэтому кто моежт пусть внесет поправки, и оптимизирует код. Заранее спасибо.
Tiger
Отправлено: 31 Июля, 2011 - 13:07:47
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Спасибо уже разобрался
PHP:
скопировать код в буфер обмена
switch ( $x ) {
case 0:
include ( "dbopen.php" ) ;
ShowTree( 0 , "AND zip = '" . $field . "'" ) ;
break ;
case 1:
include ( "dbopen.php" ) ;
ShowTree( 0 , "AND title LIKE '" . $field . "%'" ) ;
break ;
case 2:
include ( "dbopen.php" ) ;
ShowTree( $_GET [ 'id' ] , NULL ) ;
break ;
case 3:
include ( "dbopen.php" ) ;
ShowTree( 0, NULL ) ;
break ;
}
как сократить такую конструкцию?(Отредактировано автором: 31 Июля, 2011 - 23:21:19)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB