Script-solution.de » Community » Support-Board » Foren » Boardsolution » Boardsolution v1.4x » Fragen zu Änderungen » Baumansicht von Bs und Sortierung
  • Willkommen, Gast!
  • Freitag, 10. Februar 2012, 06:23:56
 
Thema: "Baumansicht von Bs und Sortierung" [ Seite 1 ]

Kein neuer Beitrag langer , 23.02.2010, 07:33
Beitrag #1   

IP: n/a
Rang: * * * * * * O
Registrierung: 05.04.2005, 08:05
Wohnort: Karlsruhe
 

Forum-Beherrscher mit 584 Punkte, 440 Beiträge
Hallo,

Ich weiß nicht ob das hier jetzt genau rein passt aber es geht ja eigentlich um BS...

Ich versuche zurzeit mich mit der Baumansicht von BS und Sortierung auseinanderzusetzen. Ich habe
mir mal das ganze im ACP unter Foren/Foren angeschaut aber irgendwie ist mir das noch zu hoch. Ich
habe eine Tabelle angelegt mit id, parent_id, sortierung und name wie kann ich jetzt
Hauptkategorien und Unterkategorien sortiert ausgeben und diese vielleicht auch mit einem pfeil
hoch und runter schieben? Kann mir da jemand eine Hilfestellung oder ein paar Tips geben?

Hänge mal noch ein Bildchen an…

Danke :-)
Anhänge:
baumansicht.JPG 53.626 Bytes 9 Downloads
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte mal 23.02.2010, 07:34 von langer.

 
Kein neuer Beitrag KingGO , 23.02.2010, 11:00
Beitrag #2   

IP: n/a
Rang: * * * * * O O
Registrierung: 17.05.2007, 20:49
Homepage: http://www.donotart.de
Wohnort: Magdeburg
 

Supporter mit 391 Punkte, 307 Beiträge
Habe mich damit auch beschäftigt...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php

   if(isset($_GET["id"])) {
      $id = $_GET['id'];
      $up_id  = $_GET["id"] - 1;
      $down_id = $_GET["id"] + 1;
   }
   
   if(isset($_GET["sort"]) && $_GET["sort"] == 'up') {
      $check = mysql_query("SELECT * FROM `netcms_navigation` WHERE `order` = '".$up_id."'");  // Hier wird gecheckt, ob der Datensatz davor existiert
      if(mysql_num_rows($check)==1) {
         mysql_query("UPDATE `netcms_navigation` SET `order` = '99999999' WHERE `order` = $up_id"); // Falls die vorherige ID existiert wird diese temporär auf 99999999 verschoben
         mysql_query("UPDATE `netcms_navigation` SET `order` = $up_id WHERE `order` = $id");  // Hier wird der aktuelle Datensatz eins nach oben verschoben
         mysql_query("UPDATE `netcms_navigation` SET `order` = $id WHERE `order` = '99999999'"); // Hier wird der temporär verschobene Datensatz auf die Position darunter gesetzt
         $sort = "leer";               // Die Variable sort wird auf leer gesetzt
         header("Location: ".$_SERVER['PHP_SELF']."");       // Jetzt wird die Seite neu geladen
      } else {
         mysql_query("UPDATE `netcms_navigation` SET `order` = $up_id WHERE `order` = $id");  // Falls die ID davor nicht existiert, wird der Datensatz direkt verschoben
         header("Location: ".$_SERVER['PHP_SELF']."");
      }
   }
   if(isset($_GET["sort"]) && $_GET["sort"] == 'down') {
      $check = mysql_query("SELECT * FROM `netcms_navigation` WHERE `order` = $down_id");  // Hier wird gecheckt, ob der Datensatz danach existiert
      if(mysql_num_rows($check)==1) {
         mysql_query("UPDATE `netcms_navigation` SET `order` = '99999999' WHERE `order` = $down_id"); // Falls die nachfolgende ID existiert wird diese temporär auf 99999999 verschoben 
         mysql_query("UPDATE `netcms_navigation` SET `order` = $down_id WHERE `order` = $id");   // Hier wird der aktuelle Datensatz eins nach unten verschoben
         mysql_query("UPDATE `netcms_navigation` SET `order` = $id WHERE `order` = '99999999'");  // Hier wird der temporär verschobene Datensatz auf die Position darüber gesetzt
         $sort = "leer";                // Die Variable sort wird auf leer gesetzt
         header("Location: ".$_SERVER['PHP_SELF']."");        // Jetzt wird die Seite neu geladen
      } else { 
         mysql_query("UPDATE `netcms_navigation` SET `order` = $down_id WHERE `order` = $id");   // Falls die ID danach nicht existiert, wird der Datensatz direkt verschoben
         header("Location: ".$_SERVER['PHP_SELF']."");
      }
   }
   
   $result = $db->query("SELECT * FROM  `netcms_navigation` ORDER BY `order` ASC");

   if ($num = mysql_num_rows($result)) {
      for($i=0;$i < $num; $i++) {
         $id   = mysql_result($result,$i,"id");
         $name = mysql_result($result,$i,"name");
         $link = mysql_result($result,$i,"link");
         $order = mysql_result($result,$i,"order");
         echo '     <tr>'."\n";
         echo '      <td>'.$name.'</td>'."\n";
         echo '      <td><a href="'.$link.'" target="_blank">'.$link.'</a></td>'."\n";
         echo '      <td>'."\n";   
         if($i == '0') {
            echo '       <img src="inc/images/admin/icons/site_navigation_up_gray.png" width="24" height="24" />'."\n";
         } else {
            echo '       <a href="admin.php?module=navigation&amp;sort=up&amp;id='.$order.'"><img src="inc/images/admin/icons/site_navigation_up.png" width="24" height="24" /></a>'."\n";
         }
         if($i == ($num-1)) {
            echo '       <img src="inc/images/admin/icons/site_navigation_down_gray.png" width="24" height="24" />'."\n";
         } else {
            echo '       <a href="admin.php?module=navigation&amp;sort=down&amp;id='.$order.'"><img src="inc/images/admin/icons/site_navigation_down.png" width="24" height="24" /></a>'."\n";
         }
         echo '      </td>'."\n";
         echo '      <td>'."\n";
         echo '       <img src="inc/images/admin/icons/site_navigation_edit.png" width="24" height="24" />'."\n";
         echo '       <img src="inc/images/admin/icons/site_navigation_delete.png" width="24" height="24" />'."\n";
         echo '      </td>'."\n";
         echo '     </tr>'."\n";
      }
   }
?>


Das wäre meins gewesen dazu... 8-)
Dieser Beitrag wurde insgesamt 2 mal editiert. Das letzte mal 23.02.2010, 11:00 von KingGO.

 
Kein neuer Beitrag Nils , 23.02.2010, 18:35
Beitrag #3   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7594 Punkte, 7360 Beiträge
Hallo,

zur Baumansicht: Prinzipiell löst man sowas üblicherweise rekursiv. Pseudocode:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
funktion getChilds(pid) {
  childs = array();
  hole alle knoten mit parent_id = pid
  für alle Knoten k {
    childs[] = k;
    für alle Knoten l in getChilds(k.id) {
      childs[] = l;
    }
  }
  return childs;
}

funktion getAll() {
  // parent_id = 0 heißt wurzel-knoten
  return getChilds(0);
}

So kannst du also einfach getAll() aufrufen und bekommst dann ein Array mit allen Knoten, wobei
jeweils alle Kinder eines Knoten nach diesem kommen. Man könnte das jetzt relativ leicht abändern,
so dass es eine rekursive Datenstruktur wird und nicht bloß ein array. Also so dass du bei jedem
Knoten direkt die Kinder dabei hast.
Der Teil "hole alle knoten mit parent_id = pid" wäre dann bei dir eine entsprechende
Datenbank-Abfrage.

Das ganze ist zwar nicht sonderlich performant durch die vielen Datenbankabfragen, aber in deinem
Fall könnte das vllt. ok sein. Anderenfalls wirds noch etwas komplizierter :)

mfg Nils

 
Kein neuer Beitrag langer , 24.02.2010, 07:06
Beitrag #4   

IP: n/a
Rang: * * * * * * O
Registrierung: 05.04.2005, 08:05
Wohnort: Karlsruhe
 

Forum-Beherrscher mit 584 Punkte, 440 Beiträge
Danke an euch zwei :-)
werde ich erstmal probieren ob ich da durchsteige ;-)

 
Kein neuer Beitrag langer , 26.02.2010, 18:33
Beitrag #5   

IP: n/a
Rang: * * * * * * O
Registrierung: 05.04.2005, 08:05
Wohnort: Karlsruhe
 

Forum-Beherrscher mit 584 Punkte, 440 Beiträge
Ich hab jetzt mal länger probiert und auch schon gewisse Erfolge verzeichnen können :-)
Habe aber noch ein zwei Verständnisfragen.

Habe mit diesem code die gewünschte Struktur erhalten:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$qry = mysql_query("SELECT cat_id, parent_id, name FROM bs_downloadscat ORDER BY sortierung");

$kategorie = array();
while($row = mysql_fetch_assoc($qry)){
  $kategorie[$row['cat_id']] = $row;
}

function gib_baumstruktur($kategorie,$parent_id='0'){
  echo '<ul>';
  foreach($kategorie as $key => $value){
    if($value['parent_id']===$parent_id){
      echo '<li>',$value['name'];
      gib_baumstruktur($kategorie,$value['cat_id']);
      echo '</li>';
    }
  }
  echo '</ul>';
}

gib_baumstruktur($kategorie);

Wie kann ich jetzt das jetzt für BS anpassen?
Also so das ich die Daten im Template anzeigen kann?
Habe schon einiges probiert steh aber ziemlich auf dem Schlauch :-/

Wäre natürlich wieder sehr dankbar über ein paar Tipps :D
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte mal 26.02.2010, 18:33 von langer.

 
Kein neuer Beitrag Nils , 26.02.2010, 19:33
Beitrag #6   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7594 Punkte, 7360 Beiträge
Das einfachste wäre natürlich den HTML-Code zuerst als String fertig zusammenzubauen und dann ans
Template zu übergeben. Aber das ist ja nicht besonders schön, weil dann die Darstellung komplett im
Code ist.
Ne Alternative wäre ans Template ein Array zu geben und einfach alle Einträge
hintereinanderzuspeichern (natürlich in der richtigen Reihenfolge). Dort speicherst du dann mit ob
ein ul-Element (oder was auch immer) begonnen bzw. beendet werden soll und weitere Dinge, die du im
Template brauchst (Ebenen-Nummer z.B.).

mfg Nils

 
Kein neuer Beitrag langer , 01.03.2010, 07:00
Beitrag #7   

IP: n/a
Rang: * * * * * * O
Registrierung: 05.04.2005, 08:05
Wohnort: Karlsruhe
 

Forum-Beherrscher mit 584 Punkte, 440 Beiträge
Morgen,

Danke für die Antwort.

Nur mal als Beispiel:
Wie kann ich jetzt das Ergebnis dieser Funktion an das Template übergeben?
Dann werde ich mal weiter probieren. Danke

Gruß Langer

 
Kein neuer Beitrag Nils , 01.03.2010, 11:29
Beitrag #8   

IP: n/a
Rang: * * * * * * *
Registrierung: 01.07.2003, 18:55
Homepage: http://www.script-solution.de
Wohnort: Marburg
 

Forum-Gott mit 7594 Punkte, 7360 Beiträge
Hallo,

die erste Variante könnte so aussehen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function gib_baumstruktur($kategorie,$parent_id='0'){
  $str = '<ul>';
  foreach($kategorie as $key => $value){
    if($value['parent_id']===$parent_id){
      $str .= '<li>',$value['name'];
      $str .= gib_baumstruktur($kategorie,$value['cat_id']);
      $str .= '</li>';
    }
  }
  $str .= '</ul>';
  return $str;
}

$tpl->add_variables(array(
  'baum' => gib_baumstruktur($kategorie)
));


mfg Nils

n/a n/a 1     ( Anzeige: 1 - 8 , Gesamt: 8 ) n/a n/a
User in diesem Thema: 0 Registrierte, 0 Versteckte, 1 Gast, 0 Bots
Keine
Thema-Aktionen:

Toggle Ähnliche Themen zu "Baumansicht von Bs und Sortierung"
  Antworten Aufrufe Themeneröffnung Letzter Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein 'heißes Thema'
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  phpBB3 to bs14 converter Problem 6 4230 05.05.2011, 17:45
Von: Doerfler
09.05.2011, 19:50
Von: Nils Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein 'heißes Thema'
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  phpbb3 zu 1.4x BS 2 3655 20.03.2011, 19:47
Von: ANT1
21.03.2011, 20:50
Von: ANT1 Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein 'heißes Thema'
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
Thema Konverter für phpBB 3.0.x -> BS 1.4x 0 4274 21.03.2011, 18:32
Von: Nils
21.03.2011, 18:32
Von: Nils Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein 'heißes Thema'
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  Email abschalten 1 4449 23.02.2011, 13:13
Von: 4Webmaster
23.02.2011, 13:54
Von: Nils Zum letzten Beitrag
Keine neuen Beiträge, nicht wichtig Keine neuen Beiträge, kein 'heißes Thema'
Keine neuen Beiträge, offen Keine neuen Beiträge, nicht verschoben
  BS mit Joomla und Phoca Gallery ergibt ein Er ... 1 4362 23.12.2010, 10:54
Von: Hendriks_Island
23.12.2010, 12:09
Von: Nils Zum letzten Beitrag
  • 0.127735 Sek., 12 DB-Zugriffe, 6.491 MiB
  • Boardsolution v1.43 | © Nils Asmussen 2003-2009
Valid XHTML and CSS © 2003 - 2009 script-solution.de, Powered by Joomla!