arrow

SQL למסדי נתונים של CGI פרק 3 - ממשקי

חיבור כל החלקים עם תסריט CGI מודע DBI

הכנו תסריט DBI קטן שנוכל לעבור עליו. תוכל להעתיק את זה למערכת שלך לשנות את משתני ההתקנה וזה ירוץ גם על המערכת שלך.

     # First we identify the location of 
     # the Perl interpreter. You will need 
     # to change this line to reflect the
     # location of Perl on your system.

#!c:\Perl\Perl5.00402\bin\perl.exe

     # Next we will tell Perl that we are
     # going to USE the DBI and CGI 
     # modules.
     #
     # We will use the CGI module mainly
     # to handle incoming form data.
     #
     # The CGI::CARP module has a nice
     # feature called "fatalsToBrowser"
     # that sends error messages to the
     # web browser window so that the
     # user does not get a meaningless 
     # 500 Server Error message.
    
use DBI;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

     # Setup some implementation 
     # specific variables. $dbname
     # is going to be the Data 
     # Source name that you 
     # assigned to your database in
     # the 32Bit ODBC Control 
     # Panel plus the DBI:ODBC
     # pre-tag.  I did not setup
     # any security on my database
     # since it is only for local
     # testing, so we can leave 
     # those values blank.

$dbName     = "DBI:ODBC:MyCompany";
$dbUserName = "";
$dbPassword = "";

     # We will create a new CGI 
     # object and use it to send
     # out the HTTP header and
     # to parse out the incoming 
     # form variables "requestType"
     # and "sql".  You will see 
     # where those form variables 
     # come from in just a bit.

$dataIn       = new CGI;
$dataIn->header();
$requestType  = $dataIn->param('requestType');
$sql  = $dataIn->param('sql');

     # Next we will check to see 
     # if there is a value coming
     # in from a form for the
     # variable "sql".  If there
     # is no value, then we know
     # that the user has not yet
     # seen the submission form.
     # In that case, we will send
     # them the HTML form so they
     # can actually submit a value
     # for "sql". The following 
     # screen shot shows you what
     # will be returned.
		


[guide11-pic1.gif]


if ($sql eq "")
    {
    print qq!
    <HTML>
    <HEAD>
    <TITLE>Enter 
                 SQL</TITLE>
    </HEAD>
    <BODY BGCOLOR = "#FFFFFF" 
             TEXT = "#000000">
    <FORM METHOD = "POST" 
             ACTION = "dbi_demo.cgi">
    <TABLE BORDER = "1">
    <TR>
    <TH>Enter SQL 
              Query</TH>
    <TD><INPUT TYPE = "TEXT" 
                        SIZE = "40" 
                        NAME = "sql">
    </TD>
    <TD><INPUT TYPE = "SUBMIT" 
                        NAME = "requestType" 
                        VALUE = "Submit SQL">
    </TD>
    </TR>  
    </TABLE>
    </FORM>
    </BGODY>
    </HTML>!;
    exit;
    }

     # If there was a value for $sql, we know
     # that the user has already seen the
     # HTML form and has submitted some
     # SQL for us to process.  In that case,
     # we will open a connection to the 
     # database, execute the SQL, gather
     # the result set and display it
     # to the user.  In the case of a
     # simple SELECT, we will display
     # the results in an HTML table.
     # If, on the other hand, the SQL
     # was a DELETE, MODIFY or INSERT,
     # we will let them know that the
     # operation was successful.
     #
     # Notice that you need to do a lot
     # of dereferencing with the returned
     # rows :)
		


[guide11-pic2.gif]


>else
    {
    $dbh = DBI->connect($dbName, 
                        $dbUserName, 
                        $dbPassword);
    $dataObject = $dbh->prepare($sql);
    $dataObject->execute();
    @dbRows = $dataObject->
              fetchall_arrayref();
    if ($sql =~ /^SELECT/i)
        {
        print qq!
        <HTML>
        <HEAD>
        <TITLE>SQL Statement 
                     Results</TITLE>
        </HEAD>
        <BODY BGCOLOR = "#FFFFFF" 
                 TEXT = "#000000">
        <CENTER>
        <TABLE BORDER = "1">!;
        foreach $rowReference (@dbRows)
            {
            foreach $columnReference 
                    (@$rowReference)
                {
                print qq!<TR>!;
                foreach $column 
                        (@$columnReference)
                    {
                    print qq!<TD>
                             $column
                             </TD>\n!;
                    }
                print qq!</TR>!;
                }
            }
        print qq!
        </TABLE>	
        </CENTER>
        </BODY>
        </HTML>!;
        exit;
        }
    else
        {
        print qq~Your SQL Query has been 
               processed, please hit the 
               back button and submit a 
               SELECT to see the changes!~;
        }
    }
		


זה יספיק לך להתחלה. אתה תצטרך לעצב ישום משלך לכלים מורכבים יותר. בל, כל המרכיבים לישומים אופייניים מוצגים מודגמים כאן. כדי לראות ישום/אפליקציה מורכב יותר, שבו גם כן תוכל להשתמש, שמטפל בעדכונים, הכנסות, מחיקות וכו', בצורה אלגנטית יותר תלחץ כאן.

צילום מסך של הממשק:

[guide11-pic3.gif]

arrow הקמת מסד נתונים מדגמי
תוכן עניינים


פרק 1 -> פרק 2 -> פרק 3 -> פרק 4 -> פרק 5 ->