Hi Leute!
also ich habe folgendes Problem und ich hoffe ihr könnt mir helfen:
Also ich habe eine Tabelle mit z.B. Technologien. Jede Technologie baut auf eine vorhergehende auf, bzw. ist in der Ebene 0 (Also eine Technologie, die keine Vorgänger hat).
Also eine Technologie beinhaltet weitere Technologien, von welchem einige vl. wieder ein Paar untergeordnete Technologien enthalten..
Dies sieht dann in etwa so aus:
Physik
-->Relativitätstheorie
-->-->Beschleunigung
-->Teilchenphysik
usw.
Dazu habe ich 3 Felder angegeben:
t_ID (ID Der Technologie)
t_Parent_ID (ID der Technologie, in welche die aktuelle hineinkommt)
t_Ebene (Die Ebene der Technologie (wird später automatisch (nicht manuell) berechnet und erstellt))
Diese Technologien werden als Blöcke dargestellt (div Elemente).
Dazu habe ich folgende Funktion geschrieben:
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
Was hat es mit dem Blockwechsel auf sich? Nichts. Der dient nur dazu das <div> Attribut ID zu regeln, um die Blockdarstellung für jede Unterebene zu wechseln Also dass einmal <div id=Block1> und oder id=Block2 dasteht, damit CSS richtig formatiert. Dies Funktioniert einwandfrei und man kann sich diese Funkton wegdenken..
Jetzt endlich meine Frage:
Beim aufruf dieser Funktion wird mir
1. nur der 1. Grundblock (Ebene 0) dargestellt, nicht alle Grundtechnologien und
2. sollte ein Datensatz gefunden werden, der ein Kind von einem anderen ist (Eltern_ID == Kind_Parent_ID) dann wird nicht der entsprechende Datensatz angezeigt sondern irgendeiner, bei dem die Ebene stimmt. Da nimmt er dann irgendeine ID her..
Wäre super wenn ihr mir mit diesem Problem helfen könntet.. ich progge erst seit 2 wochen php und bin noch ziemlicher noob..
mfg, alex
also ich habe folgendes Problem und ich hoffe ihr könnt mir helfen:
Also ich habe eine Tabelle mit z.B. Technologien. Jede Technologie baut auf eine vorhergehende auf, bzw. ist in der Ebene 0 (Also eine Technologie, die keine Vorgänger hat).
Also eine Technologie beinhaltet weitere Technologien, von welchem einige vl. wieder ein Paar untergeordnete Technologien enthalten..
Dies sieht dann in etwa so aus:
Physik
-->Relativitätstheorie
-->-->Beschleunigung
-->Teilchenphysik
usw.
Dazu habe ich 3 Felder angegeben:
t_ID (ID Der Technologie)
t_Parent_ID (ID der Technologie, in welche die aktuelle hineinkommt)
t_Ebene (Die Ebene der Technologie (wird später automatisch (nicht manuell) berechnet und erstellt))
Diese Technologien werden als Blöcke dargestellt (div Elemente).
Dazu habe ich folgende Funktion geschrieben:
----------------------------------------------------------------------------------
PHP-Code:
//Für die Auswertung der Techtreeblöcke
$Q_Block = "SELECT t_Ebene, t_Name, t_Beschreibung, t_Max_Level, t_ID, t_Parent_ID
FROM tech
ORDER BY t_Parent_ID ASC, t_ID ASC"; //t_Ebene ASC,
//Startvariablen
$Block_Nr = 2; //Start Block ID
$Ebene = 0; //Startebene
//Funktion Block erzeugen
function block_erzeugen ($Ebene, $Q_Block, $Block_Nr){
$Block_Nr = block_wechsel($Block_Nr); //Wechselt die Block - ID
$A_Block = mysql_query($Q_Block) OR die(mysql_error()); //Array erzeugen (immer gleich)
if(mysql_num_rows($A_Block)){ //prüfen ob Datensätze vorhanden sind
while($R_Block = mysql_fetch_assoc($A_Block)) { //Bei jedem Schleifendurchlauf wird ein Array
//mit den Elementen des aktuellen Datensatzes gefüllt.
if($Ebene == $R_Block['t_Ebene']){
echo "\n <div id=\"t_box".$Block_Nr."\">\n";
echo " <div id=\"t_Name\">" .$R_Block['t_Name'] ."</div>\n";
echo " <div id=\"t_Beschreibung\">".$R_Block['t_Beschreibung']."</div>\n";
echo " <div id=\"t_Beschreibung\">".$R_Block['t_ID']."</div>\n";
$ID = $R_Block['t_ID'];
while($R_Block_Hilf = mysql_fetch_assoc($A_Block)) {
if(($Ebene + 1 == $R_Block_Hilf['t_Ebene']) AND ($ID == $R_Block_Hilf['t_Parent_ID'])){
$Ebene_Hilf = $Ebene + 1;
block_erzeugen($Ebene_Hilf, $Q_Block, $Block_Nr); //Block mit nächsthöherer Ebene erzeugen
}
}
echo "</div>\n";
}
}
}else{
echo "<p>Konnte Techtree nicht anzeigen. Es wurden keine Technologien gefunden..</p>";
}
}
//Funktion um die Block ID für jede Ebene zu Wechseln
function block_wechsel ($Nr) {
if ($Nr == 1){$Nr = 2;}
elseif ($Nr == 2){$Nr = 1;}
return $Nr;
}
block_erzeugen($Ebene, $Q_Block, $Block_Nr);
Was hat es mit dem Blockwechsel auf sich? Nichts. Der dient nur dazu das <div> Attribut ID zu regeln, um die Blockdarstellung für jede Unterebene zu wechseln Also dass einmal <div id=Block1> und oder id=Block2 dasteht, damit CSS richtig formatiert. Dies Funktioniert einwandfrei und man kann sich diese Funkton wegdenken..
Jetzt endlich meine Frage:
Beim aufruf dieser Funktion wird mir
1. nur der 1. Grundblock (Ebene 0) dargestellt, nicht alle Grundtechnologien und
2. sollte ein Datensatz gefunden werden, der ein Kind von einem anderen ist (Eltern_ID == Kind_Parent_ID) dann wird nicht der entsprechende Datensatz angezeigt sondern irgendeiner, bei dem die Ebene stimmt. Da nimmt er dann irgendeine ID her..
Wäre super wenn ihr mir mit diesem Problem helfen könntet.. ich progge erst seit 2 wochen php und bin noch ziemlicher noob..
mfg, alex
Kommentar