SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

 
 
Themen-Optionen Ansicht
  #1  
Alt 26.12.2007, 16:33:48
jasonpetra jasonpetra ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 33
Nested Set nur Level weise ausgeben

Hi,

habe meine Kategorieverwaltung mit nested set aufgebaut.
Meine mysql tabelle sieht wie folgt aus :

node_id
root_id
payload
lft
rgt

Mit function gebe ich die Tabelle aus:

Erste function : navigation aufbauen

PHP-Code:
/** navigation aufbauen **/
 
function getNavi() {
     
$sql "SELECT DISTINCT root_id AS roots
            FROM node"
;
    
    
$result mysql_query($sqlconnectDB());
    
$count    mysql_num_rows($result);
    
    while(
$row mysql_fetch_array($result)){
        
$root[] = $row[0];
    } 
// while
 
     
$sql"SELECT n.*,
           floor((n.rgt-n.lft-1)/2) AS childs,
           count(*)+(n.lft>1) AS level,
           ((min(p.rgt)-n.rgt-(n.lft>1))/2) > 0 AS lower,
           (((n.lft-max(p.lft)>1))) AS upper
           FROM node n, node p "
;
        if (
$count 1) {    // fuer mehrere wurzeln
            
$sql.= "WHERE n.lft BETWEEN p.lft AND p.rgt
                    AND (p.root_id = n.root_id)
                    AND (p.node_id != n.node_id OR n.lft = 1)
                    AND (p.root_id IN ("
.implode(",",$root)."))
                    GROUP BY n.root_id,n.node_id
                    ORDER BY n.root_id,n.lft"
;
        } elseif (
$count == 1) {    // ... oder eben nur eine
            
$sql.= "WHERE n.lft BETWEEN p.lft AND p.rgt
                    AND (p.root_id = n.root_id)
                    AND (p.node_id != n.node_id OR n.lft = 1)
                    AND (p.root_id = "
.$root[0].")
                    GROUP BY n.node_id
                    ORDER BY n.lft"
;
        } else {    
// alle wurzeln ... der defaulf-fall eben
            
$sql.= "WHERE n.lft BETWEEN p.lft AND p.rgt
                    AND (p.root_id = n.root_id)
                    AND (p.node_id != n.node_id OR n.lft = 1)
                    GROUP BY n.root_id,n.node_id
                    ORDER BY n.root_id,n.lft"
;
        }


        
$result mysql_query($sqlconnectDB());
        
        return 
$result;
 } 
Die zweite function:

PHP-Code:
/** navigation ausgeben **/
 
function showNavi() {
     
$result getNavi();
    
    
// diese funktion ist dermassen unsauber  *ganzrotwerd*
    // die muss unbedingt noch ueberarbeitet werden!
     
if ($_REQUEST['site'] == "admin"):
        
$tree "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><form action=\"\" method=\"post\">";
        
$tree.= "<tr id=\"top\"><th>Wurzel</th>";
        
$tree.= "<th>Name</th><th>Ebene</th>";
        
$tree.= "<th>Verschieben</th><th>Löschen</th>";
        
$tree.= "<th>Einfügen</th>";
        
$tree.= "<th>Editieren</th></tr>";
        while(
$row mysql_fetch_array($result)) {
            (
$race/== floor($race/2)) ? $class "line1" $class "line2";
            
$tree.= "<tr><td align=\"center\" class=\"".$class."\">".$row[1]."</td>";
            
$tree.= "<td class=\"".$class."\">".$row[2]."</td>";
            
$tree.= "<td align=\"center\" class=\"".$class."\">".$row[6]."</td>";
            
$tree.= "<td align=\"center\" class=\"".$class."\"><a href=\"".$PHP_SELF."?site=admin&action=moveup&id=".$row[0]."\" onfocus=\"blur()\"><img src=\"img/up.png\" border=\"0\"></a> ";
            
$tree.= "<!-- <a href=\"".$PHP_SELF."?site=admin&action=movedown&id=".$row[0]."\" onfocus=\"blur()\"><img src=\"img/down.png\" border=\"0\"></a> --></td>";
            
$tree.= "<td align=\"center\" class=\"".$class."\"><a href=\"".$PHP_SELF."?site=admin&action=del&id=".$row[0]."\" onfocus=\"blur()\"><img src=\"img/del.png\" border=\"0\"></a></td>";
            
$tree.= "<td align=\"center\" class=\"".$class."\"><a href=\"".$PHP_SELF."?site=admin&action=insert&id=".$row[0]."\" onfocus=\"blur()\"><img src=\"img/insert.png\" border=\"0\"></a></td>";
            
$tree.= "<td align=\"center\" class=\"".$class."\"><a href=\"".$PHP_SELF."?site=admin&action=edit&id=".$row[0]."\" onfocus=\"blur()\"><img src=\"img/edit.png\" border=\"0\"></a></td></tr>";
            
$race+=1;
        } 
// while
        
$tree.= "</form></table>";
    else:
        
// bei diesem teil darf ich mich fuer die hilfe von jan bedanken
        
$level 1;
                         
$tree.= "<ul id=\"NewTree\">";
        
        while(
$row mysql_fetch_array($result)) {
            if (
$row['level'] > $level)
                
$tree.= "<ul>";
            else if (
$row['level'] < $level)
                
$tree.= str_repeat("</li></ul>"$level-$row['level']);
            else if (
$level 1)
                
$tree.= "</li>";
                
            
$tree.= "<li value_id=\"".$row['node_id']."\" level=\"".$row['level']."\" input_id=\"".$row['root_id']."\" productgroupname=\"\" input_type=\"\"><span>".$row[2]."</span>";
            
$level $row['level'];
        } 
// while
        
$tree.= str_repeat("</ul>"$level-1);
    endif;
    
    return 
$tree;
 } 
So, nun mein problem:

Diese functionen geben den ganzen Baum, mit Wurzeln usw..., aus.
Ich möchte es aber Levelweise ausgeben, das heißt,
Nur die Wurzeln als Link, wenn ich z.B. auf Wurzel1 klicke,
soll nur der Level 2 der Wurzel1 als Link ausgeben werden,
wenn bei Level 2 klicke, nur der Level 3, usw..

Kann mir da jemand weiterhelfen, sitze schon zwei Tage an den functionen.

Dank im voraus

Chris
Mit Zitat antworten
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nested Sets Klasse Socrates PHP Entwicklung und Softwaredesign 26 12.02.2009 00:33:21
Source Level Debugging - Wie? teo PHP für Fortgeschrittene und Experten 1 19.12.2006 22:06:16
datenbanknamen als liste ausgeben howie MySQLi/PDO/(MySQL) 1 19.06.2006 14:11:55
sortierte ausgabe joker PHP Grundlagen 5 17.12.2004 19:58:27
Sekunden in Stunden:Minuten:Sekunden ausgeben LudwigB PHP Grundlagen 6 23.05.2004 21:59:54


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:50:58 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt