<!DOCTYPE html>
<html>

<!-- try-insert.php - demo need for oci_commit when making
         changes to an Oracle database using OCI8
     
     adapted from examples from Peter Johnson
     adapted by: Sharon Tuttle
     last modified: 4-24-13
-->

    <title> Demo Need for oci_commit when making changes to
	    an Oracle database using OCI8
    </title>

    <meta charset="utf-8" />
</head>

<body>
    <h1> Demo Need for oci_commit when making changes to an Oracle
         Database using OCI8 </h1>

    <?php
        // do you need to ask for username and password?

        if (! array_key_exists('username', $_POST))
        {
            print <<<PASSWORD_FORM
    <form method="post" action="$_SERVER[PHP_SELF]">
        <label> Username: 
                <input type="text" name="username" /> </label> 
                <br />

        <label> Password: 
                <input type="password" name="password" /> 
                </label> <br />
        <input type="submit" value="Log in" />
        </form>
PASSWORD_FORM;
    }

    else // you HAVE the username and password
    {
        $username = htmlspecialchars($_POST['username']);

        // do we really need to strip/sanitize this...?

        $password = $_POST['password'];

        // try to connect to Oracle student database on cedar

        $db = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)
                                   (HOST = cedar.humboldt.edu)
                                   (PORT = 1521)) 
              (CONNECT_DATA = (SID = STUDENT)))";

        // now try to log on to this database

        $conn = oci_connect($username, $password, $db);

        if ($conn == false)
        {
            echo "<p> Oops, could not log into Oracle server </p>";
            require("my-std-footer.html");
            exit;
        }

        // setting up an Oracle insert statement, and then executing it
        //     (notice the bind variable, roughly analogous to the ?
        //     in a Java PreparedStatement)

        $insert = 'insert into log_table '.
                  'values '.
                  '(:bind1, sysdate)';                  

        $ins_stmt = oci_parse($conn, $insert);

        // here's how you set the bind variable

        oci_bind_by_name($ins_stmt, ":bind1", $username, 15);

        $num_inserted = oci_execute($ins_stmt, OCI_DEFAULT);

        print "<h3>inserted: ".$num_inserted." rows?</h3>\n";

        //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        // commit the change! MAY need this to SEE the change!
	//     (comment this out to check...)
    
        oci_commit($conn);

        // close statement and connection...

        oci_free_statement($ins_stmt);
        oci_close($conn);
    }

    require("my-std-footer.html");
?>