|
Posted by Schmidty on 01/24/07 16:38
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
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 -
[Back to original message]
|