> Date: Thu, 16 Apr 2009 14:43:46 +0100 > From: luke@xxxxxxxxxxxxxx > To: php@xxxxxxxxxxxxxx > CC: ro0ot.w00t@xxxxxxxxxxxxxx; php-general@xxxxxxxxxxxxx > Subject: Re: problem with my class > > On Thu, Apr 16, 2009 at 2:41 PM, Thijs Lensselink <php@xxxxxxxxxxxxxx>wrote: > > > Luke wrote: > > > 2009/4/16 Jan G.B. <ro0ot.w00t@xxxxxxxxxxxxxx> > > > > > >> 2009/4/16 Luke <luke@xxxxxxxxxxxxxx>: > > >>> Hi guys, > > >>> > > >>> I've been learning about object oriented programming and I wrote this > > >> test > > >>> class but it doesn't seem to be working, it throws no errors but > > doesn't > > >>> insert anything to the database either. I have made sure that the data > > >> being > > >>> sent when the class is instantiated is valid. > > >>> > > >>> I'm probably missing something simple here... > > >>> > > >> Are you actually calling your public function? > > >> > > >> $x = new RecipeCreator('a', 'b', 'c'); > > >> $x->saveRecipe(); > > >> > > >> You might want to insert some error reporting... > > >> > > >> echo mysql_error(); and alike > > >> > > >> > > >> Byebye > > >> > > >> > > >> > > >> > > >>> I have already > > >>> > > >>> class RecipeCreator > > >>> { > > >>> private $rtitle; > > >>> private $problem; > > >>> private $solution; > > >>> > > >>> function __construct ($t, $p, $s) > > >>> { > > >>> if(!isset($t, $p, $s)) > > >>> { > > >>> throw new Exception ('Missing parameters for > > >>> __construct, need $title $problem and $solution'); > > >>> } > > >>> > > >>> $this->rtitle = mysql_real_escape_string($t); > > >>> $this->problem = mysql_real_escape_string($p); > > >>> $this->solution = mysql_real_escape_string($s); > > >>> } > > >>> > > >>> public function saveRecipe() > > >>> { > > >>> $query = "INSERT INTO recipe (title, problem, solution) > > >>> VALUES ('".$this->rtitle."', > > >>> > > >>> '".$this->problem."', > > >>> > > >>> '".$this->solution."')"; > > >>> mysql_query($query); > > >>> } > > >>> } > > >>> > > >>> Many thanks, > > >>> Luke Slater > > >>> > > >> -- > > >> PHP General Mailing List (http://www.php.net/) > > >> To unsubscribe, visit: http://www.php.net/unsub.php > > >> > > >> > > > > > > Yes I am doing that. The query seems to be going through all right too I > > > tested the syntax in mysql query browser and tried mysql_error() but > > there > > > was nothing. > > > I think there's an issue with the __construct because when I wrote a > > method > > > in there to return one of the properties of the function, it turned up > > > blank! As I said before the variables I'm passing in are definitely > > valid... > > > > > > > And what happens when you instantiate your object without parameters? > > > > $foo = new RecipeCreator(); > > > > It should throw and exception. This way you at least know if your > > constructor is functioning properly. > > > > And take a look at the message you throw when the parameters are not > > set. The parameters are named $t, $p, $s but the message in the throw > > statement uses $title, $problem, $solution > > > > did you try echoing out the query and run it from phpMyAdmin or > > something similar? > > > > I changed the variables to $t $p and $s because I thought by naming them > with $title $problem and $solution may have been getting them mixed up > somehow. > > I figured out the problem, which was that I was actually calling the > saveRecipe() method without the parentheses. > > Too long programming in Perl -.- > > Thanks for your help, > > Luke Slater Hi Luke, class RecipeCreator { private $rtitle; private $problem; private $solution; function __construct ($t, $p, $s) { if(!isset($t, $p, $s)) { throw new Exception ('Missing parameters for __construct, need $title $problem and $solution'); } I think the problem was with the $title. As above, you defined the private variable $rtitle but you were trying to call the variable later as $title. Cheers. Alugo Abdulazeez. _________________________________________________________________ News, entertainment and everything you care about at Live.com. Get it now! http://www.live.com/getstarted.aspx