Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
ipse
Зарегистрирован: 02.11.2007 Сообщения: 10
|
Добавлено: Пт Ноя 02, 2007 13:30 Заголовок сообщения: Онлайн базы. |
|
|
Делаем из телефонной базы 2006 онлайн версию.
Скрипт для запихивания всего этого в мускуль
Код: | #!/usr/bin/perl -w
use XBase;
use DBI;
use Text::Iconv;
my $table = new XBase "Phone.dbf" or die XBase->errstr;
$converter = Text::Iconv->new("cp1251", "utf-8");
$dbh = DBI->connect("DBI:mysql:phone:localhost:3306", "login", pass);
$dbh->do("SET NAMES utf8");
my $cursor = $table->prepare_select();
while (my @data = $cursor->fetch) {
my $name = $converter->convert("$data[1]");
my $adress = $converter->convert("$data[2]");
$name =~ s/['"\\]/`/g;
$adress =~ s/['"\\]/`/g;
$sql = "INSERT INTO
phone
(phone,name,adress)
VALUES
('$data[0]','$name','$adress')";
$dbh->do($sql);
}
$dbh->disconnect(); |
Web форма
Код: | <form><br>
<table>
<tbody>
<tr id="trname">
<td class="postblock">
<select>
<option>☎ Номер</option>
<option>❁ Имя</option>
<option>☛ Адрес</option>
</select>
</td>
<td><input></td>
<td> <input></td>
</tr>
</tbody>
</table>
</form> |
поисковик
Код: | #!/usr/bin/perl -w
use strict;
use DBI;
use CGI qw(:standard escapeHTML);
use Switch;
use utf8;
use encoding "utf8";
my $dbh = DBI->connect("DBI:mysql:phone:localhost:3306", "login", pass);
$dbh->do("SET NAMES utf8");
my ($сообщ,$id,$phone,$name,$adress,@найдено,$infa,$совпадений);
my $выбор = param('spisok');
my $слово = param('text');
if ($выбор eq 'phone') {
if ($слово =~ /^(\+7|8)?\d{10}$/ || $слово =~ /^\d{6}$/) {
$слово =~ s/(\+7|8)?(\d{10})/$2/;
} else {
$сообщ = "Неверный номер!\n";
}
}
if (!$сообщ) {
my $sql = "SELECT
id,
phone,
name,
adress
FROM
phone
WHERE
$выбор LIKE '%$слово%'";
my $sth = $dbh->prepare($sql);
$sth->execute();
$sth->bind_columns(\$id, \$phone, \$name, \$adress);
$совпадений = $sth->rows();
utf8::decode($name);
utf8::decode($adress);
if ($совпадений > 20) {
$сообщ = "Слишком много совпадений, увеличьте критерий запроса<br>Совпадений: $совпадений<br>";
} elsif ($совпадений == 0) {
$сообщ = "Ничего не найдено\n";
} else {
while ($sth->fetch()) {
$infa = "<b>Телефон:</b> $phone<br><b>Имя:</b> $name<br><b>Адрес:</b> $adress<br>";
push (@найдено, $infa);
}
}
$sth->finish;
$dbh->disconnect();
}
print "Content-type: text/html; charset=UTF-8\n\n";
print <<HTML;
<body>
<table border="1" cellpadding="2" cellspacing="2">
<tbody>
HTML
if (!$сообщ) {
foreach (@найдено) {
print "<tr><td>$_</td></tr>";
}
} else {
print "<tr><td>$сообщ</td></tr>";
}
print <<HTMLEND;
</tbody>
</table>
<br>
</body>
HTMLEND |
_________________ Люблю повеселиться, особенно посрать.
Последний раз редактировалось: ipse (Пт Ноя 02, 2007 19:53), всего редактировалось 1 раз |
|
Вернуться к началу |
|
 |
YURBAN Алкаш-модератор

Зарегистрирован: 18.03.2007 Сообщения: 563 Откуда: ОТ ТУДА БЛЯДЬ
|
Добавлено: Пт Ноя 02, 2007 17:16 Заголовок сообщения: |
|
|
А где Action для Web формы?  _________________ АААА БЛЯЯДЬЬ |
|
Вернуться к началу |
|
 |
bee Админ c яйцами

Зарегистрирован: 18.03.2007 Сообщения: 727 Откуда: Из жопы
|
Добавлено: Пт Ноя 02, 2007 17:36 Заголовок сообщения: |
|
|
Код: | my $table = new XBase "Phone.dbf" or die XBase->errstr;
$converter = Text::Iconv->new("cp1251", "utf-8"); |
Конвертнуть базу FoxPro в MySQL дело благородное
Но ANSI можно было оставить
Код: | my $sql = "SELECT
id,
phone,
name,
adress
FROM
phone
WHERE
$выбор LIKE '%$слово%'"; |
А нахуй поле id, если всего одна таблица?
И LIKE лучше задавать как '$слово%'. По середине слова херова искать, совпадений хуеву тучу выдаст! _________________ Хер, шлибы нах !!! |
|
Вернуться к началу |
|
 |
ipse
Зарегистрирован: 02.11.2007 Сообщения: 10
|
Добавлено: Пт Ноя 02, 2007 19:46 Заголовок сообщения: |
|
|
>8< Bee писал(а): |
Но ANSI можно было оставить
|
Я категорически против сотни кодировок, хватит уже всем в них путаться, пора всем переходить на юникод
Цитата: | А нахуй поле id, если всего одна таблица? | Таблица пока одна, но на будущее намечается таким-же образом заебенить базу гибдд в эту же базу.
Цитата: | И LIKE лучше задавать как '$слово%'. По середине слова херова искать, совпадений хуеву тучу выдаст! |
Наоборот мне показалось так удобней искать фамилию со словом хуй, пусть даже посередине
Кстати вот в действии http://ipse.zapto.org/phone.html Только особо не грузите, канал узкий  _________________ Люблю повеселиться, особенно посрать. |
|
Вернуться к началу |
|
 |
ipse
Зарегистрирован: 02.11.2007 Сообщения: 10
|
Добавлено: Пт Ноя 02, 2007 19:54 Заголовок сообщения: |
|
|
YURBAN писал(а): | А где Action для Web формы?  |
что-то он нихочет сюда постицо
Код: | form target="_top" id="postform" action="/cgi-bin/phone.pl" method="post" enctype="multipart/form-data"
|
_________________ Люблю повеселиться, особенно посрать. |
|
Вернуться к началу |
|
 |
bee Админ c яйцами

Зарегистрирован: 18.03.2007 Сообщения: 727 Откуда: Из жопы
|
Добавлено: Пт Ноя 02, 2007 22:43 Заголовок сообщения: |
|
|
Цитата: | http://ipse.zapto.org/phone.html |
Зачет!! Буду юзать  _________________ Хер, шлибы нах !!! |
|
Вернуться к началу |
|
 |
DoS Срёт в каментах

Зарегистрирован: 22.03.2007 Сообщения: 188 Откуда: The Null Squad
|
Добавлено: Сб Ноя 03, 2007 2:27 Заголовок сообщения: |
|
|
ipse писал(а): |
Я категорически против сотни кодировок, хватит уже всем в них путаться, пора всем переходить на юникод
|
В последние дни я так с этими кодировками заебался... iconv не работает! Все, отныне я тоже сторонник юникода! _________________ Я сказал. |
|
Вернуться к началу |
|
 |
YURBAN Алкаш-модератор

Зарегистрирован: 18.03.2007 Сообщения: 563 Откуда: ОТ ТУДА БЛЯДЬ
|
Добавлено: Вс Ноя 04, 2007 1:32 Заголовок сообщения: |
|
|
ipse писал(а): | YURBAN писал(а): | А где Action для Web формы?  |
что-то он нихочет сюда постицо
Код: | form target="_top" id="postform" action="/cgi-bin/phone.pl" method="post" enctype="multipart/form-data"
|
|
Бля а там сервер не ахуевает от такой большой базы?  _________________ АААА БЛЯЯДЬЬ |
|
Вернуться к началу |
|
 |
ipse
Зарегистрирован: 02.11.2007 Сообщения: 10
|
Добавлено: Вс Ноя 04, 2007 15:31 Заголовок сообщения: |
|
|
Конечно ахуевает, в таблице 1048770 записей. Поэтому надо еще поработать над поисковым алгоритмом. _________________ Люблю повеселиться, особенно посрать. |
|
Вернуться к началу |
|
 |
|