powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Perl и Mysql выборка и нескольких таблиц.
17 сообщений из 17, страница 1 из 1
Perl и Mysql выборка и нескольких таблиц.
    #39856798
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Я новичок, но тоже умею просить помощи прошу о помощи. Не пинайте не специалиста, попробую описать проблему, как я её понимаю. Есть старый сайт на перл, который из админки генерирует кучу разных нтм страниц используя БД. В базе данных имеются таблицы. Наверное сейчас я должен указать те, которые принимают участие в описываемой мною проблеме. Это таблица "girls" (15 ячеек)
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39856800
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
таблица "girl_addedinfo" (9 ячеек)
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39856801
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
таблица "photo" (8 ячеек)
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39856802
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Движек сайта" файл cgi-bin/generationprocess.cgi генерируя htm страницы, обращается к БД. Он создает страницы пользователя. Например таблица "girl" создает изначальную персональную страничку пользователей-дам, где имеются ID (шестизначный номер) - это уникальное имя в системе, к которому привязываются дальнейшие данные. Страничка пользователя выглядит как /bla-bla-bla/123456.htm
Есть возможность добавлять данные о пользователе.
Добавленые данные о даме, хранятся в таблице "girl_addedinfo" там её уникальный номер (тотже шестизнак) называется "GirlID". В этой таблице "girl_addedinfo" имеется поле "Info Type" куда вводится тип новой информации - то ли это имя, то ли это новый емайл, то ли это новая фотка. В поле "InfoValue" прописывается значение этой новой информации - "Наташа Иванова", или "novuy@email.com", или "ширина:высота" добавленой фотки. Эта новая добавленая информация имеет свой уникальный определитель записи (не знаю как это правильно называется) - "ID" (состоящий из 4 цифр) . То есть создается связка пользователь-добавленаяинфа 123456_1234, которая отвечает за то, что при генерации странички этого пользователя, вновь добавленная информация отображается именно в его профиле.
В таблице "photo" персональный номер (тот, шестизначный) называется уже "P_Girl" (не знаю почему в разных таблицах названия разные, возможно так разработчик сделал чтоб не запутаться). А уникальный определитель фотки - "P_ID" (4 цифры), помимо этого есть ещё поле "P_Number" (цифры от 1 до 4 тк у дамы может быть до 4 её фоток).
В итоге для каждой дамы сосдается связка 123456_1234_1, 123456_1234_2 и тд. для изначально (при регистрации) приложеных фоток, но путь к её фоткам на странице её профиля после генерации файлом файл cgi-bin/generationprocess.cgi имеет вид <img class='imgsc' src='/photo/thumb/girl_123456_1_1.jpg, ../girl_123456_2_1.jpg, ../girl_123456_3_1.jpg, ../girl_123456_4_1.jpg. и связка 123456_1234 для позднее добавленых фоток, при этом пути для этих позднее добавленых фоток на страничке профиля несколько иные - /addedgirl_123456_1234_1.jpg, /addedgirl_123456_1235_1.jpg, /addedgirl_123456_1236_1.jpg и тд.
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39856803
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно о чем прошу. Помимо персональных страничек профилей (дам), cgi-bin/generationprocess.cgi генерирует html страницу - галерею (/users-by-photo.html), на которой представлены все имеющиеся фотки всех дам по порядку. Но выводятся только фотки, которые добавлялись при регистрации. Я хочу чтобы выводились и фотки добавленые позже.
Вот код из файла:

open (TEMPLATE,"$PathToTemplates/check_by_photo.htm") || RaiseError ("Can't open template file $PathToTemplates/check_by_photo.htm\n");
read (TEMPLATE,$original,32768);
close (TEMPLATE);
$sth = $dbh->prepare("select count(*) from photo");
$sth->execute or die;
@row = $sth->fetchrow_array;
$maxz=$row[0];
$sth = $dbh->prepare("select P_Girl, P_Number, P_X, P_Y, name from photo left join girls on photo.P_Girl = girls.ID");
$sth->execute or die;
$n=1;
$nmax= int($maxz/60-0.001)+1;
my $imgpatch;
my $zcur=0;
my $z=0;
while ((@row = $sth->fetchrow_array))
{
if ($zcur==0)
{
if ($n==1)
{
open (FILE,">$PathToWWW/users-by-photo.htm") || RaiseError ("Can't open file $PathToWWW/users-by-photo.htm\n");
}
else
{
close (FILE);
open (FILE,">$PathToWWW/users-by-photo/".$n.".htm") || RaiseError ("Can't open file $PathToWWW/users-by-photo/".$n.".htm\n");
}
$insertion='';
$resultation=$original;
}
$p_girl=$row[0];
$p_number=$row[1];
$girlName = $row[4];
$insertion.= "<td><a title='$girlName' href='/girl-users/".$p_girl.".htm'><img class='imgsc' src='/photo/thumb/girl_".$p_girl."_".$p_number."_1.jpg' width='200' height='300' alt='$girlName`s photo'></a></td>\n";
$insertion.= "\n";
if ($zcur==7 || $zcur==15 || $zcur==23 || $zcur== 31 )
{
$insertion.= "</tr><tr>";
$insertion.= "\n";
}
$z++;
$zcur++;
if ($z==$maxz) {$zcur=60;}
if ($zcur==60)
{
$resultation=~ s/__FOTOS__/$insertion/sg;
$insertion="Displaying <b>".($z-$zcur+1)."</b> to <b>".$z."</b> (of <b>".$maxz."</b> new additions)";
$resultation=~ s/__TOTALCOUNT__/$insertion/sg;
$insertion="";
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39856804
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я попытался скопировать из этого же файла код, который добавляет вновь добавленые фотки на персональную страничку дамы. Вот из этой части:
#ADDED IMG
$sth2 = $dbh->prepare("select ID, InfoValue from girl_addedinfo where IsApproved = 1 and GirlID = $id and InfoType = 'Photo'");
$sth2->execute or die;
$insertion='';
while ((@row2 = $sth2->fetchrow_array))
{
$addedInfoID = $row2[0];
$infoValue = $row2[1];
local(@size) = split (/:/,$infoValue);
$picX = @size[0];
$picY = @size[1];
$insertion.="<img src='/photo/added/girl_".$id."_$addedInfoID"."_1.jpg' width='$picX' height='$picY' alt='$name`s added girl photo' border='0'>";
$insertion.="\n";
}
$resultation=~ s/__addedphotos__/$insertion/sg;
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39856805
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В результате у меня вышло:

open (TEMPLATE,"$PathToTemplates/check_by_photo.htm") || RaiseError ("Can't open template file $PathToTemplates/check_by_photo.htm\n");
read (TEMPLATE,$original,32768);
close (TEMPLATE);
$sth = $dbh->prepare("select count(*) from photo");
$sth->execute or die;
@row = $sth->fetchrow_array;
$maxz=$row[0];
$sth = $dbh->prepare("select P_Girl, P_Number, P_X, P_Y, name from photo left join girls on photo.P_Girl = girls.ID");
$sth->execute or die;

$sth2 = $dbh->prepare("select ID, InfoValue from girl_addedinfo where IsApproved = 1 and GirlID = $id and InfoType = 'Photo'");
$sth2->execute or die;

$n=1;
$nmax= int($maxz/60-0.001)+1;
my $imgpatch;
my $zcur=0;
my $z=0;
while ((@row = $sth->fetchrow_array))
{
if ($zcur==0)
{
if ($n==1)
{
open (FILE,">$PathToWWW/users-by-photo.htm") || RaiseError ("Can't open file $PathToWWW/users-by-photo.htm\n");
}
else
{
close (FILE);
open (FILE,">$PathToWWW/users-by-photo/".$n.".htm") || RaiseError ("Can't open file $PathToWWW/users-by-photo/".$n.".htm\n");
}
$insertion='';
$resultation=$original;
}
$p_girl=$row[0];
$p_number=$row[1];
$girlName = $row[4];

$addedInfoID = $row2[0];
$infoValue = $row2[1];
local(@size) = split (/:/,$infoValue);
$picX = @size[0];
$picY = @size[1];

$insertion.= "<td><a title='$girlName' href='/girl-users/".$p_girl.".htm'><img class='imgsc' src='/photo/thumb/girl_".$p_girl."_".$p_number."_1.jpg' width='200' height='300' alt='$girlName`s photo'> <img src='/photo/added/girl_".$id."_$addedInfoID"."_1.jpg' width='$picX' height='$picY' alt='$name`s added girl photo' border='0'> </a></td>\n";
$insertion.= "\n";
if ($zcur==7 || $zcur==15 || $zcur==23 || $zcur== 31 )
{
$insertion.= "</tr><tr>";
$insertion.= "\n";
}
$z++;
$zcur++;
if ($z==$maxz) {$zcur=60;}
if ($zcur==60)
{
$resultation=~ s/__FOTOS__/$insertion/sg;
$insertion="Displaying <b>".($z-$zcur+1)."</b> to <b>".$z."</b> (of <b>".$maxz."</b> new additions)";
$resultation=~ s/__TOTALCOUNT__/$insertion/sg;
$insertion="";
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39856807
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но это приводит к тому, что на страничке всех имеющихся фоток (изначальных и добавленных) в адресе добавленных фоток уникальный 4значный код не отображается. Вместо него стоит пропуск. Пропуски также в свойствах (высота, ширина) добавленных позднее фоток.
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39856815
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И почему-то (на картинке видно) к основной фотке профиля добавляется добавленная позднее фотка совсем другой дамы. Я подозреваю, что мне надо объединить инфу из разных таблиц методом join или split, но как такое делать, я не знаю. Простите ещё раз, если я использовал не верные термины (я вообще то врач на пенсии с забавным хобби, и сейчас допиливаю древний сайт, с которым то и связываться никто не хочет). Возможно кто-нибудь захочет помочь.
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39856842
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TL;DR

Это - явно во фриланс.
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39856957
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простите новичка.
А что означает
автор TL;DR
Это - явно во фриланс.
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39857016
bdmalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beceЯ хочу чтобы выводились и фотки добавленые позже...

Если я вас правильно понял, то вам надо заменить вот этот запрос:

select P_Girl, P_Number, P_X, P_Y, name from photo left join girls on photo.P_Girl = girls.ID

На запрос, который выводит нужную вам информацию...
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39857157
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я подозреваю, что мне надо как-то (как?) скомпоновать эти три таблицы, для того, чтоб из первой и третьей на страничку "все имеющиеся изображения" выводились первичные фотки (вида 123456_1_1.jpg), а из первой и второй добавлялись (если были добавления пользователем новых фоток) новые вида 123456_1234_1.jpg
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39857454
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bece,
а почему денег-то не хочешь заплатить ?
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39857547
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне казалось эта ветка создавалась способными помочь в каком-либо вопросе. Каким образом оценить (оплатить) тут появление строчки например вида:
$sth3 = $dbh->prepare("select ID, InfoValue from girl_addedinfo where IsApproved = 1 and GirlID = $id and InfoType = 'Photo' join Name
from girl");
$p_girl=$row3[0];
$p_number=$row3[1];
$girlName = $row3[2];
$ID=$row3[3];
$addedInfoID = $row3[4];

Это ведь не какая-то работа. Способен помочь-отвечаешь. Жлоб-проходишь мимо. Всё просто.
Или вы тут все друг дружке платите за каждый ответ (надпись)?
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39857656
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beceЭто ведь не какая-то работа.


"Вот вы поете, играете, а работаете вы где ?" ( записка из зала Андрею Макаревичу )
...
Рейтинг: 0 / 0
Perl и Mysql выборка и нескольких таблиц.
    #39858125
bece
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имелось в виду работа, как процесс, который продолжается какое-то время.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Perl и Mysql выборка и нескольких таблиц.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]