|
Posted by Schmidty on 01/29/07 20:29
On Jan 29, 9:58 am, "Schmidty" <schmi...@baronholding.com> wrote:
> On Jan 28, 5:55 am, Jerry Stuckle <jstuck...@attglobal.net> wrote:
>
>
>
>
>
> >Schmidtywrote:
> > > On Jan 26, 7:06 pm, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> > >>Schmidtywrote:
> > >>> 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...
Jerry I think I figured it out!!!
I put two 'if' statements to check the form and then displayed the
contents what was queried from the browser!
Here is what I did;
Example ===============================================
if (isset($_POST['approved']) and isset($_POST['approve'])){
$passapproval=$_POST['approve'];
if ($passapproval){
foreach ($passapproval as $userid){ $nu->approveApps($userid);}
} // end if
} // end if
$nu->checkApps();
End Example ============================================
This works great and it makes sense with your explanation of the pages
being 'stateless'. Thanks for your help and hope to get more help from
you in the future. :)
Schmidty
Navigation:
[Reply to this message]
|