Hallo,
if(mysql_num_rows($einlesen)>0) return true; else return false;
ist mir nur auf die Schnelle aufgefallen - das ist ja wirklich von hinten durch die Brust ins Knie. Das lässt sich kürzer und übersichtlicher schreiben:
wie ich bereits erwähnte, ist es überhaupt keine gute Idee, sich Datensätze zurückgeben zu lassen, an denen man nicht interessiert ist, von denen man nur wissen will, ob die Anzahl größer ist als 0.
return (mysql_num_rows($einlesen)>0);
wenn schon, dann geht's noch kürzer:
return mysql_num_rows($einlesen);
Verlangt natürlich das Wissen, um die Konvertierungsregeln von int nach bool.
Wie von mir angemerkt ist es viel sinnvoller, gleich die Anzahl der Datensätze abzufragen, oder gleich True oder False:
SELECT
CASE
WHEN COUNT(*) > 0 THEN 1 -- True ist in MySQL ein Alias für 1
ELSE 0 -- False ist ein Alias für 0
END hasChildren
FROM
navigation
WHERE
parent_id = Vergleichswert
-- es gibt SQL-Dialekte, die mit True und False nichts anfangen können :-)
Wie dem bereits verlinkten Kontextwechselartikel zu entnehmen ist, wäre hier intval() eine kontextgerechte Behandlungsmethode in PHP für den Vergleichswert.
Freundliche Grüße
Vinzenz