DANFA

Сонник (Толкование снов) на PHP

Сценарий толкования снов
Значит, делаем так: создаем таблицу exegesis с тремя полями: dream_id - идентификатор определения сна, dream - слово из сна, value - значение слова (сна). Можно запросом:
CREATE TABLE IF NOT EXISTS `exegesis` (
    `dream_id` int(11) NOT NULL AUTO_INCREMENT,
    `dream` varchar(255) NOT NULL,
    `value` TEXT,
PRIMARY KEY (`dream_id`)); 

Теперь пишем форму, куда будем вписывать искомое слово для получения определения, я написал такую:
<form action="index.php" method="post">
    <input type="text" name:"dream">
    <input type="submit" name:"enter" value="Отправить">
</form> 

И сам скрипт, который будет выполнять запрос с заданным словом:
$connect = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname); # Подключаемся к БД
if (!$connect) # Если соединения нет, выводим ошибку на экран
{
    mysqli_error();
}

if (isset($_POST['enter'])) # Условие сработает только после нажатия на кнопку
{
    if (empty($_POST['dream'])) # Проверяем введено ли слово в форму
    {
        echo 'Введите слово из своего сна.';
    }
    else
    {
        $dream = trim($_POST['dream']); # Убираем пробелы перед и после слова 
        
        # Составляем запрос
        $sql = "SELECT *
            FROM exegesis
            WHERE dream = '$dream'";
        $query = mysqli_query($connect, $sql); # Выполняем запрос
        if (!$query) # Сработает при не удачи выполнения запроса
        {
            mysqli_error();
        }
        else # Если запрос выполнен удачно
        {
            $row = mysqli_fetch_assoc($query);
            if (!$row) # Если слово не найдено
            {
                echo 'Значение <strong>' . $dream . '</strong> не найдено.';
            }
            else # Если слово найдено, выводим само слово и его (сна) значение
            {
                echo 'Значение сна <strong>' . $dream . '</strong>:<br />' . $row['value'];
            }
        }
    }
} 

Вот собственно весь движок Сонника (Толкование сна). Остается лишь наполнить таблицу определениями.
На всякий случай. Форма осталась та же. Делаем так SQL:
CREATE TABLE IF NOT EXISTS `exegesis` (
    `dream_id` int(11) NOT NULL AUTO_INCREMENT,
    `dream` varchar(255) NOT NULL,
    `value` TEXT,
PRIMARY KEY (`dream_id`));

INSERT INTO `exegesis` (`dream_id`, `dream`, `value`) VALUES
(1, 'Танк', 'Сон, в котором Вы наблюдаете за танками, едущими по городским улицам, говорит о том, что Вас ждут некие трудности, причина которых будет заключаться в масштабных переменах в мире или в стране. Сон, в котором Вы застреваете, пытаясь вылезти из танка, указывает на то, что наяву Вы стали участником некой аферы и теперь не можете найти выход из сложившейся в связи с этим ситуации. Предупреждением о возможных изменах со стороны возлюбленного становится сон, в котором девушка видит его в роли танкиста.'),
(2, 'Какао', 'Видит во сне какао человек, который вынужден поддерживать дружбу даже с неприятными для него людьми, для того чтобы добиться успеха в жизни. Видимо, вы отчаялись в жизни и стремитесь воспользоваться не очень порядочными средствами, чтобы ваши мечты воплотились в жизнь. Вы мечтаете войти в доверительные отношения с одним человеком, но делаете это исключительно в корыстных целях. Какао снится не только тем, кто мечтает дослужиться до высших чинов. Может быть, вы ветреный и взбалмошный человек, которому приятно знакомиться со всеми на свете. Новые знакомые, шумные вечеринки — вот ваше любимое занятие. Скорее всего, какао приснилось перед очередной подобной встречей, которая, однако, может сказаться на вашей дальнейшей судьбе.'),
(3, 'Чай', 'Заваривать во сне чай — к наказанию за неблаговидные поступки и сожалениях о содеянном. Пить во сне чай с друзьями — к тому, что спящему надоест благополучная жизнь, у него возникнет желание получить новые ощущения. Разлитый чай снится к огорчениям, связанным с домом и семьей. Сильное желание выпить чаю снится к нежданным гостям.');

Сам скрипт немного переписал:
<?php
$connect = mysqli_connect($dbhost, $dbuser, $dbpasswd, $dbname); # Подключаемся к БД
if (!$connect) # Если соединения нет, выводим ошибку на экран
{
    mysqli_error();
}

if (isset($_GET['dream']))
{
    $dream = isset($_GET['dream']) ? $_GET['dream'] : '';
    if (!$dream)
    {
        exit('Неверный URL.');
    }
    # Составляем запрос
    $sql = "SELECT *
        FROM exegesis
        WHERE dream = '$dream'";
    $query = mysqli_query($connect, $sql); # Выполняем запрос
    if (!$query) # Сработает при не удачи выполнения запроса
    {
        mysqli_error();
    }
    else # Если запрос выполнен удачно
    {
        $row = mysqli_fetch_assoc($query);
        if (!$row) # Если слово не найдено
        {
            echo 'Значение <strong>' . $dream . '</strong> не найдено.';
        }
        else # Если слово найдено, выводим само слово и его (сна) значение
        {
            echo 'Значение сна <strong>' . $dream . '</strong>:<br />' . $row['value'];
        }
    }
}
else
{
    if (isset($_POST['enter'])) # Условие сработает только после нажатия на кнопку
    {
        if (empty($_POST['dream'])) # Проверяем введено ли слово в форму
        {
            echo 'Введите слово из своего сна.';
        }
        else
        {
            $dream = trim($_POST['dream']); # Убираем пробелы перед и после слова 
            header('Location: index.php?dream=' . $dream);
        }
    }
}

Теперь у каждого толкования есть своя страница, такого вида:
http://mysite.ru/index.php?dream=весна

Если надо такой вид адреса: http://mysite.ru/весна, то это можно сделать так: в файл .htaccess, что находится в корне сайта вставляем:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?dream=$1 [L,QSA]
Options +FollowSymlinks

В php скрипте меняем строку:
            header('Location: index.php?dream=' . $dream);

на:
            header('Location: ' . $dream);

Все готово.