Efficiently creating a menu consisting of multi-level structure
@hjpotter92 makes a good point: mysql_* is deprecated and should be replaced with mysqli_* or PDO. It's probably easier to replace it with the former, but it may help to read this article comparing mysqli and PDO.
$this-&gt;areThereKids() is a terrible method name. It's even worse that it returns "yes" or some other value. Refactor this to $this-&gt;hasKids() (or better yet, $this-&gt;hasChildren()), returning either boolean true or false.


Similarly, $this-&gt;getMyKids() could be better named $this-&gt;getChildren(), but this is not as egregious as the point above.

or die(mysql_error()) is tolerable in development code, but should be avoided in production code. Instead, prefer to print a user-friendly error or apologetic message, and log the details separately.
You are correct in that your code lends itself naturally to recursion. I'm not interested in writing the recursive function for you, but notice in particular that in every level of nesting,


you use the same template for output.
you have the variables $info and $id.
if there are children, you store them in a variable $children and you iterate through them, using the same template and variables.


I welcome you to try implementing the recursive function on your own, keeping the above three points in mind. When you've done so, you can submit your revised code here for another review!