while datenausgabe verknüpfungen zählen
ANDREA
- php
Ich gebe Daten aus der DB für ein Hauptmenü aus und wenn vorhanden dazu passend die Daten für das Submenü
Hauptmenü
Hauptmenü
SubMenü
SubMenü
SubMenü
SubMenü
Hauptmenü
//Dies ist nur ein Schema kein folständiges Skript
$hauptmenu = sqlQuery"Select...
while($item=mysql_fetch_array($hauptmenu)) {
echo "hier die Ausgabe für Hauptmenü";
$submenu = sqlQuery"Select... Where hauptmenuid = subhauptmenuid
while($subitem=mysql_fetch_array($submenu)) {
echo "wenn vorhanden hier die Ausgabe vom Submenü
passenden zum Hauptmenü";
}
}
Wie kann ich feststellen,
wieviel Hauptmenüpunkte sind vor dem Submenü
wieviel Hauptmenüpunkte sind nach dem Submenü
nach wieviel Hauptmenüpunkte kommt ein Submenü
Danke
Hi,
Wie kann ich feststellen,
wieviel Hauptmenüpunkte sind vor dem Submenü
wieviel Hauptmenüpunkte sind nach dem Submenü
Erst mal feststellen, wie viele Hauptmenuepunkte es gibt - mysql_num_rows($hauptmenu).
In aeusserer while-Schleife dann einfach einen Zaehler mitlaufen lassen - damit hast du die Hauptmenuepunkte vor den aktuellen Submenues, und ueber die Differenz, wie viele danach noch kommen.
nach wieviel Hauptmenüpunkte kommt ein Submenü
Das ist doch das gleiche wie Punkt 1?
MfG ChrisB
Hi,
Vom Prinzip jetzt klar, aber wenn ich doch einen Zähler mitlaufen lasse dann weiß ich doch nocht wann das Submenü anfängt oder?
Ich möchte dann den wissen wann bei welcher zahl das Submenü anfängt
Danke
Hi,
Wie kann ich feststellen,
wieviel Hauptmenüpunkte sind vor dem Submenü
wieviel Hauptmenüpunkte sind nach dem SubmenüErst mal feststellen, wie viele Hauptmenuepunkte es gibt - mysql_num_rows($hauptmenu).
In aeusserer while-Schleife dann einfach einen Zaehler mitlaufen lassen - damit hast du die Hauptmenuepunkte vor den aktuellen Submenues, und ueber die Differenz, wie viele danach noch kommen.nach wieviel Hauptmenüpunkte kommt ein Submenü
Das ist doch das gleiche wie Punkt 1?
MfG ChrisB
Hi,
wow, die Geschlechtsumwandlung ging ja fix.
Vom Prinzip jetzt klar, aber wenn ich doch einen Zähler mitlaufen lasse dann weiß ich doch nocht wann das Submenü anfängt oder?
Wieso nicht?
In deiner inneren Schleife gibst du doch ausschliesslich die Submenuepunkte zum aktuellen Hauptmenuepunkt aus - oder?
Vielleicht musst du die Frage auch noch mal klarer formulieren.
Ich möchte dann den wissen wann bei welcher zahl das Submenü anfängt
Korrekte Grammatik koennte dein Problem fuer Aussenstehende evtl. auch nachvollziehbarer machen.
Und bitte zitiere vernuenftig, das worauf du dich beziehst, und nicht alles.
MfG ChrisB
Hi,
schreib zu schnell, ok, probieren wir es noch einmal.
Habe 10 Hauptmenüpunkte
zu den 10 Hauptmenüpunkten habe ich verschiedene Unterpunke (für das Submenü)
So wenn ich jetzt die Hauptmenüpunkte alleine ausgebe erhalte ich 10 Stück.
Wenn ich zu den Hauptmenüpunkten noch die Unterpunkte ausgeben lasse, habe ich 10 Hauptmenüpunkte und je nach Wahl eines Hauptmenüpunktes erhalte ich die Unterpunkte zu dem Hauptpunkt.
Wenn ich ein Hauptmenüpunkt ausgewählt habe erhalte ich hier zu die passenden Unterpunke
hauptmenü
*hauptmenü* // welche Position hat dieser...
Unterpunkt
Unterpunkt
Unterpunkt
hauptmenü
Wann weiß ich, das es der zweite Menüpunkt ist der ein Submenü anzeigt?
Klar wenn ich weiß das es der zweite ist dann kommen nach dem Untermenü noch 8 weitere Hauptmenüs.
Hi,
wow, die Geschlechtsumwandlung ging ja fix.
Vom Prinzip jetzt klar, aber wenn ich doch einen Zähler mitlaufen lasse dann weiß ich doch nocht wann das Submenü anfängt oder?
Wieso nicht?
In deiner inneren Schleife gibst du doch ausschliesslich die Submenuepunkte zum aktuellen Hauptmenuepunkt aus - oder?Vielleicht musst du die Frage auch noch mal klarer formulieren.
Ich möchte dann den wissen wann bei welcher zahl das Submenü anfängt
Korrekte Grammatik koennte dein Problem fuer Aussenstehende evtl. auch nachvollziehbarer machen.
Und bitte zitiere vernuenftig, das worauf du dich beziehst, und nicht alles.
MfG ChrisB
Hi,
schreib zu schnell, ok, probieren wir es noch einmal.
Wenn du dann das mit dem sinnvollen Zitieren bitte auch noch beruecksichtigen koenntest ... http://de.wikipedia.org/wiki/TOFU
Wenn ich zu den Hauptmenüpunkten noch die Unterpunkte ausgeben lasse, habe ich 10 Hauptmenüpunkte und je nach Wahl eines Hauptmenüpunktes erhalte ich die Unterpunkte zu dem Hauptpunkt.
Also muss es ja irgendetwas geben, was den aktuell gewaehlten Hauptpunkt identifizierbar macht. Das waere ...?
(Wozu willst du dann eigentlich ueberhaupt noch mitzaehlen?)
Wann weiß ich, das es der zweite Menüpunkt ist der ein Submenü anzeigt?
Wenn du, wie gesagt, in der aeusseren Schleife einen Zaehler mitlaufen laesst, und dir dann an den Punkt, wo du feststellst, "hey, das is' ja der, dessen Untermenuepunkte ich jetzt ausgeben will", diesen Zaehlerstand merkst.
MfG ChrisB
Hi,
ich soll bei einem Klick auf einem Hauptmenüpunkt Diesen über CSS hervorheben und aber gleichzeit den nächsten Hauptmenüpunkt auch verändern.
Bei einem Mouseclick auf einen Menüpunkt das dieser sich verändert ist kein Problem, aber der nächtse kommt eventuell erst nach den Untermenüpunkten.
Deswegen hatte ich die Idee die Hauptmenüpunkte zählen zu lassen.
Wenn dann auf einem Hauptmenüpunkt geklickt wird, zählt da Skript eins dazu und schon kann ich den nächsten Menüpunkt verändern.
Aber nur wenn Untermenüpunkte vorhanden sind was ich ja abfragen kann.
#Wenn du, wie gesagt, in der aeusseren Schleife einen Zaehler mitlaufen laesst, und dir dann an den Punkt, wo du feststellst, "hey, das is' ja der, dessen Untermenuepunkte ich jetzt ausgeben will", diesen Zaehlerstand merkst.
Am Bildschirm sehe ich das aber woher weiß ich es im Script
$I=0;
while xxx {
i++;
}
wenn ich wüßte der zweite wäre es könnte ich ja Abfragen if($i == 2)
Hello,
Wenn dann auf einem Hauptmenüpunkt geklickt wird, zählt da Skript eins dazu und schon kann ich den nächsten Menüpunkt verändern.
Trenne, nicht nur in Gedanken, sondern auch im Script, Datenbeschaffung, Datenverarbeitung (icl. Vorbereitung für die Ausgabe) und die reine Ausgabe voneinander.
Du bekommst einen Request. Dieser enthält eine Anforderung, einen bestimmten Menupunkt anzuzeigen. Das kann über einen URL-Paramter erfolgen (empfohlen) oder auch über eine Postparamter, wenn Du Submit-Buttons oder sonstige Auswahlverfahren bevorzugst.
Dein Script isoliert diesen Parameter und erkennt, dass es zu ihm passend eine Antwort formulieren kann und darf.
Parallel zur eigentlichen Beantwortung der Frage (Response zum Request) möchtest Du dem User noch weitere Information, nämlich das Menu, zur verfügung stellen.
Du Lädst daher aus der Datenbank den Menubaum in Dein Array im Script oder auch in zwei, nämlich Hauptmenu und nächste Ebene (Untermenu) des angeforderten Punktes.
Nun lässt Du Dir Deine Ausgabevariable "$menu" generieren. Dafür verwendest Du sicher das <ul>-Element mit einer eigenen Klasse oder innerhalb eines "Containers" mit einer eigenen Klasse.
Beim Abarbeiten des Arrays, das ja eine Übermenge der angeforderten Daten enthält, vergleichst Du immer, ob der eigentlich angeforderte Menupunkt schon an der Reihe ist.
$out['menu'] = '';
$out['menu'] .= "<!-- -begin menu- -->\n";
$out['menu'] .= " <div> <ul>\n";
$out['menu'] .= " <ul>\n";
foreach($_hauptmenu as $hid => $hmenutext)
{
$aktiv = '';
if ($hid == $requested_site)
{
$link = $_SERVER['SCRIPT_NAME'].'?page=$hid';
$out['menu'] .= " <li class="hauptmenu aktiv">"
."<a href="$link">"
. htmlspecialchars($hmenutext) . "</li>\n";
$out['menu'] .= make_submenu($hid);
}
else
{
$out['menu'] .= " <li class="hauptmenu">"
."<a href="$link">"
. htmlspecialchars($hmenutext) . "</li>\n";
}
}
$out['menu'] .= " </ul>\n";
$out['menu'] .= " </div>\n";
$out['menu'] .= "<!-- -end menu- -->\n";
So ungefähr könnte das doch aussehen.
Du kannst nun auch eine Funktion daraus machen.
Mehr als zwei "offene" Menuebenen anzuzeigen, halet ich für normale Navigationen sowieso nicht für sinnvoll.
Allerdings musst Du über dem aktuellen "Hauptmenu", das ja ggf. auch schon selber eine tiefere Ebene sein kann, auch den Rückweg in die nächst höhere Ebene anbieten, wenn Du eben mehr als zwei Ebenen zulassen willst. Aber das solltest Du nun hinbekommen.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Vielen herzlichen Dank für die Ausführliche Hilfe.
Werde mich gleich mal an das Umsetzen machen
:-)
Andreas
Hello,
Wenn dann auf einem Hauptmenüpunkt geklickt wird, zählt da Skript eins dazu und schon kann ich den nächsten Menüpunkt verändern.
Trenne, nicht nur in Gedanken, sondern auch im Script, Datenbeschaffung, Datenverarbeitung (icl. Vorbereitung für die Ausgabe) und die reine Ausgabe voneinander.
Du bekommst einen Request. Dieser enthält eine Anforderung, einen bestimmten Menupunkt anzuzeigen. Das kann über einen URL-Paramter erfolgen (empfohlen) oder auch über eine Postparamter, wenn Du Submit-Buttons oder sonstige Auswahlverfahren bevorzugst.
Dein Script isoliert diesen Parameter und erkennt, dass es zu ihm passend eine Antwort formulieren kann und darf.
Parallel zur eigentlichen Beantwortung der Frage (Response zum Request) möchtest Du dem User noch weitere Information, nämlich das Menu, zur verfügung stellen.
Du Lädst daher aus der Datenbank den Menubaum in Dein Array im Script oder auch in zwei, nämlich Hauptmenu und nächste Ebene (Untermenu) des angeforderten Punktes.
Nun lässt Du Dir Deine Ausgabevariable "$menu" generieren. Dafür verwendest Du sicher das <ul>-Element mit einer eigenen Klasse oder innerhalb eines "Containers" mit einer eigenen Klasse.
Beim Abarbeiten des Arrays, das ja eine Übermenge der angeforderten Daten enthält, vergleichst Du immer, ob der eigentlich angeforderte Menupunkt schon an der Reihe ist.
$out['menu'] = '';
$out['menu'] .= "<!-- -begin menu- -->\n";
$out['menu'] .= " <div> <ul>\n";
$out['menu'] .= " <ul>\n";foreach($_hauptmenu as $hid => $hmenutext)
{
$aktiv = '';
if ($hid == $requested_site)
{
$link = $_SERVER['SCRIPT_NAME'].'?page=$hid';$out['menu'] .= " <li class="hauptmenu aktiv">"
."<a href="$link">"
. htmlspecialchars($hmenutext) . "</li>\n";
$out['menu'] .= make_submenu($hid);
}
else
{
$out['menu'] .= " <li class="hauptmenu">"
."<a href="$link">"
. htmlspecialchars($hmenutext) . "</li>\n";
}
}$out['menu'] .= " </ul>\n";
$out['menu'] .= " </div>\n";
$out['menu'] .= "<!-- -end menu- -->\n";So ungefähr könnte das doch aussehen.
Du kannst nun auch eine Funktion daraus machen.
Mehr als zwei "offene" Menuebenen anzuzeigen, halet ich für normale Navigationen sowieso nicht für sinnvoll.Allerdings musst Du über dem aktuellen "Hauptmenu", das ja ggf. auch schon selber eine tiefere Ebene sein kann, auch den Rückweg in die nächst höhere Ebene anbieten, wenn Du eben mehr als zwei Ebenen zulassen willst. Aber das solltest Du nun hinbekommen.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.deTom