Re: OOP in PHP
| From: | Patrik Hasibuan | Date: | Wed, 15 Aug 2007 20:41:13 +0000 |
| Subject: | Re: OOP in PHP | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-260876@lists.php.net to get a copy of this message | ||
Dear Jim,
thanks for your help. I've modified my codes as you adviced.
But than the output is:
"
superclass koneksi dipanggil
koneksi berhasil
No results found
"
The column 'country' of table 'countries' already really contents complete all
contry name from all over the earth. How come the query of "select country from countries"
results empty value. So I believe the problem is still on the my OOP programming because if I do the
query only with the "procedural concept" the $kueri will content the complete record of
the column "country".
Please keep telling what is my mistake on my OOP PHP5 codes.
-----
//pelangganbaru.php
<?php
include_once "koneksi.php";
$sqlnya="select * from countries";
$klas=new koneksi($sqlnya);
if ( mysql_num_rows($klas) > 0 ) {
while( list($negara) = mysql_fetch_row($klas) ) {
echo "negara->$negara<br>";
}
} else {
echo 'No results found';
}
?>
-----
//koneksi.php
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META name="generator" content="HTML Tidy for Linux/x86 (vers 31 October 2006),
see www.w3.org">
</HEAD>
<BODY>
<?php
class koneksi{
var $namakompie="127.0.0.1";
var $un="root";
var $pw="mysuccess";
var $sqlnya;
var $kueri;
function koneksi($sqlnya){
echo "superclass koneksi dipanggil<br>";
$konek=mysql_connect("$this->namakompie","$this->un","$this->pw");
if ($konek){
echo "koneksi berhasil<br>";
$mybd=mysql_select_db("survey",$konek);
//$kueri=mysql_query($sqlnya,$konek);
$kueri=mysql_query($sqlnya,$konek) or die('MYSQL QUERY ERROR
['.mysql_errno($konek).'] '.mysql_error($konek));
}else{
echo "I can't talk to the server<br>";
exit();
}
return $kueri;
}
}
?>
</BODY>
</HTML>
===
On Wed, 15 Aug 2007 13:13:18 -0700
Jim Lucas <lists@cmsws.com> wrote:
> Patrik Hasibuan wrote:
> > Dear Jim,
> >
> > You've solved my problem, Jim. Thank you very much.
> >
> > Now, my code give the output as my expectation:
> > "
> > superclass koneksi dipanggil
> > koneksi berhasil
> > negara->
> > ".
> > But come another problem, namely: the $negara is empty. I tried to read the documentation
> > on
> > "
> >
> > http://www.php.net/manual/en/language.types.object.php#language.types.object.casting
> > "
> > but I didn't manage to find the answer.
> >
> > I suspect the "return $kueri" could be only for 'returning' a variable
> > of boolean or string or number but not 'returning' an array (such as the result of
> > mysql_query("select country from countries",$koneksi) ) or an object (such as the result
> > of mysql_connect() ).
> >
> > So how should I get the content of mysql_query() so I can get the value with
> > "mysql_fetch_row()" or inherit array?
> > Is is also possible to re-use the result of "mysql_connect()" or inherit the
> > $konek?
> >
> > Here is my current code:
> > ====
> > //pelangganbaru.php
> > <?php
> > include_once "koneksi.php";
> > $sqlnya="select country from countries";
> > $klas=new koneksi($sqlnya);
>
> Try this instead
>
> if ( mysql_num_rows($klas) > 0 ) {
> while( list($negara) = mysql_fetch_row($klas) ) {
> echo "<option value=\"$negara\">$negara</option>";
> }
> } else {
> echo 'No results found';
> }
>
> And within your class change your mysql_query line to this
>
> $kueri=mysql_query($sqlnya,$konek) or die('MYSQL QUERY ERROR
> ['.mysql_errno($konek).']
> '.mysql_error($konek));
>
> This will make the system fail and kill the script if the query fails for some reason.
> The die() part will then print the error number and what mysql thinks is wrong.
>
> This isn't the best way to use error reporting in a production system, but since you are
> new at
> this, this is a simple way to do error reporting.
>
> It is always a good idea to use is_resource($resource_handle_from_mysql) as a test to see if
> you did
> in fact get a valid resource id from the mysql_connect() call.
>
>
> > $brs=mysql_fetch_row($klas->kueri);
> > list($negara)=$brs;
> > echo "<option value=\"$negara\">$negara</option>";
> >
> > ?>
> > =====
> > //koneksi.php
> > <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
> >
> > <HTML>
> > <HEAD>
> > <META name="generator" content="HTML Tidy for Linux/x86 (vers 31
> > October 2006), see www.w3.org">
> >
> > </HEAD>
> >
> > <BODY>
> > <?php
> > class koneksi{
> > var $namakompie="127.0.0.1";
> > var $un="root";
> > var $pw="mysuccess";
> > var $sqlnya;
> > var $kueri;
> >
> > function koneksi($sqlnya){
> > echo "superclass koneksi dipanggil<br>";
> >
> > $konek=mysql_connect("$this->namakompie","$this->un","$this->pw");
> > if ($konek){
> > echo "koneksi berhasil<br>";
> > $mybd=mysql_select_db("survey",$konek);
> > $kueri=mysql_query($sqlnya,$konek);
> > }else{
> > echo "I can't talk to the server<br>";
> > exit();
> > }
> > return $kueri;
> > }
> >
> > }
> > ?>
> > </BODY>
> > </HTML>
> > ====
> > Please keep telling me.
> >
> > Thank you very much in advance.
> > ps: Thanks a lot too to Nathan Nobe and Robert Gegen for their responds...
> > ====
> > On Wed, 15 Aug 2007 09:00:56 -0700
> > Jim Lucas <lists@cmsws.com> wrote:
> >
> >> A few missing pieces in your code. Take a look below within your class. I corrected
> >> it.
> >>
> >> try also using include_once instead of require
> >>
> >> and make sure that your error level and reporting are turned on so you can see what is
> >> happening.
> >>
> >>
> >> Patrik Hasibuan wrote:
> >>> Dear my friends,
> >>>
> >>> This is the first time for me to use OOP concept of PHP. I wrote still a very
> >>> simple codes but it doesn't work as my manual book taught. the book titled "MySQL/PHP
> >>> Database Application" by Jay Greenspan say these lines should work but in fact it don't
> >>> work as expected.
> >>> Here is my code:
> >>> ===============================
> >>> //pelangganbaru.php
> >>> <?php
> >>> require "koneksi.php";
> >>> $sqlnya="select country from countries";
> >>> $klas=new koneksi($sqlnya);
> >>> ?>
> >>> ===============================
> >>> //koneksi.php
> >>> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
> >>>
> >>> <HTML>
> >>> <HEAD>
> >>> <META name="generator" content="HTML Tidy for Linux/x86 (vers
> >>> 31 October 2006), see www.w3.org">
> >>>
> >>> </HEAD>
> >>>
> >>> <BODY>
> >>> <?php
> >>> class koneksi{
> >>> $namakompie="127.0.0.1";
> >> var $namakompie='127.0.0.1';
> >>> $un="root";
> >> var $un='root';
> >>> $pw="mysqlpw";
> >> var $pw='mysqlpw';
> >>> $sqlnya;
> >> var $sqlnya;
> >>> $kueri;
> >> var $kueri;
> >>> function koneksi($sqlnya){
> >>> echo "superclass koneksi dipanggil<br>";
> >>> $konek=mysql_connect("$namakompie","$un","$pw");
> >> $konek=mysql_connect($this->namakompie, $this->un, $this->pw);
> >>> if ($konek){
> >>> echo "koneksi berhasil (connection succeeded)<br>";
> >>> $mybd=mysql_select_db("survey",$konek);
> >>> $kueri=mysql_query($sqlnya,$konek);
> >>> }else{
> >>> echo "I can't talk to the server<br>";
> >>> exit();
> >>> }
> >>> return $kueri;
> >>> }
> >>>
> >>> }
> >>> ?>
> >>> </BODY>
> >>> </HTML>
> >>> =====
> >>>
> >>> Theoritically if Class "koneksi" is being initialized than it prints
> >>> "koneksi berhasil (connection succeeded)" but it doesn't.
> >>>
> >>> Please tell me what is my mistake.
> >>>
> >>> Thank you very much in advance.
> >>
> >> --
> >> Jim Lucas
> >>
> >> "Some men are born to greatness, some achieve greatness,
> >> and some have greatness thrust upon them."
> >>
> >> Twelfth Night, Act II, Scene V
> >> by William Shakespeare
> >>
> >> --
> >> PHP General Mailing List (http://www.php.net/)
> >> To unsubscribe, visit: http://www.php.net/unsub.php
> >>
> >>
> >>
> >
> >
>
>
> --
> Jim Lucas
>
> "Some men are born to greatness, some achieve greatness,
> and some have greatness thrust upon them."
>
> Twelfth Night, Act II, Scene V
> by William Shakespeare
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
>
--
Patrik Hasibuan <patrikh@penguin-teknologi.com>
Junior Programmer