Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с подключением к БД, Немогу подключиться к БД 
:(
    Опции темы
dooker
Дата 4.12.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Помогите пожалуйста подключится в БД MySQL. На домашнем компе все работает. Скрипт добавления и скрипт отображения новостей+подпрограмма подключения к БД+еще несколько подпрограмм отображения html. Заранее извиняюсь за объем. При выполнении add.pl просто отображается пустой экран.

Скрипт добавления add.pl
Цитата

#!usr/bin/perl


# Вывод поля заголовка о типе содержимого
print "Content-type: text/html\n\n";


# Подключаемые модули
use DBI;
require '../_dbconf.pl';
require '../_stdlib.pl';


# Вызов подпрограммы формирования начального блока HTML-кода
&start;


# Вызов подпрограммы получения и разбора пользовательского запроса, переданного методом POST
&recvquery_post;


# Добавление информации в базу данных и вывод отчета
# в случае, если получены все необходимые сведения от пользователя

if(($userdata{'title'} ne '') && ($userdata{'text'} ne ''))
{
  # Преобразование пользовательских данных перед их вставкой в таблицу базы данных
  $userdata{'title'} = html2txt($userdata{'title'});
  $userdata{'text'} = html2txt($userdata{'text'});
  $userdata{'text'} =~ s/\r//g;

  # Вызов подпрограммы подключения к базе данных
  &db_connect;

  # Выполнение запроса на добавление
  $dbh->do("INSERT INTO $tbl_news VALUES (DEFAULT, '$userdata{'title'}', '$userdata{'text'}', NOW())");

  # Отключение от базы данных
  $dbh->disconnect();

  # Вывод информационного сообщения
  print "<p style=\"color: #090\">Новость добавлена!</p>\n";

  # Вызов подпрограммы формирования конечного блока HTML-кода и завершения работы
  &stop;
}


# Проверка правильности заполнения формы
if(($userdata{'title'} ne '') || ($userdata{'text'} ne ''))
{
  print "<p><span style=\"color: #c00\">Ошибка!</span> Все поля формы должны быть заполнены. Новость не добавлена. Попробуйте еще раз.</p>\n";
}


# Преобразование пользовательских данных для их подстановки в поля формы
$userdata{'title'} = html2txt($userdata{'title'});
$userdata{'text'} = html2txt($userdata{'text'});
$userdata{'text'} =~ s/\r//g;


# Вывод формы добавления данных
print "<h2>Форма добавления данных</h2>\n";
print "<form action=\"add.pl\" method=\"post\">\n";
print "<p>Заголовок новости:<br /><input type=\"text\" name=\"title\" size=\"50\" value=\"$userdata{'title'}\" maxlength=\"200\" /></p>\n";
print "<p>Содержание новости:<br /><textarea name=\"text\" rows=\"15\" cols=\"60\">$userdata{'text'}</textarea></p>\n";
print "<p><input type=\"submit\" value=\"Добавить\" /> <input type=\"reset\" value=\"Очистить поля\" /></p>\n";
print "</form>\n";

 
# Вызов подпрограммы формирования конечного блока HTML-кода и завершения работы
&stop;


Подпрограмма подключения к БД

Цитата

# Общие установки базы данных
$db_name = 'user_news';           # Имя базы данных
$db_host = 'localhost';      # Имя хоста сервера баз данных
$db_port = '3306';           # Порт
$db_user = 'user_admin';           # Имя пользователя
$db_passwd = '1111';             # Пароль


# Параметры, связанные с кодировкой клиента
$client_charset = 'cp1251';  # Название кодировки клиента
$set_charset = 'yes';        # Чтобы использовать вышеуказанную кодировку,
                             # этот параметр должен принять значение 'yes'.

# Таблицы базы данных
$tbl_news = 'news';          # Имя единственной таблицы данных


# Столбцы таблицы $tbl_news
$fld_news_id = 'id';         # Суррогатный первичный ключ
$fld_news_title = 'title';   # Заголовок новости
$fld_news_text = 'text';     # Текст новости
$fld_news_date = 'date';     # Дата и время публикации новости


# Подпрограмма подключения к базе данных
sub db_connect
{
  $dbh = DBI->connect("DBI:mysql:$db_name:$db_host:$db_port", $db_user, $db_passwd);

  # Запрос на установку кодировки клиента
  $dbh->do("SET CHARACTER SET $client_charset") if($set_charset eq 'yes');
}


Подпрограмма отображения

Цитата

!#usr/bin/perl


# Вывод поля заголовка о типе содержимого
print "Content-type: text/html\n\n";


# Подключаемые модули
use DBI;
require '_dbconf.pl';
require '_stdlib.pl';


# Вызов подпрограммы подключения к базе данных
&db_connect;


# Подсчет записей в таблице новостей
$sth = $dbh->prepare("SELECT count(*) FROM $tbl_news");
$sth->execute();
$count = $sth->fetchrow_arrayref()->[0];
$sth->finish();


# Отключение от базы данных и завершение работы скрипта в отсутствие новостей
if($count < 1)
{
  $dbh->disconnect();
  print "<p>Новостей нет.</p>\n";
  exit(0);
}


# Выборка новостей из таблицы

$sth = $dbh->prepare("SELECT $fld_news_title, $fld_news_text, $fld_news_date FROM $tbl_news ORDER BY $fld_news_date DESC");
$sth->execute();

# Инициализация строки вывода данных
$output = '';

while($row = $sth->fetchrow_arrayref())
{
  $title = $row->[0];
  $text = $row->[1];
  $date = $row->[2];

  # Преобразование данных, полученных из базы, для отображения на веб-странице
  $title = txt2html($title);
  $text = txt2html($text);
  $text = '<p>' . $text if($text) !~ /^<p>/;
  $text .= '</p>' if($text) !~ /<\/p>$/;
  $date = russian_date($date);

  # Формирование строки вывода данных
  $output .= "<h3>$title</h3>\n$text\n<p style=\"text-align: right; font-size: 80%; font-style: italic\">$date</p>\n";
}

$sth->finish();


# Отключение от базы данных
$dbh->disconnect();


# Вывод данных
print $output;


# Завершение работы
exit(0);

PM MAIL   Вверх
Paul56
Дата 4.12.2009, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 19.9.2008
Где: Екатеринбург

Репутация: нет
Всего: нет



Это код из книжки Ломова, лучше, пробегитесь по форуму есть более интересные решения.
PM ICQ   Вверх
dooker
Дата 4.12.2009, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Не можете ли дать ссылочку? А то пробежав ничего не нашел.
PM MAIL   Вверх
Paul56
Дата 4.12.2009, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 19.9.2008
Где: Екатеринбург

Репутация: нет
Всего: нет



Задача то какая, просто к БД подключиться или что?
дайте код ошибки.
PM ICQ   Вверх
dooker
Дата 5.12.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.12.2009

Репутация: нет
Всего: нет



Все понял в чем было дело. оказываеться мой виртуальный хостинг не поддерживает модуль DBI:mysql, сказали мол берите vps  smile  
А вообще задача в организации системы отображения\добавления новостей (акций..)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0422 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.