|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Konstantin Maslennikov 2:5020/400 28 Oct 2000 19:02:31 To : All Subject : ПОЧЕМУ ЖЕ??? -------------------------------------------------------------------------------- Итак, имеем скрипт: ================================ HАЧАЛО =============================== #!/usr/bin/perl -wT use locale; use CGI qw/:standard/; $database="database"; $hostname=""; $user="username"; $password="password"; print header, start_html('TEST') ; sub connectToDB { use DBI; $driver = "mysql"; $dsn = "DBI:$driver:database=$database;host=$hostname"; $dbh = DBI->connect($dsn, $user, $password) or die print "Failed to connect to mysql server" .$DBI::errstr ; } sub citys { my $asth = $dbh->prepare("select * from city order by city"); $asth->execute; while ( my(@ttt) = $asth->fetchrow_array){ $citys{$ttt[0]} = $ttt[1]; } return %citys; $asth->finish; } &connectToDB; %citys = &citys; $citys{0} = "-----------------"; print start_form( -action=>'/cgi-bin/script.cgi'); print "<SELECT NAME=\"city_b\">"; @test = sort {$citys{$a} cmp $citys{$b}} keys %citys; foreach (@test) { if ($_ == 0 ) { print "<OPTION VALUE=$_ SELECTED>$citys{$_}";} else { print "<OPTION VALUE=$_>$citys{$_}";} } print "</SELECT>"; print br, submit, reset, end_form; print end_html; ================================ КОHЕЦ =============================== В базе города храняся в таком порядке: mysql> select * from city; +----+-----------+ | id | city | +----+-----------+ | 7 | Пенза | | 6 | Гродно | | 5 | Астрахань | | 4 | Саров | | 3 | Тамбов | | 2 | Воркута | | 1 | Казань | +----+-----------+ Вот что выдает если запускать его из командной строки: ================================ HАЧАЛО =============================== <HTML><HEAD><TITLE>TEST</TITLE></HEAD> <BODY> <FORM METHOD="POST" ACTION="/cgi-bin/script.cgi" ENCTYPE="application/x-www-form-urlencoded"> <SELECT NAME="city_b"> <OPTION VALUE=0 SELECTED>----------------- <OPTION VALUE=5>Астрахань <OPTION VALUE=2>Воркута <OPTION VALUE=6>Гродно <OPTION VALUE=1>Казань <OPTION VALUE=7>Пенза <OPTION VALUE=4>Саров <OPTION VALUE=3>Тамбов </SELECT> <INPUT TYPE="submit" NAME=".submit"><INPUT TYPE="reset"> </FORM></BODY></HTML> ================================ КОHЕЦ =============================== А вот что получается в броузере : ================================ HАЧАЛО =============================== <HTML><HEAD><TITLE>TEST</TITLE></HEAD> <BODY> <FORM METHOD="POST" ACTION="/cgi-bin/script.cgi" ENCTYPE="application/x-www-form-urlencoded"> <SELECT NAME="city_b"> <OPTION VALUE=0 SELECTED>----------------- <OPTION VALUE=5>Астрахань <OPTION VALUE=6>Гродно <OPTION VALUE=1>Казань <OPTION VALUE=7>Пенза <OPTION VALUE=4>Саров <OPTION VALUE=3>Тамбов <OPTION VALUE=2>Воркута </SELECT> <INPUT TYPE="submit" NAME=".submit"><INPUT TYPE="reset"> </FORM></BODY></HTML> ================================ КОHЕЦ =============================== Внимание, вопрос: ПОЧЕМУ "Воркута" уехала в конец???? Чем отличается вывод скрипта в консоль от вывода в броузер??? -- Best regards, K.Maslennikov kosmas@mail.wplus.net http://www.ksp.spb.ru З.Ы. Может, кто подскажет как проще сделать то же - отсортировать хеш, выбранный из базы, по значениям и сделать из него popup_menu? --- ifmail v.2.15dev5 * Origin: WEBPlus Ltd. (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/13431aa4f9751.html, оценка из 5, голосов 10
|