Menü mittels Datenbank das sich aufgrund von bestimmten Kombinationen ändert

lingit

Grünschnabel
Hi,

also, eigentliches Ziel ist es, eine Art Navigation für eine Datenbank mithilfe mehrer Auswahllisten und eben einer Datenbank herzustellen. Dabei soll man in der ersten Liste auswählen können wonach man sucht, also nach Experimenten, Mechanismen, Autoren oder Chemikalien, hat man dann etwa Chemaklien ausgesucht, sollen in der zweiten Auswahlliste alle in der Datenbank vorhanden Chemikaliem angezeigt werden, dann nach Auswahl der gesuchten Chemikalien alle vorhanden Experimente, die mit dieser Chemikalie durchgeführt wurden und so weiter...

ich weiß, so ähnliche Fragen wurden schon häufig gestellt, hab auch eine ganze Weile bei google bzw. hier auf der Seite gesucht, aber jetzt bin ich vor allem sehr verwirrt und verunsichert..:confused:


Mittlerweile bin ich soweit vom Verständnis, dass ich weiß, dass php schon vor Aufruf der Seite ausgeführt wurde, also ich damit meine anderen Listen nich ändern kann aber dafür einfach auf die Datenbank zugreifen könnte und das ich mit javascript wunderbar einfach die Listen ändern kann ohne dass die Seite neu geladen werden muss, ich jedoch nícht auf die Datenbank zugreifen kann...

soo, hier nun meine bisherigen "Ideen"
eigentlich hatte ich mir überlegt, dass ich mir ne Funktion mit javascript bastle, die auf die Änderung in der Liste reagiert und dann selber ne php-Funktion aufruft, die die Datenbank-Abfrage realisiert und meine neuen Werte für die nächste Liste als Array zurückliefert... aber irgendwie...

bzw. über sessions - hab irgendwo gelesen das, das ne Möglichkeit ist, wie die beiden Sprachen Werte austauschen können... aber selbst wenn, wie ruf ich denn dann die php-Funktion auf

oder aber über eine php-Funktion, die mittels isset nur dann ausgeführt wird, wenn auch was aus der Liste ausgewählt wurde, aber wie verändere ich denn dann meine andere Liste...

Bin wirklich verwirrt und weiß jetzt nich wirklich weiter...

Darum würd ich von euch ganz gern wissen, in welche Richtung ich mich weiter informiern sollte...

Schon jetzt vielen Dank für eure Antworten,
ihr würdet mir wirklich sehr helfen

lingit
 
Also:
PHP - Serverseitig
JS - Clientseitig

Einzige Kommunikationsmöglichkeiten:
Seite Laden und JS rausschreiben:
-- > z.B.: echo "alert('test');";

Oder mit etwas das sich Ajax (Asynchronous Javascript And XML) nennt - dabei kannst du mit JS eine Seite aufrufen, die gibt Daten aus und das JS liefert dir das als Datensatz zurück... dazu ganz hilfreich ist eine Bibliothek, die dir die Arbeit abnimmt:
http://www.prototypejs.org/

Dein Datenbankkonstrukt würde ich übrigens mit einem Baum realisieren.
DB-Felder:
id, id_parent, text, link

Dann kannst du jedem Menüeintrag einen "Parent" zuweisen und somit eine Hierachie aufbauen... Beispiel:

id1 : test1
id2 : test2
id2.parent = id1

dann ist test2 ein Unterpunkt von test1 und du müsstest nur immer die id_parent mit an das JS übergeben, die dir dann alle Einträge dieses Astes rausfischt ...
 
hi,

also erstmal danke für die antwort,

also das mit ajax ist mir bei der suche desöfteren über den weg gelaufen, ich hatte nur gehofft, das ich da irgendwie drumrumkomme..

und was meinst du mit Seite laden und JS rausschreiben?

und das mit dem Baum geht so glaube nich, in der Datenbank sollen an sich die Daten für verschiedene Experiement mit verschiedenen Chemikalien gespeichert werden, da jedes Experiement ja mit verschiedenen Chemikalien bzw. mit einer C. verschiedene Experimente durchgeführt werden können, ergibt sich keine wirkliche Baumstruktur, oder? Zumal man ja auch je nach belieben entweder mit dem einen beginne könne soll zu suchen oder mit dem andern, sprich die Ausgangspunkte sollen vom Benutzer wählbar sein...

bin immernoch verwirrt :(
 
Nach deiner Beschreibung ich auch :-D ... Aber wenne mir mal n paar Beispiele zuschickst, dann überleg ich mir dir nen Aufbau danach vorzuschlagen ...

Wie das mit dem JS rausschreiben geht hab ich schon oben beschrieben - indem du mit PHP-echo JS Befehle in den Code schreibst ... Die Alternative ist es halt den benötigten Code nachzuladen ohne die ganze Seite nochmal abzuschicken - das wäre dann Ajax.
 
Dabei hatte ich mir doch solch eine Mühe bei der Beschreibung gegeben :)

Also meine Datenbank sieht bisher so aus:
Tabellen:
- Experimente mit exp_name und exp_id
- Brennstoffe mit stoff_name und stoff_id
- Kombinationen mit comb_id, exp_id und stoff_id
- Experiment-Daten mit id, comb_id und den jeweilligen Parametern also Druck,
Temperatur und so und den Speicherort der Daten
- Mechanismen mit id, comb_id und zusätzlichen Parametern
- und dann fehlt mir noch eine Tabelle mit den Autoren, aber da weiß ich noch nicht
wirklich wie ich das mache, da verschiedene Autoren an einem Experiment arbeiten..

Dem Benutzer der Website soll dann angeboten werden wonach er suchen kann, also nach Experimenten, Brennstoffen, Mechanismen und Autoren. Danach wird angezeigt was vorhanden ist, also etwa welche Brennstoffe. Dann kommt eine Auswahl ähnlich der ersten, nur das jetzt das zuvor ausgewählte fehlt, das heißt er kann sich wieder für Exp., Mechanismen und Autoren entscheiden aber nicht für Brennstoffe. Danach werden dann alle Kombinationen für die bisher getroffene Wahl angezeigt. Hat er sich also Beispielsweise für die Experimente entschieden, werden also alle Experimente angezeigt, die mit dem ausgewählten Brennstoff durchgeführt wurden. Und so weiter. Wenn dann die Daten angezeigt werden, soll das Fenster mit der Navigation noch offen bleiben, so dass man die Auswahl dann nochmal verändern kann..
So, ich hoffe das war ein wenig eindeutiger.. , vielleicht versteh ich die Sache mit dem Baum ja nur nicht richtig... fange erst an mit php und javascript

bisher hab ich noch nich so viel, da ich nich so richtig weiß, wie ich an die ganze Sache rangehen soll..

also bisher hab ich meine Listen, in den die Auswahl getroffen werden soll, wobei da ja noch noch soviel drin steht:

HTML:
<form name="Testform" action="">

 <table border="0">
   <tr>
<select name="Auswahl1"
onchange="search(this.form.Auswahl1.options[this.form.Auswahl1.options.selectedIndex].value)">

<option value="nothing">What are you looking for?</option>
<option value="nothing"></option>

<option value="auth">Authors</option>
<option value="exp">Experiments</option>
<option value="fuels">Fuels</option>
<option value="mech">Mechanisms</option>
</select>
</tr>

<tr>
         <select name="Auswahl2" size="1" onchange="search()">
         <option value="nothing">------------</option>
         </select>
    
 </tr>
 </table>
 <fieldset>
 <table borders="0">
 <tr>
<select name="Auswahl3" size="1" onchange="search()">
<option value="nothing">------------</option>
</select>
</tr>

und dann die javascript Funktion search(), wobei auch da ja noch nicht so viel steht, weil ich erstmal kucken wollte, wie das generell so geht und ob er überhaupt so irgendwie das macht was ich will:

HTML:
function search(x) {

echo "if (x=="auth")

     for(var i=document.Testform.Auswahl2.options.length; 0<=i; i--)

        {
          document.Testform.Auswahl2.options[i]=null;

         }";

so, und dann setzte meine Verwirrtheit ein.

wo würde ich denn über echo JS in den Code schreiben?
 
Brauche wirklich nachwievor Hilfe und weiß leider immer noch nicht weiter.
Würde mich also unheimlich freuen, wenn sich irgendwer meiner Annehmen könnte :)
 
Zurück