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

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Местный бот
Сообщения: 153

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

Сообщение Местный бот » Пт апр 10, 2015 1:41 am

Доброй ночи!
В названии темы вся суть вопроса.
Как такое реализовать?

P. S. Уже не удобно о чем-то спрашивать, но ни чего не могу с собой поделать, голова полна вопросов.

Спасибо.
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';
Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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

Сообщение Slash » Пт апр 10, 2015 3:09 pm

Значит, делаем так: создаем таблицу exegesis с тремя полями: dream_id - идентификатор определения сна, dream - слово из сна, value - значение слова (сна). Можно запросом:

Код: Выделить всё

CREATE TABLE IF NOT EXISTS `exegesis` (
    `
dream_idint(11NOT NULL AUTO_INCREMENT,
    `
dreamvarchar(255NOT NULL,
    `
valueTEXT,
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'];
            }
        }
    }

Вот собственно весь движок Сонника (Толкование сна). Остается лишь наполнить таблицу определениями.
Местный бот писал(а):Уже не удобно о чем-то спрашивать, но ни чего не могу с собой поделать, голова полна вопросов.

На то он и форум. Задавайте свои вопросы, будем пытаться решить!
Аватара пользователя
Местный бот
Сообщения: 153

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

Сообщение Местный бот » Пт июн 05, 2015 7:18 am

Slash, код, что ты написал просто супер. Но есть меленький недостаток, все толкования снов появляются на одной странице, по одному адресу. И получается, что ботам не чего индексировать. Хотелось бы, что бы для каждого толкования была своя страница, свой адрес. Вот например так:

Код: Выделить всё

http://mysite.ru/весна

Слово весна в адресе это и есть то слово, которое надо растолковать.
Можно так?
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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

Сообщение Slash » Ср июн 10, 2015 10:59 am

В общем на скорую руку :oops: ... Форма осталась та же. Делаем так (Толкования для примера взяты с http://sonnic.ru/) 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/весна, то это можно сделать, как описано тут: Re: .htaccess. В общем для изменения URL делаем так: в файл .htaccess вставляем:

Код: Выделить всё

RewriteEngine on
RewriteCond 
%{REQUEST_FILENAME} !-f
RewriteCond 
%{REQUEST_FILENAME} !-d
RewriteRule 
^(.*)$ index.php?dream=$[L,QSA]
Options +FollowSymlinks

В php скрипте меняем строку:

Код: Выделить всё

            header('Location: index.php?dream=' . $dream);

на:

Код: Выделить всё

            header('Location: ' . $dream);

Все готово. Но ботам все ровно надо показать эти страницы, например прописать ссылки для каждой странице или сделать карту сайта (SiteMap.xml). Как сделать генератор sitemap я рассказывал тут: Генератор карты сайта (SiteMap.xml) на PHP
Аватара пользователя
Местный бот
Сообщения: 153

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

Сообщение Местный бот » Вс июн 14, 2015 1:47 pm

Спасибо, код рабочий!
Slash писал(а):прописать ссылки для каждой страницы

А как сделать, что бы ссылка добавлялась автоматом при каждом добавленном толковании?
И куда их лучше добавлять, на какую страницу?
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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

Сообщение Slash » Сб июн 20, 2015 6:43 am

Местный бот писал(а):А как сделать, что бы ссылка добавлялась автоматом при каждом добавленном толковании?

Я бы добавил еще одно поле в таблицу exegesis, где будет храниться первая буква слова, типа теги из одной буквы. На главной странице вывел бы список ссылок из букв - А, Б, В, Г, Д, и так далее, получился блок толкования снов по начальным буквам. Перейдя по одной из ссылок, скажем В, выводил бы через цикл все слова на букву В (выборка по тегу), тоже ссылками, но уже на толкование сна. Выбираем приснившийся предмет и переходим на страницу, например: http://mysite.ru/весна.

Этих ссылок будет достаточно для ПС.
alexsajan
Сообщения: 4

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

Сообщение alexsajan » Сб июн 20, 2015 7:03 pm

Здравствуйте. Подскажите как все это собрать, чтоб работало. Текст на стр. вставил-окно поиска выводит. С PHP не понятно, имя файла, куда его поместить. И форма наполнения БД значениями?
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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

Сообщение Slash » Сб июн 20, 2015 8:01 pm

alexsajan писал(а):чтоб работало

Оно все работает, проверял работу, когда писал данный скрипт. Проверил еще раз - работает.
У Вас выходят какие то ошибки? Какие? (Как включить текст ошибок: Поиск ошибок в PHP)
alexsajan писал(а):С PHP не понятно, имя файла, куда его поместить.

Имя файла можете дать любое, какое вздумается. Только не забудьте заменить в HTML форме имя файла:

Код: Выделить всё

<form action="index.php" method="post"

с index.php на то, которое будите использовать.
Поместить тоже можно куда удобнее Вам.
alexsajan писал(а):И форма наполнения БД значениями?

Вот пример, как это сделать: Добавление данных в Базу Данных через форму если не подходит, напишем новую.
alexsajan
Сообщения: 4

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

Сообщение alexsajan » Сб июн 20, 2015 8:58 pm

Slash писал(а):У Вас выходят какие то ошибки?

Выдает ошибку 404
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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

Сообщение Slash » Сб июн 20, 2015 9:54 pm

alexsajan писал(а):Выдает ошибку 404

Не найдена страница?
Я не могу воспроизвести ошибку, у меня все работает, как положено.

Расскажите по порядку, как делаете и на чем - хостинг/локальный сервер?
alexsajan
Сообщения: 4

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

Сообщение alexsajan » Вс июн 21, 2015 10:11 am

Slash писал(а):Расскажите по порядку, как делаете и на чем - хостинг/локальный сервер?

Хостинг. Создал стр. Сонник вставил код. Создал файл exegesis.sql добавил в БД сайта, создал файл sonnik.php положил в корень сайта, изменил index.php на sonnik.php. Я не спец, сайтами начал заниматься в январе, поэтому делаю ошибки. Сайт на wordpress 4.2
Аватара пользователя
Местный бот
Сообщения: 153

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

Сообщение Местный бот » Вс июн 21, 2015 1:44 pm

У меня тоже всё работает, только с алфавитом небольшая запарка, но с этим разберусь позже.
Ошибку 404 ни разу не получал, вообще эта ошибка означает, что страница не найдена, адрес правильно вводишь? Когда ошибку получаешь, сразу как переходишь на станицу толкования или когда делаешь какое-то действие? Какое? Колись давай.
В файле sonnik.php кроме кода толкование сна еще, что-то есть? Вообще выложи свой код сюда, весь sonnik.php, что-то ты не договариваешь.
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';
alexsajan
Сообщения: 4

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

Сообщение alexsajan » Вс июн 21, 2015 2:35 pm

Ошибку 404 выдает после ввода сна и нажатия на кнопку поиска. Код sonnik.php скопирован выше после "И сам скрипт, который будет выполнять запрос с заданным словом:" Правда Бд пустая, как наполнять так и не понял, короче забил, буду заказывать сонник за деньги.
Аватара пользователя
Местный бот
Сообщения: 153

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

Сообщение Местный бот » Вс июн 21, 2015 3:38 pm

Всё что тебе надо, есть в этой теме, всё разжаловано. Если выдаёт ошибку 404 после нажатой кнопки, значит смотри куда тебе отправила форма, скорее всего неправильно написал адрес в самой форме.
alexsajan писал(а):Правда Бд пустая

Так а чего тогда хотел получить? Её наполнять надо.
alexsajan писал(а):как наполнять так и не понял

В этом сообщении: Re: Сонник (Толкование снов) на PHP написан готовый запрос с уже тремя снами, посмотри как пишется запрос и повторяй его. Создаешь таблицу и выполняешь запросы, как то так:

Код: Выделить всё

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

Только меняй сами значения полей: dream_id, dream, value в скобках, после VALUES. Если тебя такое напрягает, то тебе уже и ссылку на пример дали, как написать форму для отправки данных в базу - Добавление данных в Базу Данных через форму
Что ещё подсказать?
<php
// Понравилось? Жми большой палец вверх.
// Местный бот 2014 - 2016 ©

echo 'Большой Привет от Местного бота!';

Вернуться в «PHP»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость