|
Posted by Jerry Stuckle on 01/24/07 17:17
Schmidty wrote:
> On Jan 24, 8:23 am, "Schmidty" <schmi...@baronholding.com> wrote:
>> On Jan 24, 1:26 am, Erwin Moller
>>
>>
>>
>>
>>
>> <since_humans_read_this_I_am_spammed_too_m...@spamyourself.com> wrote:
>>> Schmidty wrote:
>>>> So if I do a $_SERVER['PHP_SELF'] in a function within a class that
>>>> will end the execution of that class and restart the same script? Do I
>>>> need to do all processing in a script before I display a page that will
>>>> have a $_SERVER['PHP_SELF'] action? Thanks for the help...
>>>> SchmidtyHi,
>>> Please don't toppost. It destroys the order of the conversation.
>>> $_SERVER['PHP_SELF'] is just a string that contains the script that is being
>>> executed.
>>> I do not understand what 'doing a $_SERVER['PHP_SELF'] in a function' means.
>>> But it will most probably NOT terminated the execution of the script.
>>> exit(); does.
>>> You must clearly see the difference between the server and the client
>>> (browser).
>>> Your script produces a form that will be send back to the client (=browser).
>>> Then your script ends.
>>> The form action in your example posts back to the same script (because you
>>> used the target for the action $_SERVER['PHP_SELF']), so if anybody presses
>>> submit, that form will be posted, and hence the same script will be
>>> executed as before.
>>> But the server or PHP couldn't care less, and thinks of it as just another
>>> call to that script.
>>> http-protocol is stateless, this means that NO lasting connection is build
>>> between the client and the server. To overcome this you must use sessions.
>>> And as Jerry said: connections to a database are NOT fit to store in a
>>> session because PHP destroys all existing connections when the script ends.
>>> So you'll have to rebuild your connection each invocation of a script that
>>> needs a database.
>>> Hope this helps.
>>> Regards,
>>> Erwin Moller
>>>> On Jan 23, 4:54 pm, Jerry Stuckle <jstuck...@attglobal.net> wrote:
>>>>> Schmidty wrote:
>>>>>> If you do a page reload with $_SERVER['PHP_SELF'] will your program
>>>>>> lose a mysqli connection upon the reload of the page? Would this code
>>>>>> work? I need to know how to carry over a connection between methods as
>>>>>> I am new to OOP? Thanks...
>>>>>> Example; ========================================
>>>>>> <?php
>>>>>> // webpage
>>>>>> $newsignon = new newuser();
>>>>>> logon();
>>>>>> if (isset($_POST['submit'])){
>>>>>> $newsignon = query("SELECT name, password FROM
>>>>>> database");
>>>>>> }
>>>>>> ?>
>>>>>> <?php
>>>>>> // class newuser
>>>>>> class newuser {
>>>>>> public $name;
>>>>>> private $passwd;
>>>>>> private $mysqli;
>>>>>> function __construct(){
>>>>>> 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;
>>>>>> }
>>>>>> $this->mysqli = $mysqli; // is this right?
>>>>>> } //end constructor
>>>>>> function query($query){
>>>>>> if ($result = $this->mysqli->real_query($query)){
>>>>>> $result = $this->mysqli->store_result();
>>>>>> if($this->mysqli->error) { echo "ERROR with mysqli stored
>>>>>> procedure";}
>>>>>> } // end if
>>>>>> } // end function
>>>>>> function logon(){
>>>>>> echo "<form action='".$_POST['PHP_SELF']."' method='post' >";
>>>>>> // Would this work?
>>>>>> echo "<input type='text' name='user' /><br /><input
>>>>>> type='password' name='passwd' />";
>>>>>> echo "<input type='submit' value='submit' />";
>>>>>> } // end function
>>>>>> } //end classSchmidty,
>>>>> As I explained in comp.database.mysql, you can't. Once a page's
>>>>> processing is completed, all connections (and objects) are released.
>>>>> You can keep information like user ids, etc. in the $_SESSION variable,
>>>>> but not the connection. Even if you could keep the connection info in
>>>>> there, the connection itself will be closed.
>>>>> Each page is it's own little program. Any external resources opened by
>>>>> it are closed at the end of the page processing.
>>>>> --
>>>>> ==================
>>>>> Remove the "x" from my email address
>>>>> Jerry Stuckle
>>>>> JDS Computer Training Corp.
>>>>> jstuck...@attglobal.net
>>>>> ==================- Hide quoted text -- Show quoted text -Thanks Erwin
>> The Google Groups editor places your reponse at the top when making a
>> reply. I went ahead posted at the bottom for you...
>>
>> I understand that HTTP is stateless and I have been using sessions
>> variables and understand that you can't carry a database connection
>> through either one. I was confused on what happens with an
>> $_SERVER['HTTP_SELF'] in a script. What I meant by "doing a
>> $_SERVER['PHP_SELF'] in a function" is having a page echoed in a
>> function and having the 'action' of that page execute a
>> $_SERVER['HTTP_SELF']. Does it end a mysqli connection even though you
>> have not exited the script? Your explanation that $_SERVER['PHP_SELF']
>> is just a string that contains the script that is being executed makes
>> sense. I wasn't sure if the connection was being terminated by the
>> $_SERVER['HTTP_SELF'] variable. Thanks for the help in understanding
>> this. :)
>>
>> Schmidty- Hide quoted text -- Show quoted text -
>
> Why is this not working? I keep getting this error;
> Fatal error: Using $this when not in object context in
> c:\Inetpub\glendale\network\admin.class.php on line 68
>
> Here is the code class code;
> ================================================================
>
> <?php
>
> // admin.class.php
>
> class admin{
> public $file_path;
> public $user;
> private $pass;
> public $mysqli;
>
> function __construct($user, $pass){
> $this->user = $user;
> $this->pass = $pass;
> $this->dbConnect();
>
> }
>
> function showNewInfo(){
>
> $query1 = "SELECT userID, fname, minit, lname, address, city, state,
> zip, phone, useremail, ctype, cnumb, exp, recdate FROM personalinfo
> WHERE checked = FALSE";
>
> if ($result = $this->mysqli->real_query($query1)){
> $result = $this->mysqli->store_result();
> if($this->mysqli->error) { echo "ERROR with mysqli stored procedure";}
> } // end if
>
> // 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: 16px solid #000000;\">Credit Card
> Applications</td></tr>";
> echo "<tr><td colspan='2' style=\"background: #FFFFE0; text-align:
> left; font: 11px solid #000000;\">Current info in database:</td></tr>";
> echo "<tr><tr><td colspan='2' style=\"border: 2px solid #000000;
> width: 100%;\">";
>
>
> while($row = $result->fetch_assoc()){
> echo "<input type='checkbox' name='perinfo[]'
> value='".$row['userID']."' >".$row['userID']." : ".$row['lname']." -
> ".$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
>
>
> function dbConnect(){
> include('dbconn.php');
> $mysqli = new mysqli($dbnet, $dbuser, $dbpass, $dbname) or die("ERROR:
> Cannot connect to database server");
>
> if (mysqli_connect_errno()){ printf("Can't connect to MySQL Server.
> Errorcode: %s\n", mysqli_connect_error());
> exit;
> }
> $this->mysqli = $mysqli;
>
>
> } // end function dbConnect
>
> function dbClose(){
> $this->mysqli->close();
> } // end function dbClose
>
>
> function updateDB($perinfo){
> foreach($perinfo as $info);
> $query3= "UPDATE personalinfo SET checked = 'TRUE' WHERE userID =
> $info";
>
> if (isset($this->mysqli)) {echo "ERROR on mysqli";
> exit;}
>
> $result = $this->mysqli->query($query3);
> echo "QUERY DONE";
> $result->free();
> return true;
> } // end function updateDB
> } // end class
> ?>
>
> And here is the script that execute this
>
--------------------------------------------------------------------------------------------
> <?php
> print "<br />Hello <b>'$user'</b>.<br />";
> print "You are ";
> if ($type =='administrator'){
> $file_path = $_POST['file_path'] = '';
>
> // Administrators
> echo "an <b style='color: #FF0000;'>$type</b> and have full
> administration rights.<br />";
> $user = new admin($user, $pass);
> $user->showNewInfo();
> if (isset($_POST['updatedb'])){ admin::updateDB($_POST['perinfo']); }
> }
> End example
> ===============================================================
>
> Thanks for the help.
>
> Schmidty
>
(Top posting fixed)
Off hand, I would say your problem is in the line:
admin::updateDB($_POST['perinfo']);
This is calling the function as a class member, not as an object member.
The '::' syntax doesn't pass a $this variable.
Try $user->updateDB($_POST['perinfo']); instead.
If that isn't it, which line gets the error?
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Navigation:
[Reply to this message]
|