DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/)
-   PHP (http://www.daniweb.com/forums/forum17.html)
-   -   OOPing with PHP4 simple DB connect class? (http://www.daniweb.com/forums/thread116050.html)

sagedavis Mar 27th, 2008 10:40 pm
OOPing with PHP4 simple DB connect class?
 
I am banging my head against the wall here.
I've tried everything that I can think of to get this to work.

class myData {
function myStuff($sql){
        $result = @mysql_query($sql,$connection) or die(mysql_error());
                while ($row = mysql_fetch_array($result)) {
                $adId = $row['adId'];
                $adName = $row['adName'];
                $adData .= "my adId is $adId and guess what? my adName is $adName <br/><br/>";
               
                }       
        }
}

Note, I am also using a "require_once" of a file which holds variables for
$connection = mysql_connect("localhost","maDB","maPassword") or die(mysql_error());
$db_name = "myDB";
$db = @mysql_select_db($db_name,$connection) or die(mysql_error);

in my index page I have the following

sql = "select * from tablename";
$objAdvertisers = new myData;
$objAdvertisers->myStuff($sql);

Using this method keeps giving me an error of
unexpected T_CLASS...

I've tried several other things, but I was almost sure that this was the way that it was sposed to work?

All I am trying to do is create a generic connect to database and pass $sql as an argument, then store some information based on that as an array for each record that matches my request.

I am using a PHP4 server.

Any help?
Thanks
Sage

Suomedia Mar 27th, 2008 11:54 pm
Re: OOPing with PHP4 simple DB connect class?
 
There is nothing in the code that you posted that is actually causing the error.

Look at my tutorial here which has a nice introduction to using database classes.


Matti Ressler
Suomedia

sagedavis Mar 28th, 2008 12:15 am
Re: OOPing with PHP4 simple DB connect class?
 
Thanks for this tute, it's pretty good, although, I wouldn't recommend a beginning OOPer to read that right off the bat.

I've been working with PHP OOPing for only a short time, but, as it's a daily requirement in my job, I find your stuff easier to follow than our own docs at work.

The only thing is that I have never seen anything like line 17 before.
function flowSQL($db_server = DATABASE_SERVER, $db_user = DB_USERNAME, $db_pass = DB_PASSWORD, $database = DATABASE)
is this a PHP5 thing?
I don't have access to 5 at the moment, err... scratch that.. I don't have access on the server that I am creating this for, to PHP5.

I am assuming that, this line must stay as is, however, we need to use
define('DATABASE_SERVER', 'localhost');

another item I am assuming is PHP5 which does not work in 4, as I have never seen it in a PHP4 script.

further assumption is that, if I actually did all the defines, that this would globally define these items as long as I use some require page.php.

At which point I would be able to do something like
$query = "SELECT needle FROM haystack WHERE hay = yellow";
$myQuery = new flowSQL;
$myQuery->flowSQL();
$myQuery->query($query);

or is it even needed to use the second to last line?

Thanks again for your help
Sage

digital-ether Mar 28th, 2008 12:56 am
Re: OOPing with PHP4 simple DB connect class?
 
Quote:

Originally Posted by sagedavis (Post 570874)
I am banging my head against the wall here.
I've tried everything that I can think of to get this to work.
....

in my index page I have the following

sql = "select * from tablename";
$objAdvertisers = new myData;
$objAdvertisers->myStuff($sql);

Using this method keeps giving me an error of
unexpected T_CLASS...
...



Did you forget the $ before sql in the code above?

$sql = "select * from tablename";
$objAdvertisers = new myData;
$objAdvertisers->myStuff($sql);

That would probably generate a T_STRING error...

As for the T_CLASS error, make sure you didn't forget to close open braces () or {} or are missing a ; at the end of your statements just before the class definition.

Suomedia Mar 28th, 2008 9:23 am
Re: OOPing with PHP4 simple DB connect class?
 
Quote:

Originally Posted by sagedavis (Post 570921)

The only thing is that I have never seen anything like line 17 before.
function flowSQL($db_server = DATABASE_SERVER, $db_user = DB_USERNAME, $db_pass = DB_PASSWORD, $database = DATABASE)
is this a PHP5 thing?


No its not. It uses defines, eg. DATABASE_SERVER that are defined in the configuration file.

Quote:

Originally Posted by sagedavis (Post 570921)
I don't have access to 5 at the moment, err... scratch that.. I don't have access on the server that I am creating this for, to PHP5.

I am assuming that, this line must stay as is, however, we need to use
define('DATABASE_SERVER', 'localhost');


Thats exactly as I have it in the tutorial configuration file. The example given in the tutorial is pretty standard for any version of PHP.

Quote:

Originally Posted by sagedavis (Post 570921)

further assumption is that, if I actually did all the defines, that this would globally define these items as long as I use some require page.php.


Yes, you will see in the tutorial that your main page has:

   // include the configuration file and database class
  require('include/config.php');
  require('include/class/mysql.php');

Quote:

Originally Posted by sagedavis (Post 570921)
At which point I would be able to do something like
$query = "SELECT needle FROM haystack WHERE hay = yellow";
$myQuery = new flowSQL;
$myQuery->flowSQL();
$myQuery->query($query);

or is it even needed to use the second to last line?



Its better structured like this (less confusing):

$dBase = new flowSQL;
$query =  $dBase->query("SELECT needle FROM haystack WHERE hay = yellow");

We still need to fetch our result however, eg:

while($result = $dBase->fetch_array($query)) {
// do stuff
}


Matti Ressler
Suomedia

sagedavis Mar 28th, 2008 10:34 am
Re: OOPing with PHP4 simple DB connect class?
 
Great Matti,
I shall try this over the weekend.

The main reason for wanting to pass the var $sql as an arg, rather than type out the statement is because, there might be some dynamic stuff going on there as well, as in the case of say a search function, with advanced features.

At any rate, I shall dig into your tute more deeply this weekend.

Thanks
Sage


All times are GMT -4. The time now is 10:43 pm.

Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC