Пример 3

Примеры обработки запросов к базе

query.php


<?

session_start
();


?>


<!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>

<h2>Примеры обработки запросов к базе</h2>

<?

# Определяем имя скрипта

$script $_SERVER["PHP_SELF"];



############################################################################

 #############
 #           #
 #  Блок 1   # --> Подключение к базе данных
 #           #
 #############


# Определяем основные параметры для работы с базой

    
$HostName "localhost";

    
$UserName "root";

    
$Password "";

    
$DBName "Example";




# Подключаемся к серверу MySQL. Если подключение прошло неуспешно - выводим соответствующее сообщение

        
if(@!mysql_connect($HostName$UserName$Password)) {

                echo 
"Не могу соединиться с сервером MySQL!<br>";

                echo 
mysql_error();

                exit;
        }


# Выбираем нужную для работы базу

        
@mysql_select_db($DBName) or exit("Нет такой базы");



# Указываем кодировку для кириллического текста

        
mysql_query("SET NAMES 'cp1251'");


# Определяем, существует ли таблица 'murphy'
# Проверку осуществляем с помощью 'пустого' запроса к таблице, после чего анализируем результат


    
if(!mysql_query("SELECT 1 FROM murphy WHERE 0")){

        echo 
"<p><b>Таблица 'murphy' не существует</b></p>";

        echo 
"<p class=back><a href='admin.php?query=write'>Вам необходимо её создать</a></p>";

    }else{




############################################################################

 #############
 #           #
 #  Блок 2   # -->  Вывод формы для ввода запроса к базе
 #           #
 #############


    # Если метод запроса к скрипту не равен POST, то выводим форму

        
$method $_SERVER['REQUEST_METHOD'];



        if(
$method !"POST"){

            
$query (isset($_SESSION['query'])) ? $_SESSION['query'] : "SELECT * FROM murphy WHERE 1";


            
show_query_examples($query);




        } else {        
# иначе если метод запроса равен 'POST' - обрабатываем запрос


############################################################################

 #############
 #           #
 #  Блок 3   # --> Обработка запроса - РАБОТА С БАЗОЙ
 #           #
 #############



            # Осуществляем поиск в базе с запросом $query, переданным из формы


                
$query = @$_POST['query'];


                if(
get_magic_quotes_gpc()) $query stripslashes($query);


                
$r mysql_query($query);


                
$_SESSION['query'] = $query;


                
# Вывод результата поиска

                    
echo "<p><a href='$script' class='back'>назад</a></p>\n";
                    echo 
"<p>&nbsp;</p>\n";
                    echo 
"<p><b>запрос:</b> <span style='color: #0000CC;'>$query</span></p>\n";
                    echo 
"<p>&nbsp;</p>\n";



                if (
$f mysql_fetch_array($r)) {        # Если что-то в базе нашли, то:


                        
$number mysql_num_rows($r);   # Определяем количество найденных записей

                        
$result '';

                        
$s 1;

                            do {  
# перебераем в цикле все найденные записи

                                    
$result .= "<span style='color: #0000CC;'><b>$s</b>:</span>  ";


                                            if(isset(
$f[counter])) $result .= "$f[counter] -> ";

                                            if(isset(
$f[law]))     $result .= "$f[law] -> ";

                                            if(isset(
$f[formula])) $result .= "$f[formula]";


                                    
$result .= "\n\n";

                                    
$s++;

                            } while(
$f mysql_fetch_array($r))# перебираем в цикле все найденные записи



                        
echo "<p>В базе найдено записей: $number</p>";

                        echo 
"<pre>$result</pre>";


                } else {

                        echo 
"<h3>извините, ничего не найдено</h3>";

                }

        }
}

?>


</body>
</html>


<?

function show_query_examples($query) {
global 
$script;


    echo <<<END

            <h3 style='margin-bottom: 30px;'>Введите запрос к базе</h3>


            <form action='$script' method='post' name='form'>

                <p>Запрос <input type='text' name='query' size='80' value='$query'><br>&nbsp;</p>
                <p><input type='submit' name='submit' value='Отправить'></p>

            </form>

            <hr size='1' noshade style='margin: 35px 0;'>

            <h3>Примеры запросов</h3>


            <ol>
            <li style='color: #606060; padding-bottom: 20px;'>Вывод всего содержимого базы<br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE 1'; location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE 1</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Вывод всех полей, у которых <b>counter=5</b><br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE counter=5'; location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE counter=5</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Вывод всех полей, у которых <b>counter<=5</b><br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE counter<=5'; location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE counter<=5</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Вывод всех полей, у которых <b>law ='Принцип IBM'</b><br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE law =\'Принцип IBM\''; location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE law ='Принцип IBM'</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Вывод всех полей, у которых <b>law ='Законы программирования'</b><br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE law=\'Законы программирования\''; location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE law='Законы программирования'</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Вывод всех полей, у которых <b>counter=12</b>, а также <b>law='Законы программирования'</b><br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE counter=12 &amp;&amp; law=\'Законы программирования\''; location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE counter=12 &amp;&amp; law='Законы программирования'</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Вывод только поля <b>formula</b>, у которого <b>law ='Законы программирования'</b><br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT formula FROM murphy WHERE law=\'Законы программирования\'';  location.href='#top';
                document.form.submit.focus();">SELECT formula FROM murphy WHERE law='Законы программирования'</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Вывод всех полей, удовлетворяющих заданному условию и ограниченных указанным диапазоном<br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE 1 LIMIT 5, 10'; location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE 1 LIMIT 5, 10</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Сортировка по полю 'law' (по возрастанию)<br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE 1 ORDER BY law'; location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE 1 ORDER BY law</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Сортировка по полю 'law' (по убыванию)<br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE 1 ORDER BY law DESC'; location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE 1 ORDER BY law DESC</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Сортировка по полю 'law' (по убыванию), вывод полей в заданном диапазоне<br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE 1 ORDER BY law DESC LIMIT 5, 10'; location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE 1 ORDER BY law DESC LIMIT 5, 10</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Поиск по фрагменту<br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE law LIKE \'%Закон%\'';  location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE law LIKE '%Закон%'</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Поиск по фрагменту<br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT * FROM murphy WHERE law NOT LIKE \'%Закон%\'';  location.href='#top';
                document.form.submit.focus();">SELECT * FROM murphy WHERE law NOT LIKE '%Закон%'</span></li>

            <li style='color: #606060; padding-bottom: 20px;'>Получение уникальных значений столбцов<br>
                <span class='cursor_hand' style='color: #0000CC;' onclick="form.query.value='SELECT DISTINCT law FROM murphy WHERE 1';  location.href='#top';
                document.form.submit.focus();">SELECT DISTINCT law FROM murphy WHERE 1</span></li>

            </ol>

END;


}


?>