php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.03.2007, 17:32  
Neuer Benutzer
 
Registriert seit: 01.10.2006
Beiträge: 17
Goschy
Standard Andere Lösung für verschachtelte Mysql Anfrage

Hallo Forum !

Ich habe eine Tabelle in mysql angelegt, wo ich Kategorien speichere für ein Dropdownmenü

Beispiel

ID Type Name
1 0 Irgendwas1
2 0 Irgendwas2
3 1 Kategorie von Irgendwas1
4 2 Kategorie von Irgendwas2

Bei Type entspricht die '0' einer Hauptkategorie alles andere gehört zu den Unterkategorien also als Beispiel ID 1 ist eine Hauptkategorie und ID 3 ist eine Unterkategorie die der Hauptkategorie 1 zugeordnet ist.

Als erstes lass ich mir die Hauptkategorien auslesen in einer while schleife und frage in der while Schleife die passenden Unterkategorien ausgeben

Code:
$Select = mysql_query (" SELECT ID,Name FROM Table WHERE Type = '0' ORDER BY NAME ASC");
while ($Result = mysql_fetch_array ($Select))
{
echo "
<td><a href='$Result[ID]'>Name der Hauptkategorie</td>
$Selectsub = mysql_query (" SELECT ID,Name FROM Table WHERE Type = '$ID' ORDER BY NAME ASC");
while ($Resultsub = mysql_fetch_array ($Selectsub))
      {
      echo "
      <td><a href='$Resultsub[ID]'>Name der Unterkategorie</td>
     }
}
Das klappt auch ohne Probleme, allerdings denke ich mal das es zu viele Resourcen kostet.Gibt es da noch eine andere Lösung ??

Vielen Dank für eure Hilfe im vorraus
Goschy ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.03.2007, 17:49  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Nested Sets
Zergling-new ist offline  
Alt 27.03.2007, 17:49  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Goschy,

erst mal ein "Herzliches Willkommen im Forum" von meiner Seite.

Nun zu deinem Problem: Du scheints verschiedene Informationen aus zwei Spalten abzufragen, wobei es eine Schnittmenge der beiden gibt. Diese Tatsache ist ideal für das Anwenden von JOINs. Lies dir mal die Beschreibungen unter http://dev.mysql.com durch, dort findest du Anregungen. Kommt du nicht weiter, helfe ich dir gerne.

Pseudocode:

SELECT ... FROM ...
[LEFT|OUTER|INNER] JOIN table1 ON ...
WHERE ...


EDIT: Solltest du tiefer verschachtelte Menüs mit einer Tiefe > 2 haben bietet sich Zerglings Lösung natürlich an.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 27.03.2007, 18:49  
Neuer Benutzer
 
Registriert seit: 01.10.2006
Beiträge: 17
Goschy
Standard

Hallo Zergling !

Ich habe deinen Brocken aufgenommen und auch versucht es zu begreifen, das Grundprinzip ist mir klar und ich bin auch überzeugt das das sehr gut ist, allerdings ist es für mich persönlich zurzeit zu komplex um es umzusetzen.

Danke für deine Antwort

Gruß Goschy
Goschy ist offline  
Alt 27.03.2007, 19:27  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Hallo,
dann nimm entweder eine fertige PHP-Klasse, die die Verwaltung der Kategorien für dich übernimmt oder du musst es eben doch mit deiner Verschachtelung lösen.

Übrigens könntest du das ganze dann auch mit einer einzigen SQL-Abfrage lösen, in dem du einfach alle Menüpunkte selektierst und PHP die eigentliche Auswahl übernimmt.
Zergling-new ist offline  
Alt 27.03.2007, 20:02  
Neuer Benutzer
 
Registriert seit: 01.10.2006
Beiträge: 17
Goschy
Standard

Hallo Zergling !

Ich macht mir das aber schwer (warum sollte ich es auch leicht haben *grins*).

Wie muss denn sowas aussehen als Klasse ? (Lese mich gerade durch Joins durch)

Gruß Goschy
Goschy ist offline  
Alt 27.03.2007, 20:20  
Neuer Benutzer
 
Registriert seit: 01.10.2006
Beiträge: 17
Goschy
Standard

Hallo Doc !

Vielen Dank auch für deine Antwort und ich muss sagen das diese für mich wohl die sinnvollste darstellt (frisst meine Variante eiegntlich sehr viel performance ??), allerdings finde ich bisher nur join befehle über 2 Tabellen nicht für eine.

Gruß Goschy
Goschy ist offline  
Alt 27.03.2007, 21:37  
Erfahrener Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 209
pepe24
Standard

Du kannst eine Tabelle auch mit sich selbst "Joinen" (Self-Join).
pepe24 ist offline  
Alt 27.03.2007, 21:47  
Neuer Benutzer
 
Registriert seit: 01.10.2006
Beiträge: 17
Goschy
Standard

Hallo Pepe24 !

Das habe ich bereits rausgefunden allerdings formatiert er mir nicht die Daten so wie er soll.Er soll sie im Prinzip so schreiben:

Hauptkategorie1
Unterkategorie1.1
Unterkategorie1.2
Hauptkategorie2
Unterkategorie2.1

usw und das tut er halt nicht ich verzweifel bald.

Gruß Goschy
Goschy ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Schnittstelle zwischen PHP und MySQL klappt net !!! Datenbanken 16 16.10.2005 14:24
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
mySQL Anfrage über Area-tag aufrufen? PHP Tipps 2005-2 14 02.09.2005 21:42
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MySQL Anfrage wird nicht ausgeführt guenterfrosch PHP Tipps 2005-2 9 07.08.2005 13:02
[Solved] MySQL Anfrage Fehler :: (1064) PHP Tipps 2005-2 3 02.08.2005 09:46
auf Mysql Datenbank Zeichen ersetzen durch andere ??? Tango Beitragsarchiv 1 01.08.2005 01:48
auf Mysql Datenbank Zeichen ersetzen durch andere ??? Tango PHP Tipps 2005-2 0 31.07.2005 20:14
Andere Datenbanken als MySQL PHP Tipps 2005-2 3 15.07.2005 14:05
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33
Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
[Erledigt] mysql SELECT Anfrage PHP Tipps 2004 6 03.09.2004 13:26
[Erledigt] PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a m p; MySQL Datenbanken 5 01.08.2004 05:47
Anfrage an MySQL senden! PHP Tipps 2004 27 06.07.2004 18:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql verschachtelte joins, mysql verschachtelt, php mysql verschachtelt, mysql verschachtelung, mysql joins verschachteln, mysql join verschachteln, mysql verschachtelte where, mysql where verschachtelt, php mysql verschachteln, verschachtelte where mysql, php verschachtelt mysql, mysql left join verschachtelt, mysql verschachtelte join, php mysql verschachtelung, verschachtelte sql abfrage durch joins ersetzen, mysql concat verschachteln, verschachtelte mysql, verschachtelt mysql, mysql geschachtelte joins, mysql verschachtelte on

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.