|
Posted by Schmidty on 01/29/07 17:58
On Jan 28, 5:55 am, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> Schmidty wrote:
> > On Jan 26, 7:06 pm, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> >> Schmidty wrote:
> >>> Okay...I have another 'newbie' question;
> >>> I have a function that loads a page and the action is
> >>> $_SERVER['HTTP_SELF'];
> >>> In the form that is in a function(method?) within a class a variable
> >>> is passed back to a mysqli connection and database and updates the
> >>> database.
> >>> The problem is that when the page is reloaded it does not show the
> >>> updated information in the database with the $_SERVER['HTTP_SELF']. Why
> >>> is the page loaded with the same information? Is it cached from the
> >>> browser? Is there a way to have the functions execute before the
> >>> $_SERVER['HTTP_SELF'] action executes?
> >>> Example code ======================================
> >>> // Show info of users not updated
> >>> echo "<form action='".$_SERVER['PHP_SELF']."' method='post'><table
> >>> style=\"font: 14px solid #000000; border: 2px solid #CCC000;\">";
> >>> echo "<tr><td colspan='2' style=\"background: #C0C0C5; text-align:
> >>> center; font: 18px solid #000000;\">Credit Card
> >>> Applications</td></tr>";
> >>> echo "<tr><td colspan='2' style=\"background: #FFFFE0; text-align:
> >>> left; font: 12px solid #000000;\">New Applications In Database Needing
> >>> Approval:</td></tr>";
> >>> echo "<tr><tr><td colspan='2' style=\"border: 2px solid #000000;
> >>> width: 100%;\">";
> >>> if ($result->num_rows == 0) {echo "NO NEW APPLICATIONS<br />";}
> >>> while($row = $result->fetch_assoc()){
> >>> echo "<input type='checkbox' name='perinfo[]'
> >>> value='".$row['userID']."' >".$row['userID']." : ".$row['username']." -
> >>> ".$row['recdate']."<br />";
> >>> } // end while
> >>> echo "</td></tr><tr>";
> >>> echo "<td align=\"center\"><input style=\"font: 10px solid
> >>> #000000;\" type=\"submit\" value=\"UPDATE INFO\" name='updatedb'
> >>> /></td><td style=\"text-align: center;\"><input type=\"reset\"
> >>> style=\"font: 10px solid #000000;\" value=\"RESET CHOICES\"
> >>> /></td></tr></form></table>";
> >>> $result->free();
> >>> } // end function
> >>> public function dbConnect(){
> >>> include('dbconn.php');
> >>> $mysqli = new mysqli($dbnet, $dbuser, $dbpass, $dbname);
> >>> if (mysqli_connect_errno()){ printf("Can't connect to MySQL Server.
> >>> Errorcode: %s\n", mysqli_connect_error());
> >>> exit;
> >>> } // end if
> >>> return $this->mysqli=$mysqli;
> >>> } // end function
> >>> End Example Code ===================================================
> >>> Thanks for the help!
> >>> SchmidtySchmidty,
> >> Where are you updating the database? And where are you retrieving the
> >> values?
>
> >> PHP is server-side. ALL code is executed before the page is sent to the
> >> browser. Interaction between PHP and the browser is one-way - the PHP
> >> sends the page and terminates. There isn't any interaction between the
> >> browser and the PHP code (other than to load a new page).
>
> >> When they click on the submit button for the form, the browser requests
> >> the page identified in your FORM statement. Since it is the same page,
> >> all of the PHP code is executed again.
>
> >> But you didn't show most of your code so there's no way to determine
> >> what might be going on.
>
> >> And no, you don't need AJAX or similar for this to work. Straight PHP
> >> works great.
>
> >> --
> >> ==================
> >> Remove the "x" from my email address
> >> Jerry Stuckle
> >> JDS Computer Training Corp.
> >> jstuck...@attglobal.net
> >> ==================- Hide quoted text -- Show quoted text - > Thanks Jerry for the reply. I made a mistake in the variable
> > "$_SERVER['HTTP_SELF']" in my previous posts, it should be
> > $_SERVER['PHP_SELF'].
> > I realize that the html page is static and that the browser does not
> > communicate with the PHP script.
> >
> > When a user who updates a database the FORM in the PHP script will
> > have 'action' set to load a $_SERVER['PHP_SELF'];
> >
> > Example of 'updatedb.php'
> > =======================================================================
> > ========
> >
> > <?php
> > // updatedb.php
> > $nu = new userFunction();
> >
> > echo "<form action=\"$_SERVER['PHP_SELF']\" method='post'><input
> > type='text' name='name' /><input type='submit' name='update'
> > value='UPDATE DB' /></form>";
> >
> > if (isset($_POST['update'])){
> > $nu->updateDBFunction($_POST['name']);
> > print "DB UPDATED<br />";
> >
> > }
> >
> > ?>
> >
> > End Example
> > =======================================================================
> > ==================
> >
> > In the short example above does the script execute the function BEFORE
> > it reloads the $_SERVER['PHP_SELF'] variable?
> >
> > Schmidty
> >
> >
> >
> >
>
> (top posting fixed)
>
> Schmidty,
>
> You need to get over the thought of "reloading the variable...". The
> server receives information from the browser and sends html back to the
> browser. That's all. There is no "reload $_SERVER['PHP_SELF']" because
> it server does not reload anything.
>
> When a request for a page comes in, the web server loads the appropriate
> page code. If the page is straight HTML, the code is sent to the
> client. If the page includes script code such as PHP, the web server
> loads the appropriate interpreter and calls it to execute the code.
>
> The code is executed as it appears in the page. Output from the code is
> sent to the webserver. When the page execution is complete, the output
> is sent to the client and all resources used by that page are released.
>
> Every page request is handled independently. $_SERVER['PHP_SELF'] is
> just a string which refers to this page. You could have 'xyz.php'
> instead. It would have the same effect.
>
> In your example, the entire page is executed and sent to the browser.
> the script then terminates. When the user presses the 'SUBMIT' button,
> the form is submitted back to the the server. Since it is the same
> page, the code is executed a second time.
>
> P.S. Please don't top post.
>
> --
> ==================
> Remove the "x" from my email address
> Jerry Stuckle
> JDS Computer Training Corp.
> jstuck...@attglobal.net
> ==================
Jerry,
Thanks for your help on this. I am still learning the client/server
concepts with PHP as well as OOP so bare with me...
I understand what you have said and it makes sense. How would I update
the page with new information that is sent back from the database via
the server after clicking a 'submit' button? From what you are telling
me then, when the 'submit' button is pressed the script is re-
executed. In a function would I set the 'action' to a new page or use
the $_SERVER['PHP_SELF'] variable? Do I put an 'if' statement BEFORE I
send the page to the browser?
P. S. - I am using the Google Groups editor and it puts my replies at
the top of the page. I can put my reply at the bottom of the page if
this helps...
Navigation:
[Reply to this message]
|