Hier erstmal der Source:
PHP-Code:
function Gerateliste_Ausgabe ($Service_Typ,$Geraetetyp)
{
echo '<ul>';
$anfrage2="SELECT * FROM Eichler_PG epg INNER JOIN Eichler_Klassen ek ON ek.KlassenID = epg.KlassenID WHERE KlassenName = '".$Geraetetyp."' ORDER by PGName";
$uebergabe2=mysql_query($anfrage2);
while ($zeile2=mysql_fetch_row($uebergabe2)) {
$anfrage3="SELECT * FROM Eichler_Detail ed INNER JOIN Eichler_Option eo ON eo.OptionID = ed.OptionID WHERE PGID = '".$zeile2[0]."'";
$uebergabe3=mysql_query($anfrage3);
while ($zeile4=mysql_fetch_row($uebergabe3)) {
if ($zeile4[11] == $Service_Typ) { // Wenn Kategorie == $Service_Typ dann echo
$i++;
if ($i == 8 || $i == 15 || $i == 22) {
echo '<ul>';
$j = true;
}
echo '[*][url="index.php?mode=Geraeteliste'.'&'.'Service_Typ='.$Service_Typ.'&'.'Geraetetyp='.$Geraetetyp.'&'.'Geraet='.$zeile2[1].'"]'.$zeile2[1].'[/url]
';
break ;
}
}
}
//echo '[/list]</div>';
echo '[/list][/list][/list][/list]';
}
Die verschachtelung der 2 while Schleifen macht dem Datenbankserver sehr zu schaffen, das ganze soll ein Menü generieren (macht es auch) aber es ist furchtbar langsam.
Da kann man bestimmt noch viel optimieren aber da hören meine Kenntnisse auf und ich brauch eure Hilfe.
Also die erste while Schleife holt alle Zeilen aus der Tabelle Eichler_PG die bei der Spalte KlassenName den Wert haben den ich aus einer $_GET Variable einführe.
Wenn so einer gefunden wurde wird das JOIN Eichler_Detail + Eichler_Options durchgerammelt und wenn da dann das Feld Kategorie (hier $zeile[11] dem $Service_Typ (auch $_GET) entspricht kommt die Ausgabe).
Die Tabellen haben folgende Struktur:
Eichler_Detail
Code:
Field Type Collation Attributes Null Default Extra Action
DetailID int(100) No 0 Change Drop Primary Index Unique Fulltext
OptionID int(100) No 0 Change Drop Primary Index Unique Fulltext
PGID int(100) No 0 Change Drop Primary Index Unique Fulltext
Preis DM decimal(100,0) No 0 Change Drop Primary Index Unique Fulltext
Preis EUR decimal(100,0) No 0 Change Drop Primary Index Unique Fulltext
Best-Nr varchar(100) latin1_german1_ci No 0 Change Drop Primary Index Unique Fulltext
Aenderung timestamp Yes 0000-00-00 00:00:00 Change Drop Primary Index Unique Fulltext
Eichler_Klassen
Code:
Field Type Collation Attributes Null Default Extra Action
KlassenID int(255) UNSIGNED No 0 Change Drop Primary Index Unique Fulltext
KlassenName varchar(255) latin1_german1_ci No 0 Change Drop Primary Index Unique Fulltext
Reparatur char(2) latin1_german1_ci No on Change Drop Primary Index Unique Fulltext
Hochrüstung char(2) latin1_german1_ci No Change Drop Primary Index Unique Fulltext
Miete char(2) latin1_german1_ci No Change Drop Primary Index Unique Fulltext
Gebrauchtgerät char(2) latin1_german1_ci No Change Drop Primary Index Unique Fulltext
Ersatzteile char(2) latin1_german1_ci No Change Drop Primary Index Unique Fulltext
Eichler_Option:
Code:
Field Type Collation Attributes Null Default Extra Action
OptionID varchar(100) latin1_german1_ci No Change Drop Primary Index Unique Fulltext
BennenungD longtext latin1_german1_ci No Change Drop Primary Index Unique Fulltext
BenennungE longtext latin1_german1_ci No Change Drop Primary Index Unique Fulltext
Aenderungsdatum timestamp Yes 0000-00-00 00:00:00 Change Drop Primary Index Unique Fulltext
Kategorie text latin1_german1_ci No Change Drop Primary Index Unique Fulltext
Eichler_PG
Code:
Field Type Collation Attributes Null Default Extra Action
PGID int(255) No 0 Change Drop Primary Index Unique Fulltext
PGName varchar(255) latin1_german1_ci No 0 Change Drop Primary Index Unique Fulltext
KlassenID int(255) No 0 Change Drop Primary Index Unique Fulltext
Ich hoffe jemand hat Lust und Zeit mir zu helfen.
Lg
Uhu