Data Tree FindSpecificChild mehrdeutig
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
baum
bedeutung
button
code
datenbank
eindeutige referenz
einheit
funktion
gefundene knoten
gefundene objekt
input
knoten
kontext
mehrfach vorkommen
modul
parameter
pfad
problem
suchbegriff
vorkommen
-
Hallo liebe Leute,
ich habe eine Baumstruktur geschrieben, bei der die Kindknoten über ihre spezifische ID gesucht werden können. Der Baum besteht somit aus einer Tabelle die mit Buttons gefüllt ist. Ein Button sieht wie folgt aus:
echo '<input type = "submit" name = "leafID" value ="', $this->id, '" STYLE= "width: 100%" >';
Über den Namen wird erkannt, dass ein Knoten im Baum gedrückt wurde und die ID übermittelt die ID. Das Problem hierbei ist, dass die Suchfunktion das jeweils erste gefundene Objekt mit der gesuchten ID zurückliefert und spätere Elemente nicht beachtet. Eine Übermittlung aller Elternknoten wäre eine eindeutige Referenz, leider weiß ich nicht, wie ich das mit den gegebenen Mitteln bewerkstelligen könnte. Eine Übermittlung per value würde zu falschen Namen, die Änderung von name, dass die Werte nicht abgefangen würden ( da z.B. $_REQUEST['nodeID']) nicht möglich wäre)).
Ich hoffe hierbei auf gute Hilfe ^^ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich weiß jetzt nicht, ob ich das richtig verstanden habe , daher meine Fragen, um festzustellen, was du jetzt genau meinst:
pantherstyle schrieb:
Du möchtest trotz gefunden Kindknoten noch alle nachfolgenden Knoten durchsuchen? Erscheint mir unlogisch und nicht sinnvoll. Daher ist das wohl eher nicht deine Frage.
Das Problem hierbei ist, dass die Suchfunktion das jeweils erste gefundene Objekt mit der gesuchten ID zurückliefert und spätere Elemente nicht beachtet.
pantherstyle schrieb:
Du möchtest alle Elternknoten des gefundenen Kindknotens zurückgeben? Ich vermute eher, das ist deine Fragestellung. Richtig?
Eine Übermittlung aller Elternknoten wäre eine eindeutige Referenz, leider weiß ich nicht, wie ich das mit den gegebenen Mitteln bewerkstelligen könnte.
Beitrag zuletzt geändert: 4.4.2011 10:50:26 von wagnerm -
Der erste gefundene Knoten ist nicht zwangsläufig der richtige Knoten, da eine einzelne ID mehrfach vorkommen kann. Dummerweise kann die ID = "Datenbank" beliebig oft vorkommen, so dass mir das Script den ersten Fund liefert z.B. Components/Datenbank, statt Module/Einheiten/Datenbank, was der User eigentlich angeklickt hat, aber erst als 2. oder 3. im Baum stünde.
Mit der eindeutigen Referenz, will ich erreichen, dass der Bezeichner eindeutig ist, also statt "Datenbank" als Suchbegriff, würde ich dessen Elternknoten wie in "Module/Einheiten/Datenbank" als Suchstring mitgeben. Wenn ich dies aber über den value Parameter des input buttons machen würde, würde dieser aber auch dem User mit dieser Bezeichnung angezeigt...
Ich hoffe ich konnte es näher beleuchten. -
pantherstyle schrieb:
Ich würde mir grundsätzlich die Logik hier nocheinmal überlegen. Eine ID, die mehrfach auftreten kann, spricht gegen dessen Bedeutung in der Datenverarbeitung.
Der erste gefundene Knoten ist nicht zwangsläufig der richtige Knoten, da eine einzelne ID mehrfach vorkommen kann. Dummerweise kann die ID = "Datenbank" beliebig oft vorkommen, so dass mir das Script den ersten Fund liefert z.B. Components/Datenbank, statt Module/Einheiten/Datenbank, was der User eigentlich angeklickt hat, aber erst als 2. oder 3. im Baum stünde.
pantherstyle schrieb:
Wäre eventuell ein Hidden Field mit dem Suchstring als Value zusätzlich zum Button hilfreich?
Mit der eindeutigen Referenz, will ich erreichen, dass der Bezeichner eindeutig ist, also statt "Datenbank" als Suchbegriff, würde ich dessen Elternknoten wie in "Module/Einheiten/Datenbank" als Suchstring mitgeben. Wenn ich dies aber über den value Parameter des input buttons machen würde, würde dieser aber auch dem User mit dieser Bezeichnung angezeigt...
-
Eine ID, die mehrfach auftreten kann, spricht gegen dessen Bedeutung in der Datenverarbeitung
Keine Sorge, dessen bin ich mir bewusst, deshalb ist jede ID im Kontext mit ihren parents ein-eindeutig und kann somit nur einmal vorkommen. Der bezeichner selbst ohne den Kontext kann mehrfach vorkommen.
ein Hidden Field mit dem Suchstring als Value
Das klingt nach einer interessanten Alternative, doch leider verwehrt mir Mr.Google seine sonst so treue Hilfe. Aus dem was ich so gelesen habe wäre fogendes möglich?
value des buttons "nodeID" als bezeichner des namens für das hidden field, in dessen value der vollständige treePath stünde? -
echo '<input type = "hidden" name = "leafIDPath" value ="', $this->treePath, '" STYLE= "width: 100%" >'; echo '<input type = "submit" name = "leafID" value ="', $this->id, '" STYLE= "width: 100%" >';
Der Button hat den Wert der Variable $this->id als Value und das Hidden Field beinhaltet den vollständigen Pfad zu diesen entsprechenden Knotens mit dem Wert der Variable $this->id. Damit kannst du nach dem Übertragen des Forms den Pfad über "leafIDPath" abrufen.
Beitrag zuletzt geändert: 4.4.2011 11:32:56 von wagnerm -
Cool, dass das so einfach ist wie ich es mir vorgestellt habe, allerdings fällt mir auf, dass das Referenzproblem immer noch vorhanden ist, da ich dem leafIDPath ja nur die ID des Knotens mitgeben kann, welche ja nicht eindeutig ist... Kann ich die auf eine andere Weise direkt miteinander verbinden?
-
Also ich glaube irgendwie habe ich dein Problem immer noch nicht so richtig verstanden...
Ich dachte, die Referenz sei der Pfad über alle Elternknoten bis zum aktuellen Kindsknoten. Du hast also beide Werte, also den Pfad und die ID des Kindknotens, nach der Übermittlung des Formulars zur Verfügung. Und mit beiden Werten kannst du die Eindeutigkeit feststellen. Was brauchst du also noch? -
Nein das wäre das gewünschte Ergebnis, dass ich den korrekten Pfad samt childID vorliegen habe. Momentan beschränkt sich das lediglich auf den Namen des ausgewählten Knotens ohne dessen korrekten Pfad.
-
Du hast zB folgendes Formular:
Dann hast du also beide gewünschte Variablen zur Verfügung. Nach Übertragung der Formulardaten, kannst du die Werte wie folgt auslesen:echo '<form action="" method="post">'; echo '<input type = "hidden" name = "leafIDPath" value ="'. $this->treePath .'" STYLE= "width: 100%" >'; echo '<input type = "hidden" name = "leafID" value ="'. $this->id .'" STYLE= "width: 100%" >'; echo '<input type = "submit" name = "Send" value ="Senden" STYLE= "width: 100%" >'; echo '</form>';
$nodePath = $_REQUEST['leafIDPath']; $nodeID = $_REQUEST['leafID'];
Beitrag zuletzt geändert: 4.4.2011 14:37:10 von wagnerm -
Hallo und vielen Dank für die Mühe,
ich habe es jetzt per Link gelöst, wobei ich lieber das ButtonDesign weiter verwendet hätte. Gibt es da eine einfache Möglichkeit dieses weiter zu verwenden? -
Wie jetzt mit Link gelöst? Wenn das mit einem Link funktioniert, dann sollte das auch mit den Button funktioniert...
Übergibst du jetzt die Parameter per GET? Wie schaut jetzt dein Link aus? Lass mal sehen! -
Wie nachlässig von mir. Normalerweise gehört die Lösung natürlich auch dazu:
echo '<nobr><a href="index.php?klasse='.$this->parent->parent->id.'&modul='.$this->parent->id.'&funktion='.$this->id.'">'.$this->id.'</a></nobr>';
Die Parameter werden wie erraten durch GET abgefragt. Bei einem Button hätte es für mich nur über value funktioniert, aber das wäre dem Nutzer angezeigt worden...
Button Aufschrift: "Datenbank.Verarbeitung.exportiere"
Link aufschrift:"exportiere"
Wobei beide sämtliche Werte übertragen hätten, nur dass es mit dem Button von dem was der User angezeigt bekam nicht geklappt hätte. -
Das
undecho '<form action="index.php" method="post">'; echo '<input type = "hidden" name = "klasse" value ="'. $this->parent->parent->id .'" STYLE= "width: 100%" >'; echo '<input type = "hidden" name = "modul" value ="'. $this->parent->id .'" STYLE= "width: 100%" >'; echo '<input type = "hidden" name = "funktion" value ="'. $this->id .'" STYLE= "width: 100%" >'; echo '<input type = "submit" name = "Send" value ="'. $this->id .'" STYLE= "width: 100%" >'; echo '</form>';
sollten doch das gleiche Ergebnis liefern...$klasse = $_REQUEST['klasse']; $modul = $_REQUEST['modul']; $funktion = $_REQUEST['funktion'];
Beitrag zuletzt geändert: 6.4.2011 12:50:46 von wagnerm -
Hi,
ich bin jetzt auch mal dazu gekommen diese Variante zu testen und kann dankend sagen, dass sie auch funktioniert. Da ich allerdings bereits Alles auf Links umgestellt habe würde ich gerne dabei bleiben und dir für deine Mühe danken, die mich an anderer Stelle weitergebracht hat^^ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage