--- On Sun, 11/30/08, Fred Silsbee <fredsilsbee@xxxxxxxxx> wrote: > From: Fred Silsbee <fredsilsbee@xxxxxxxxx> > Subject: global not solving my problem > To: php-db@xxxxxxxxxxxxx > Cc: "Chris" <dmagick@xxxxxxxxx>, "Jack van Zanen" <jack@xxxxxxxxxxxx> > Date: Sunday, November 30, 2008, 6:35 PM > problem: > > I have resolved all problems in the PHP program below > except one. > > Yes I know the program is in a mess but I will clean it up. > > This is a learning exercise! > > Basically there is one function per page. > > When I make a selection on a page, a function is executed. > > I need to pass the value of $rowInsert from one page to > another. > > $rowInsert is altered when I enter the program (at the > top). > > To verify the program works (outside this problem), I set > the value = 525. > > Global does not persist the value between pages(functions). > > I can't use _POST because the value of $rowInsert is > not associated with an entry slot(edit control). > > I could make an entry slot(edit control) just for this > purpose but that is not good! > > > > > > > > <?php > /* > drop sequence log_id; > create sequence log_id > increment by 1 > start with 1; > > drop table log_book_id; > > create table log_book_id ( log_id number primary key, fdate > date, actype varchar2(16), acid varchar(16), nlandings > number, nhoursnumber); > > insert into log_book_id values (logid.nextval, > TO_DATE('08/12/1973','MM/dd/YYYY'),'C150','N5787G',1,1.8); > > insert into log_book_id values (logid.nextval, > TO_DATE('08/17/1973','MM/dd/YYYY'),'C150','N5787G',3,1.5); > > insert into log_book_id values (logid.nextval, > TO_DATE('08/26/1973','MM/dd/YYYY'),'C150','N5787G',10,1.8); > > insert into log_book_id values (logid.nextval, > TO_DATE('09/01/1973','MM/dd/YYYY'),'C150','N5293S',9,1.7); > */ > > print("........................................ENTER................"); > > $rowInsert = 525; // temporary > > $db = "(DESCRIPTION = > > (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = > 1521)) > (CONNECT_DATA = > > (SERVER = DEDICATED) > > (SID = LMKIIIGDNSID) > > ) > > )"; > > if ($conn=oci_connect('landon', > 'rumprocella',$db)) > > { > > echo "Successfully connected to > Oracle.\n"; > > } > > else > > { > > $err = OCIError(); > > echo "Oracle Connect Error " . > $err['message']; > > } > > > //construct a global variable for the form profile > $fields = array("fdate", "actype", > "acid", "nlandings", > "nhours"); > /// > > > // If the submit button has been pressed > if (isset($_POST['select'])){ > displayDeleteForm(); > }elseif(isset($_POST['delete'])){ > deleteRecords(); > } elseif(isset($_POST['insert'])){ > insertRecord(); > } elseif (isset($_POST['new'])){ > displayEntryForm(); > } elseif (isset($_POST['update'])){ > showRecord(); > } else { > //default action > displayEntryForm(); > } > > //...........................................................................function > displayDeleteForm() > > function displayDeleteForm(){ > //get $fields into the function namespace > global $fields; > global $conn; > /* Create and execute query. */ > // Loop through each row, outputting the actype and name > echo <<<HTML > > Pilots Logbook entries stored in Oracle Relational > Database > under Redhat Fedora 8 Linux > > <form > action="{$_SERVER['PHP_SELF']}" > method="post"> > <table width="50%" > align="center" border="1"> > > <tr> > > <th>checked</th> > > <th>rowID</th> > > <th>fdate</th> > > <th>actype</th> > > <th>acid</th> > > <th>nlandings</th> > > <th>nhours</th> > > </tr> > > HTML; > > > //get log_book_id table information > $user = "select * from log_book_id"; > $result = oci_parse($conn, $user); > $r = oci_execute($result); > > //display log_book_id information > > $count = 0; > while ($newArray = oci_fetch_assoc($result)) { > if ($count == 0) print_r($newArray); > $count = 1; > foreach ($fields as $field){ > $fieldx = strtoupper($field); > ${$field} = $newArray[$fieldx]; > $count = $count +1; > // print($field); > // print_r($newArray[$field]); > } > $rowID = $newArray['LOG_ID']; > > //note that we do not rely on the checkbox value as > not all browsers submit it > //instead we rely on the name of the checkbox. > > echo <<<HTML > > <TR> > > <td> > > <input type="checkbox" > name="checkbox[$rowID]" > value="$rowID">Check to delete record > </td> > > <TD>$rowID</TD> > > <TD>$fdate</TD> > > <TD>$actype</TD> > > <TD>$acid</TD> > > <TD>$nlandings</TD> > > <TD>$nhours</TD> > > </TR> > > > HTML; > > } // while > echo <<<HTML > <tr> > <td colspan="7"> > <input type="submit" > name="delete" value="delete checked > items"/> > <input type="submit" > name="update" value="update checked > items"/> > <input type="submit" > name="new" value="New Log Entry" > /> > <input type="reset" > name="reset" value="Reset Form" /> > > </td> > > </tr> > > </table> > > </form> > > > > HTML; > > } //close function > > > > // > ................................................................. > function deleteRecords() > // > > > function deleteRecords() > { > > $db = "(DESCRIPTION = > (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = > 1521)) > (CONNECT_DATA = > > (SERVER = DEDICATED) > > (SID = LMKIIIGDNSID) > > ) > > )"; > > > // Loop through each log_book_id with an enabled checkbox > if (!isset($_POST['checkbox'])){ > > return true; > } > //else > > foreach($_POST['checkbox'] as $key=>$val){ > > $toDelete[] = $key; > } > //expand the array for an IN query > $where = implode(',', $toDelete); > > > if ($conn=oci_connect('landon', > 'rumprocella',$db)) > { > echo "Successfully connected to Oracle > D.\n"; > } > else > { > $err = OCIError(); > echo "Oracle Connect Error " . > $err['message']; > } > > $query = "DELETE FROM log_book_id WHERE log_id IN > ($where)"; > echo($query); > > $result = oci_parse($conn, $query); > > $r = oci_execute($result); > > // Commit transaction > > $committed = oci_commit($conn); > > // Test whether commit was successful. If error occurred, > return error message > if (!$committed) { > > $error = oci_error($conn); > > echo 'Commit failed. Oracle reports: ' . > $error['message']; > } > > // Should have one affected row > > if ((oci_num_rows($result)== 0) ) { > > echo "<p>There was a problem deleting > some of the selected > items.</p><p>".oci_error().'</p>'; > // exit(); > > } else { > > echo "<p>The selected items were > successfully deleted.</p>"; > > } > > //direct the user back to the delete form > > displayDeleteForm(); > > } //end function > > > //...........................................................................function > insertRecord() > > function insertRecord() > { > global $rowInsert; > $db = "(DESCRIPTION = > (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = > 1521)) > (CONNECT_DATA = > > (SERVER = DEDICATED) > > (SID = LMKIIIGDNSID) > > ) > > )"; > > if ($conn=oci_connect('landon', > 'rumprocella',$db)) > { > > echo "Successfully connected to Oracle.\n"; > > } > > else > > { > > $err = OCIError(); > > echo "Oracle Connect Error " . > $err['message']; > } > > // Retrieve the posted log book information. > > global $fields; > > //add some very crude validation > > foreach ($fields as $field){ > > if (empty($_POST[$field])){ > > $messages[] = "You must complete the field > $field \r\n"; > } else { > > $dFields[$field] = > mysql_real_escape_string(trim($_POST[$field])); > } > > } > > if (count($messages)>0) { > > displayEntryForm($messages, $dFields); > > exit(); > > } > > //end validation > > > > //get variables into the namespace > > extract($dFields); > > // Insert the log book information into the log book > table > print("insertRecord".$rowInsert); > > if($rowInsert) > > { > > $query = "UPDATE log_book_id set fdate > = '$fdate', actype='$actype', > acid='$acid', nlandings='$nlandings', > nhours='$nhours' where > log_id='$rowInsert'"; > } > > > else > > > { > > > $query = "INSERT INTO log_book_id > (log_id , fdate, actype, acid, nlandings, nhours) values > (logid.nextval,'$fdate','$actype','$acid','$nlandings','$nhours')"; > } > > > > $rowInsert = 0; > // echo ($query); > $result = oci_parse($conn, $query); > $r = oci_execute($result); > // Display an appropriate message > if ($r) { > echo "<p>Product successfully > inserted!</p>"; > }else { > echo "<p>There was a problem inserting > the log book!</p>"; > $error = oci_error($conn); > > echo 'Insert failed. Oracle reports: ' . > $error['message']; > > } > //direct the user back to the entry form > > // Commit transaction > $committed = oci_commit($conn); > // Test whether commit was successful. If error occurred, > return error message > if (!$committed) { > > $error = oci_error($conn); > > echo 'Commit failed. Oracle reports: ' . > $error['message']; > } > > // Should have one affected row > > if ((oci_num_rows($result)== 0) ) { > > echo "<p>There was a problem inserting > some of the selected > items.</p><p>".oci_error().'</p>'; > // exit(); > > } else { > > echo "<p>The selected items were > successfully inserted.</p>"; > > } > > displayDeleteForm(); > > } > > > > //...........................................................................function > showRecord() > > function showRecord() { > > global $fields; > global $dFields; > global $rowInsert; > // Loop through each log_book_id with an enabled checkbox > if (!isset($_POST['checkbox'])){ > > return true; > } > //else > > foreach($_POST['checkbox'] as $key=>$val){ > > $toDelete[] = $key; > } > > > $db = "(DESCRIPTION = > (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = > 1521)) > (CONNECT_DATA = > > (SERVER = DEDICATED) > > (SID = LMKIIIGDNSID) > > ) > > )"; > > if ($conn=oci_connect('landon', > 'rumprocella',$db)) > { > > echo "Successfully connected to > Oracle.\n"; > } > > else > > { > > $err = OCIError(); > > echo "Oracle Connect Error " . > $err['message']; > } > > > // errors > //get log_book_id table information > $user = "select * from log_book_id where log_id = > $toDelete[0]"; > $result = oci_parse($conn, $user); > > $r = oci_execute($result); > > > //display log_book_id information > > $count = 0; > $newArray = oci_fetch_assoc($result); > if ($count == 0) print_r($newArray); > $count = 1; > foreach ($fields as $field){ > $fieldx = strtoupper($field); > ${$field} = $newArray[$fieldx]; > $dFields[$field] = ${$field}; > } > $rowID = $newArray['LOG_ID']; > $rowInsert = $rowID; > print_r($dFields); > print ($rowInsert); > //note that we do not rely on the checkbox value as > not all browsers submit it > //instead we rely on the name of the checkbox. > > > // insert the row information in the entry form > global $fields; > //end validation > displayEntryForm(); > } > > //...........................................................................function > displayEntryForm() > function displayEntryForm($errorMessages=null, > $dFields=null){ > if (!empty($errorMessages)){ > > echo > "<ul><li>".explode('</li><li>', > $errorMessages) . "</li></ul>"; > > } > > > > global $dFields; > > //sort out field values > global $fields; > foreach ($fields as $field){ > if (isset($dFields[$field])){ > ${$field} = $dFields[$field]; > } else { > ${$field} = ''; > } > } > > echo <<<HTML > <form action="{$_SERVER['PHP_SELF']}" > method="post"> > <p> > Flight Date:<br /> > <input type="text" size="20" > maxlength="40" name="fdate" > value="$fdate" /> > </p> > <p> > Aircraft Type:<br /> > <input type="text" size="20" > maxlength="40" name="actype" > value="$actype" /> > </p> > <p> > Aircraft ID:<br /> > <input type="text" size="20" > maxlength="40" name="acid" > value="$acid" /> > </p> > <p> > Number Landings:<br /> > <input type="text" size="20" > maxlength="40" name="nlandings" > value="$nlandings" /> > </p> > <p> > Number Hours:<br /> > <input type="text" size="20" > maxlength="40" name="nhours" > value="$nhours" /> > </p> > <button type="submit" name = > "insert" value="Insert Row!" > style="color:maroon font:18pt Courier; > font-weight:bold ">Insert Row > </button> > <button type="submit" name = > "select" value="Show All!" > style="color:red font:18pt Courier; font-weight:bold > ">Show All > </button> > <button type="submit" name = > "delete" value="Delete Row!" > style="color:red font:18pt Courier; font-weight:bold > ">Delete Row! > </button> > <button type="submit" name = > "update" value="Update Row!" > style="color:red font:18pt Courier; font-weight:bold > ">Update Row! > </button> > </form> > HTML; > } //end display function > ?> problem solved...used a session: session_start(); $_SESSION['rowInsert'] = $rowInsert; .. . . . session_start(); $rowInsert = $_SESSION['rowInsert'] ; any harm in this? -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php