PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   SQL / Datenbanken (https://www.php-resource.de/forum/sql-datenbanken/)
-   -   Problem mit children von Nested SET (https://www.php-resource.de/forum/sql-datenbanken/106584-problem-mit-children-von-nested-set.html)

sanktusm 22-04-2019 16:39

Problem mit children von Nested SET
 
PHP-Code:

$sql "SELECT n.id, n.menu_link,  n.menu_name, n.menu_area, COUNT(*)-1 AS level, n.lft, n.rgt, ROUND ((n.rgt - n.lft - 1) / 2) AS children FROM ".self::PREFIX."sections AS n, ".self::PREFIX."sections AS p WHERE
    (n.lft BETWEEN p.lft AND p.rgt)
    AND ((n.menu_area = '$menu_area_id' AND n.language_id = '$language_id')
    AND (p.menu_area = '$menu_area_id' AND p.language_id = '$language_id'))
    AND ((n.access_for = '#all') OR (n.access_for IN ("
.$this -> front_users($_SESSION['front_user_id'])."))
    AND (p.access_for = '#all') OR (p.access_for IN ("
.$this -> front_users($_SESSION['front_user_id']).")))
    AND ((n.public_status = '2' AND p.public_status = '2')
    OR (n.public_status = '"
.$_ENV['open_preview']."') AND (p.public_status = '".$_ENV['open_preview']."')) 

Hier wird die Falsche Anzahl von Kinder ausgegeben. Es werden alle, auch die verbrogenen (((n.access_for = '#all') OR (n.access_for IN (".$this -> front_users($_SESSION['front_user_id'])."))
AND (p.access_for = '#all') OR (p.access_for IN (".$this -> front_users($_SESSION['front_user_id']).")))) ausgegeben.

Hat mir jemand einen Tipp, was falsch läuft

chorn 23-04-2019 12:42

Dann stimmt deine Bedingung nicht. Aber du wirst wohl keinen finden, der sich hier mal eben ne passende Datenbankstruktur mit Testdaten ausdenkt. Datenbank kannst du mit PDO und SQLite in-memory mocken.


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:12 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG