zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Mehrdimmensionales Array aus DB erstellen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #11 (permalink)  
Alt 14.11.2007, 15:08
Benutzerbild von uspri
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 04.07.2005
Beiträge: 900
uspri sorgt für eine eindrucksvolle Atmosphäreuspri sorgt für eine eindrucksvolle Atmosphäre
Standard

Werde ich mal testen.

Danke Dir.
Mit Zitat antworten
Sponsored Links
  #12 (permalink)  
Alt 14.11.2007, 17:18
lässt grüßen
XHTMLforum-Mitglied
 
Registriert seit: 08.10.2007
Ort: Berlin
Beiträge: 189
code_junkie wird schon bald berühmt werden
Standard

Vorweg: Ich habe keine Ahnung, was Smarty ist, macht und auch nicht was es erwartet.. Aber ich habe hier einen älteren Codeschnippsel, der dir vielleicht weiterhilft:

Wieso nicht nur eine MySQL Anfrage Senden, und das ganze dann mit PHP verarbeiten? z.B:

PHP-Code:
<?
$mark 
0;
//mysql_co() verbindet und sendet die mysql_query(). Rückgabe: mysql-ressource
$res mysql_co("SELECT * FROM `foo`.`bar` ORDER BY `mparent`, `morder` ASC LIMIT 0 , 330");

while (
$dbRes mysql_fetch_array($res))
{
    
// Zwei Arrays, eines mit "ID", eines mit "Name" als Schlüssel:
    
$_menu[$dbRes['mtitel']] = $_menu_id[$dbRes['mid']] = array (

        
"id" => $dbRes['mid'],
        
"func" => $dbRes['mfunc'],
        
"custom" => $dbRes['mcustom'],
        
"sub" => $dbRes['msub'],
        
"parent" => $dbRes['mparent'],
        
"order" => $dbRes['morder'],
        
"title" => $dbRes['mtitel']
    );
    
// Submenu-Array bauen
    
if ($dbRes['mparent']) { // is NO ROOT entry

        
if ($mark != $dbRes['mparent']) { 
            
$mark $dbRes['mparent']; unset($temp);
        }
        
$temp[] = $dbRes['mtitel'];
        
$_submenu[$dbRes['mparent']] = $temp;
    }
}

mysql_free_result($res);
unset(
$temp,$mark,$dbRes);

?><pre><?
print_r
($_menu);
print_r($_menu_id);
print_r($_submenu);
?></pre><?
Das wäre nun nicht nicht ein Array, sondern jeweils eines mit der ID und dem Namen als Schlüssel. (benötigte ich für ein Script)
Die Submenüs sind dann einfach ein Array in $_submenu[$id]

Nunja, hier fehlen die Funktionen um aus den Arrays letztlich die Menüs zu gestalten.. Aber irgendwas macht Smarty ja sicher auch.


Das Nested-Sets Modell ist für Baumstrukturen natürlich viel besser geeignet. Ich brauchte obiges Skript für eine Menüstruktur mit maximal zwei Untermenü-Stufen und einer recht überschaubaren Anzahl von Einträgen.

Im Grunde fehlt nur irgendwas wie
PHP-Code:
foreach ($_menu as $key => $i) {
    if (empty(
$i['parent'])): // menu entry is in root
        
echo 'ID: ' $i['id'] . ', Titel: ' htmlentities($keyENT_QUOTES'UTF-8') . "<br />\n";
        if (
$_menu[$i['title']]['sub'] == 1) { // has sub-entries, do smth:
            /* ...  :)   */
        
}
    endif;

Hoffe geholfen zu haben,
Gruß
Mit Zitat antworten
Sponsored Links
  #13 (permalink)  
Alt 14.11.2007, 17:32
Benutzerbild von uspri
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 04.07.2005
Beiträge: 900
uspri sorgt für eine eindrucksvolle Atmosphäreuspri sorgt für eine eindrucksvolle Atmosphäre
Standard

Habe jetzt ein Ergebnis mit folgender Funktion:
PHP-Code:
function getNavi($navId=0$navEbene=0){
    
$result mysql_query("SELECT id, KategorieName, oID FROM shop_kategorien WHERE oID = " $navId " ORDER BY Sort");
    while (
$row mysql_fetch_assoc($result)){
        echo 
'<div style="padding-left:' $navEbene*10 'px;">' $row['KategorieName'] . '</div>';
        
        
// Ueberpruefe, ob ueberhaupt Kinder vorhanden.
        
$childResult mysql_query("SELECT id FROM shop_kategorien WHERE oID = " $row['id']);
        if (
mysql_num_rows($childResult) > 0){
            
getNavi($row['id'], $navEbene+1);
        }
    }

Momentan hab ich nur noch ein Problem damit, dass ganze als verschachtelte Liste auszugeben. In der Funktion selber muss ich alles in einem String sammeln und dann mittels return zurückgeben. Gebe ich es direkt aus, dann hab ich sauberes HTML, sammel ich es in einem String, ist es voll für den Ar.....
Mit Zitat antworten
  #14 (permalink)  
Alt 14.11.2007, 18:41
Benutzerbild von kampfgnom
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 22.11.2006
Ort: Radebeul
Beiträge: 1.809
kampfgnom befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Wieso nicht nur eine MySQL Anfrage Senden, und das ganze dann mit PHP verarbeiten?
Ganz einfachr grund:
MySQL ist schneller als PHP!! deswegen soviel wie möglich über die DB machen!!!

PHP ist da wesentlich langsamer!
__________________
Meine Spielwiese: http://blog.kanedo.net
Ich bei Flickr? Da: Flickr: Fotostream von kanedo-projekt
Für open Source Liebhaber: open Com

Auch ich Zwitschere als @kanedo
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe geschieht nur einmal Benutzername Serveradministration und serverseitige Scripte 0 12.05.2011 15:59
Navigation aus Array erstellen uspri Serveradministration und serverseitige Scripte 12 16.11.2010 13:32
URL mit XML in (X)HTML ausgeben blockmarc (X)HTML 17 05.06.2010 16:39
Funktion gibt Array nicht zurück Schneemann Serveradministration und serverseitige Scripte 8 05.05.2008 01:14
Array erstellen DK Serveradministration und serverseitige Scripte 4 12.06.2006 13:18


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:02 Uhr.